Add button in advanced settings to enable/disable "Doze Mode" Close #15

This commit is contained in:
Erwan Croze 2017-02-28 11:00:18 +01:00
parent c7a377d0f9
commit bc3bb94b7b
6 changed files with 59 additions and 11 deletions

View file

@ -58,6 +58,7 @@
<string name="first_launch_suceeded_once_key">first_launch_suceeded_once_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_wifi_only_key">pref_wifi_only_key</string>
<string name="pref_doze_mode_key">pref_doze_mode_key</string>
<string name="pref_overlay_key">pref_overlay_key</string> <string name="pref_overlay_key">pref_overlay_key</string>
<string name="pref_video_use_front_camera_key">pref_video_use_front_camera_key</string> <string name="pref_video_use_front_camera_key">pref_video_use_front_camera_key</string>

View file

@ -275,7 +275,6 @@
<string name="pref_avpf">AVPF</string> <string name="pref_avpf">AVPF</string>
<string name="pref_avpf_rr_interval"> AVPF regular RTCP interval in seconds (between 1 and 5)</string> <string name="pref_avpf_rr_interval"> AVPF regular RTCP interval in seconds (between 1 and 5)</string>
<string name="pref_escape_plus">Replace + by 00</string> <string name="pref_escape_plus">Replace + by 00</string>
<string name="pref_friendlist_subscribe">Friendlist subscribe</string>
<string name="pref_link_account">Link your account</string> <string name="pref_link_account">Link your account</string>
<string name="pref_auth_userid">Auth userid</string> <string name="pref_auth_userid">Auth userid</string>
<string name="pref_help_auth_userid">Enter authentication userid (optional)</string> <string name="pref_help_auth_userid">Enter authentication userid (optional)</string>
@ -362,6 +361,7 @@
<!-- Network settings --> <!-- Network settings -->
<string name="pref_network_title">Network</string> <string name="pref_network_title">Network</string>
<string name="pref_wifi_only">Use WiFi only</string> <string name="pref_wifi_only">Use WiFi only</string>
<string name="pref_doze_mode">Doze mode</string>
<string name="pref_stun_server">STUN / TURN server</string> <string name="pref_stun_server">STUN / TURN server</string>
<string name="pref_ice_enable">Enable ICE</string> <string name="pref_ice_enable">Enable ICE</string>
<string name="pref_turn_enable">Enable TURN</string> <string name="pref_turn_enable">Enable TURN</string>
@ -380,7 +380,9 @@
<!-- Advanced settings --> <!-- Advanced settings -->
<string name="pref_advanced_title">Advanced</string> <string name="pref_advanced_title">Advanced</string>
<string name="pref_debug_title">Debug</string>
<string name="pref_debug">Debug</string> <string name="pref_debug">Debug</string>
<string name="pref_friendlist_subscribe">Friendlist subscribe</string>
<string name="pref_background_mode">Background mode</string> <string name="pref_background_mode">Background mode</string>
<string name="pref_animation_enable_title">Enable Animations</string> <string name="pref_animation_enable_title">Enable Animations</string>
<string name="pref_service_notification">Enable service notification</string> <string name="pref_service_notification">Enable service notification</string>

View file

@ -248,6 +248,11 @@
android:key="@string/pref_wifi_only_key" android:key="@string/pref_wifi_only_key"
android:persistent="false"/> android:persistent="false"/>
<CheckBoxPreference
android:title="@string/pref_doze_mode"
android:key="@string/pref_doze_mode_key"
android:persistent="false"/>
<EditTextPreference <EditTextPreference
android:title="@string/pref_stun_server" android:title="@string/pref_stun_server"
android:key="@string/pref_stun_server_key" android:key="@string/pref_stun_server_key"
@ -323,6 +328,16 @@
<PreferenceScreen <PreferenceScreen
android:title="@string/pref_advanced_title"> android:title="@string/pref_advanced_title">
<PreferenceCategory
android:title="@string/pref_debug_title">
<CheckBoxPreference
android:title="@string/pref_debug"
android:key="@string/pref_debug_key"
android:persistent="false"/>
</PreferenceCategory>
<PreferenceCategory <PreferenceCategory
android:title="@string/pref_advanced_title"> android:title="@string/pref_advanced_title">
@ -331,11 +346,6 @@
android:key="@string/pref_friendlist_subscribe_key" android:key="@string/pref_friendlist_subscribe_key"
android:persistent="false"/> android:persistent="false"/>
<CheckBoxPreference
android:title="@string/pref_debug"
android:key="@string/pref_debug_key"
android:persistent="false"/>
<CheckBoxPreference <CheckBoxPreference
android:title="@string/pref_background_mode" android:title="@string/pref_background_mode"
android:key="@string/pref_background_mode_key" android:key="@string/pref_background_mode_key"

