Wifi only preference

This commit is contained in:
Sylvain Berfini 2012-05-02 11:13:28 +02:00
parent f7d7660662
commit 367ff82a6e
5 changed files with 25 additions and 3 deletions

View file

@ -41,6 +41,8 @@
<string name="pref_debug_key">pref_debug_key</string>
<string name="first_launch_suceeded_once_key">first_launch_suceeded_once_key</string>
<string name="pref_wifi_only_key">pref_wifi_only_key</string>
<string name="pref_video_use_front_camera_key">pref_video_use_front_camera_key</string>
<string name="pref_video_codec_h263_key">pref_video_codec_h263_key</string>
<string name="pref_video_codec_mpeg4_key">pref_video_codec_mpeg4_key</string>

View file

@ -235,6 +235,8 @@
<string name="pref_default_account">pref_default_account</string>
<string name="pref_sipaccounts">SIP Accounts</string>
<string name="pref_wifi_only">Use wifi only</string>
<string name="wizard_username_hint">Username</string>
<string name="wizard_password_hint">Password</string>
<string name="wizard_password_confirm_hint">Confirmation</string>

View file

@ -175,6 +175,9 @@
android:title="@string/pref_transport_tls" />
<CheckBoxPreference android:key="@string/pref_transport_use_standard_ports_key"
android:title="@string/pref_transport_use_standard_ports"/>
<CheckBoxPreference android:key="@string/pref_wifi_only_key"
android:title="@string/pref_wifi_only"/>
</PreferenceScreen>
<ListPreference android:title="@string/pref_media_encryption"
android:key="@string/pref_media_encryption_key"

View file

@ -855,8 +855,15 @@ public final class LinphoneManager implements LinphoneCoreListener {
mLc.setNetworkReachable(false);
} else if (eventInfo.getState() == NetworkInfo.State.CONNECTED){
manageTunnelServer(activeInfo);
Log.i(eventInfo.getTypeName()," connected: setting network reachable");
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mServiceContext);
boolean wifiOnly = pref.getBoolean(getString(R.string.pref_wifi_only_key), false);
if (eventInfo.getTypeName().equals("WIFI") || (eventInfo.getTypeName().equals("mobile") && !wifiOnly)) {
mLc.setNetworkReachable(true);
Log.i(eventInfo.getTypeName()," connected: setting network reachable");
} else {
mLc.setNetworkReachable(false);
Log.i(eventInfo.getTypeName()," connected: wifi only activated, setting network unreachable");
}
}
}

View file

@ -23,8 +23,10 @@ import org.linphone.core.Log;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
@ -52,7 +54,13 @@ public class NetworkManager extends BroadcastReceiver {
if (lNoConnectivity | ((lNetworkInfo.getState() == NetworkInfo.State.DISCONNECTED) /*&& !lIsFailOver*/)) {
LinphoneManager.getLc().setNetworkReachable(false);
} else if (lNetworkInfo.getState() == NetworkInfo.State.CONNECTED){
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
boolean wifiOnly = pref.getBoolean(context.getString(R.string.pref_wifi_only_key), false);
if (lNetworkInfo.getTypeName().equals("WIFI") || (lNetworkInfo.getTypeName().equals("mobile") && !wifiOnly)) {
LinphoneManager.getLc().setNetworkReachable(true);
} else {
LinphoneManager.getLc().setNetworkReachable(false);
}
} else {
// Other unhandled events
}