[android] Added an option to allow screen to sleep if required

Signed-off-by: Martin Woolley <martin@woolleynet.com>
This commit is contained in:
Martin Woolley 2021-05-19 16:09:22 +01:00 committed by Roman Tsisyk
parent 0bfdc387ea
commit 470bc6f231
6 changed files with 47 additions and 1 deletions

View file

@ -40,6 +40,7 @@
<string name="pref_information" translatable="false">Information</string>
<string name="pref_transliteration" translatable="false">Transliteration</string>
<string name="pref_power_management" translatable="false">PowerManagment</string>
<string name="pref_screen_sleep" translatable="false">ScreenSleep</string>
<string name="notification_ticker_ltr" translatable="false">%1$s: %2$s</string>
<string name="notification_ticker_rtl" translatable="false">%2$s :%1$s</string>

View file

@ -1130,6 +1130,8 @@
<string name="power_managment_setting_never">Never</string>
<string name="power_managment_setting_auto">Automatic</string>
<string name="power_managment_setting_manual_max">Maximum power saving</string>
<string name="enable_screen_sleep">Allow screen to sleep</string>
<string name="enable_screen_sleep_description">When enabled the screen will be allowed to sleep after a period of inactivity.</string>
<string name="enable_logging_warning_message">The option turns on logging for diagnostic purposes. It can be helpful for our support staff who are troubleshooting issues with the app. Enable this option only at the request of Organic Maps support.</string>
<string name="html_error_upload_message_try_again">Please check your network settings and try again</string>
<string name="html_error_upload_title_try_again">No internet connection</string>

View file

@ -92,6 +92,12 @@
android:entries="@array/power_management_scheme"
android:entryValues="@array/power_management_scheme_values"
android:order="15"/>
<SwitchPreferenceCompat
android:key="@string/pref_screen_sleep"
android:title="@string/enable_screen_sleep"
android:summary="@string/enable_screen_sleep_description"
android:defaultValue="false"
android:order="16"/>
</androidx.preference.PreferenceCategory>
<androidx.preference.PreferenceCategory

View file

@ -20,6 +20,7 @@ import com.mapswithme.util.PermissionsUtils;
import com.mapswithme.util.Utils;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.log.LoggerFactory;
import com.mapswithme.util.Config;
public enum LocationHelper implements Initializable<Context>
{
@ -548,7 +549,9 @@ public enum LocationHelper implements Initializable<Context>
mUiCallback = callback;
Utils.keepScreenOn(true, mUiCallback.getActivity().getWindow());
if (!Config.isScreenSleepEnabled()) {
Utils.keepScreenOn(true, mUiCallback.getActivity().getWindow());
}
mUiCallback.onMyPositionModeChanged(getMyPositionMode());
if (mCompassData != null)

View file

@ -43,6 +43,7 @@ import com.mapswithme.util.ThemeSwitcher;
import com.mapswithme.util.UiUtils;
import com.mapswithme.util.concurrency.UiThread;
import com.mapswithme.util.log.LoggerFactory;
import com.mapswithme.util.Utils;
import java.util.HashMap;
import java.util.List;
@ -305,6 +306,7 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
initUseMobileDataPrefsCallbacks();
initPowerManagementPrefsCallbacks();
initCrashReports();
initScreenSleepEnabledPrefsCallbacks();
updateTts();
}
@ -832,6 +834,25 @@ public class SettingsPrefsFragment extends BaseXmlSettingsFragment
pref.setOnPreferenceChangeListener((preference, newValue) -> onToggleCrashReports(newValue));
}
private void initScreenSleepEnabledPrefsCallbacks()
{
Preference pref = findPreference(getString(R.string.pref_screen_sleep));
if (pref == null)
return;
final boolean isScreenSleepEnabled = Config.isScreenSleepEnabled();
((TwoStatePreference) pref).setChecked(isScreenSleepEnabled);
pref.setOnPreferenceChangeListener(
(preference, newValue) ->
{
boolean newVal = (Boolean) newValue;
if (isScreenSleepEnabled != newVal)
Config.setScreenSleepEnabled(newVal);
Utils.keepScreenOn(!newVal, getActivity().getWindow());
return true;
});
}
private void removePreference(@NonNull String categoryKey, @NonNull Preference preference)
{
PreferenceCategory category = findPreference(categoryKey);

View file

@ -38,6 +38,7 @@ public final class Config
private static final String KEY_MISC_USE_MOBILE_DATA_TIMESTAMP = "UseMobileDataTimestamp";
private static final String KEY_MISC_USE_MOBILE_DATA_ROAMING = "UseMobileDataRoaming";
private static final String KEY_MISC_AD_FORBIDDEN = "AdForbidden";
private static final String KEY_MISC_ENABLE_SCREEN_SLEEP = "EnableScreenSleep";
private Config() {}
@ -120,6 +121,8 @@ public final class Config
getBool(KEY_MISC_FIRST_START_DIALOG_SEEN))
.putInt(KEY_MISC_NEWS_LAST_VERSION, getInt(KEY_MISC_NEWS_LAST_VERSION))
.putInt(KEY_LIKES_LAST_RATED_SESSION, getInt(KEY_LIKES_LAST_RATED_SESSION))
.putBoolean(KEY_MISC_ENABLE_SCREEN_SLEEP,
getBool(KEY_MISC_ENABLE_SCREEN_SLEEP))
.apply();
}
@ -178,6 +181,16 @@ public final class Config
setBool(KEY_PREF_STATISTICS, enabled);
}
public static boolean isScreenSleepEnabled()
{
return getBool(KEY_MISC_ENABLE_SCREEN_SLEEP, false);
}
public static void setScreenSleepEnabled(boolean enabled)
{
setBool(KEY_MISC_ENABLE_SCREEN_SLEEP, enabled);
}
public static boolean useGoogleServices()
{
return getBool(KEY_PREF_USE_GS, true);