View file

@ -684,7 +684,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
finally { finally {
try { try {
mServiceContext.unregisterReceiver(mKeepAliveReceiver); mServiceContext.unregisterReceiver(mKeepAliveReceiver);
mServiceContext.unregisterReceiver(mDozeReceiver); dozeManager(false);
} catch (Exception e) { } catch (Exception e) {
Log.e(e); Log.e(e);
} }
@ -818,7 +818,9 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
mDozeReceiver = new DozeReceiver(); mDozeReceiver = new DozeReceiver();
if (mPrefs.isDozeModeEnabled()) {
mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter); mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter);
}
updateNetworkReachability(); updateNetworkReachability();
@ -889,10 +891,13 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
ConnectivityManager cm = (ConnectivityManager) mServiceContext.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) mServiceContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo(); NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected() || dozeModeEnabled) { if (networkInfo == null || !networkInfo.isConnected()) {
Log.i("No connectivity: setting network unreachable"); Log.i("No connectivity: setting network unreachable");
mLc.setNetworkReachable(false); mLc.setNetworkReachable(false);
} else if (networkInfo.isConnected()){ } else if (dozeModeEnabled) {
Log.i("Doze Mode enabled: shutting down network");
mLc.setNetworkReachable(false);
}else if (networkInfo.isConnected()){
manageTunnelServer(networkInfo); manageTunnelServer(networkInfo);
boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled(); boolean wifiOnly = LinphonePreferences.instance().isWifiOnlyEnabled();
@ -937,12 +942,23 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag
} }
finally { finally {
mServiceContext.unregisterReceiver(mKeepAliveReceiver); mServiceContext.unregisterReceiver(mKeepAliveReceiver);
mServiceContext.unregisterReceiver(mDozeReceiver); dozeManager(false);
mLc = null; mLc = null;
instance = null; instance = null;
} }
} }
public void dozeManager(boolean enable) {
if (enable) {
Log.i("[Doze Mode]: register");
mServiceContext.registerReceiver(mDozeReceiver, mDozeIntentFilter);
} else {
Log.i("[Doze Mode]: unregister");
dozeModeEnabled = false;
mServiceContext.unregisterReceiver(mDozeReceiver);
}
}
public static void ContactsManagerDestroy() { public static void ContactsManagerDestroy() {
if (ContactsManager.getInstance() != null) if (ContactsManager.getInstance() != null)
ContactsManager.getInstance().destroy(); ContactsManager.getInstance().destroy();

View file

@ -1468,6 +1468,14 @@ public class LinphonePreferences {
return getConfig().getInt("app", "activation_code_length", 0); return getConfig().getInt("app", "activation_code_length", 0);
} }
public boolean isDozeModeEnabled() {
return getConfig().getBool("app", "doze_mode", true);
}
public void enableDozeMode(boolean enable) {
getConfig().setBool("app", "doze_mode", enable);
}
public void disableFriendsStorage() { public void disableFriendsStorage() {
getConfig().setBool("misc", "store_friends", false); getConfig().setBool("misc", "store_friends", false);
} }

View file

@ -1009,6 +1009,8 @@ public class SettingsFragment extends PreferencesListFragment {
private void initNetworkSettings() { private void initNetworkSettings() {
((CheckBoxPreference) findPreference(getString(R.string.pref_wifi_only_key))).setChecked(mPrefs.isWifiOnlyEnabled()); ((CheckBoxPreference) findPreference(getString(R.string.pref_wifi_only_key))).setChecked(mPrefs.isWifiOnlyEnabled());
((CheckBoxPreference) findPreference(getString(R.string.pref_doze_mode_key))).setChecked(mPrefs.isDozeModeEnabled());
// Disable UPnP if ICE si enabled, or disable ICE if UPnP is enabled // Disable UPnP if ICE si enabled, or disable ICE if UPnP is enabled
CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key)); CheckBoxPreference ice = (CheckBoxPreference) findPreference(getString(R.string.pref_ice_enable_key));
CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key)); CheckBoxPreference turn = (CheckBoxPreference) findPreference(getString(R.string.pref_turn_enable_key));
@ -1049,6 +1051,15 @@ public class SettingsFragment extends PreferencesListFragment {
} }
}); });
findPreference(getString(R.string.pref_doze_mode_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
mPrefs.enableDozeMode((Boolean) newValue);
LinphoneManager.getInstance().dozeManager((Boolean) newValue);
return true;
}
});
findPreference(getString(R.string.pref_stun_server_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() { findPreference(getString(R.string.pref_stun_server_key)).setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {