From af1343357107352f1bfd59e1620fec513d5cb275 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 29 May 2020 15:36:14 +0300 Subject: [PATCH] Fix turn screen on prefs --- OsmAnd/res/values/strings.xml | 1 + .../osmand/plus/activities/MapActivity.java | 12 +++--- .../net/osmand/plus/helpers/LockHelper.java | 41 ++++++++----------- .../bottomsheets/WakeTimeBottomSheet.java | 4 +- .../fragments/TurnScreenOnFragment.java | 21 +++++----- 5 files changed, 34 insertions(+), 45 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 882c6b1269..fca05e36a0 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,7 @@ Thx - Hardy --> + Default screen timeout If the \"%1$s\" option is enabled, the activity time will depend on it. Keep screen off Keep screen on diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java index 1abb37b1e4..c39309b99e 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java @@ -66,13 +66,11 @@ import net.osmand.map.MapTileDownloader.IMapDownloaderCallback; import net.osmand.plus.AppInitializer; import net.osmand.plus.AppInitializer.AppInitializeListener; import net.osmand.plus.AppInitializer.InitEvents; -import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem; import net.osmand.plus.HuaweiDrmHelper; import net.osmand.plus.MapMarkersHelper.MapMarker; import net.osmand.plus.MapMarkersHelper.MapMarkerChangedListener; import net.osmand.plus.OnDismissDialogFragmentListener; -import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener; import net.osmand.plus.OsmAndConstants; import net.osmand.plus.OsmAndLocationSimulation; import net.osmand.plus.OsmandApplication; @@ -89,6 +87,7 @@ import net.osmand.plus.chooseplan.OsmLiveCancelledDialog; import net.osmand.plus.dashboard.DashboardOnMap; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.dialogs.CrashBottomSheetDialogFragment; +import net.osmand.plus.dialogs.ImportGpxBottomSheetDialogFragment; import net.osmand.plus.dialogs.RateUsBottomSheetDialogFragment; import net.osmand.plus.dialogs.SendAnalyticsBottomSheetDialogFragment; import net.osmand.plus.dialogs.WhatsNewDialogFragment; @@ -101,7 +100,6 @@ import net.osmand.plus.firstusage.FirstUsageWizardFragment; import net.osmand.plus.helpers.AndroidUiHelper; import net.osmand.plus.helpers.DiscountHelper; import net.osmand.plus.helpers.ImportHelper; -import net.osmand.plus.dialogs.ImportGpxBottomSheetDialogFragment; import net.osmand.plus.helpers.IntentHelper; import net.osmand.plus.helpers.LockHelper; import net.osmand.plus.helpers.LockHelper.LockUIAdapter; @@ -134,6 +132,8 @@ import net.osmand.plus.routing.TransportRoutingHelper.TransportRouteCalculationP import net.osmand.plus.search.QuickSearchDialogFragment; import net.osmand.plus.search.QuickSearchDialogFragment.QuickSearchTab; import net.osmand.plus.search.QuickSearchDialogFragment.QuickSearchType; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmAndAppCustomization.OsmAndAppCustomizationListener; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType; @@ -192,7 +192,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven private static final int ZOOM_LABEL_DISPLAY = 16; private static final int MIN_ZOOM_LABEL_DISPLAY = 12; private static final int SECOND_SPLASH_TIME_OUT = 8000; - + private static final int SMALL_SCROLLING_UNIT = 1; private static final int BIG_SCROLLING_UNIT = 200; @@ -1968,9 +1968,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven } public void changeKeyguardFlags() { - boolean turnScreenOnEnabled = getRoutingHelper().isFollowingMode(); - int turnScreenOnTime = settings.TURN_SCREEN_ON_TIME_INT.get(); - boolean enabled = turnScreenOnEnabled && (turnScreenOnTime > 0 || turnScreenOnTime == -1); + boolean enabled = settings.TURN_SCREEN_ON_TIME_INT.get() >= 0; boolean keepScreenOn = !settings.USE_SYSTEM_SCREEN_TIMEOUT.get(); changeKeyguardFlags(enabled, keepScreenOn); } diff --git a/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java b/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java index fb61f1f915..477e2928ad 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/LockHelper.java @@ -33,6 +33,8 @@ public class LockHelper implements SensorEventListener { private OsmandApplication app; private CommonPreference turnScreenOnTime; private CommonPreference turnScreenOnSensor; + private CommonPreference useSystemScreenTimeout; + private CommonPreference turnScreenOnPowerButton; private CommonPreference turnScreenOnNavigationInstructions; @Nullable @@ -53,6 +55,8 @@ public class LockHelper implements SensorEventListener { OsmandSettings settings = app.getSettings(); turnScreenOnTime = settings.TURN_SCREEN_ON_TIME_INT; turnScreenOnSensor = settings.TURN_SCREEN_ON_SENSOR; + useSystemScreenTimeout = settings.USE_SYSTEM_SCREEN_TIMEOUT; + turnScreenOnPowerButton = settings.TURN_SCREEN_ON_POWER_BUTTON; turnScreenOnNavigationInstructions = settings.TURN_SCREEN_ON_NAVIGATION_INSTRUCTIONS; lockRunnable = new Runnable() { @@ -75,6 +79,8 @@ public class LockHelper implements SensorEventListener { OsmandSettings settings = app.getSettings(); turnScreenOnTime = settings.TURN_SCREEN_ON_TIME_INT; turnScreenOnSensor = settings.TURN_SCREEN_ON_SENSOR; + useSystemScreenTimeout = settings.USE_SYSTEM_SCREEN_TIMEOUT; + turnScreenOnPowerButton = settings.TURN_SCREEN_ON_POWER_BUTTON; turnScreenOnNavigationInstructions = settings.TURN_SCREEN_ON_NAVIGATION_INSTRUCTIONS; } }; @@ -107,15 +113,13 @@ public class LockHelper implements SensorEventListener { private void lock() { releaseWakeLocks(); int unlockTime = turnScreenOnTime.get(); - if (lockUIAdapter != null && isFollowingMode() && unlockTime != -1) { - lockUIAdapter.lock(); + if (lockUIAdapter != null) { + if (!(useSystemScreenTimeout.get() && turnScreenOnPowerButton.get()) && unlockTime != 0) { + lockUIAdapter.lock(); + } } } - private boolean isFollowingMode() { - return app.getRoutingHelper().isFollowingMode(); - } - private void timedUnlock(final long millis) { uiHandler.removeCallbacks(lockRunnable); if (wakeLock == null) { @@ -135,10 +139,10 @@ public class LockHelper implements SensorEventListener { private void unlockEvent() { int unlockTime = turnScreenOnTime.get(); - if (unlockTime > 0) { + if (unlockTime > 0 && !useSystemScreenTimeout.get()) { timedUnlock(unlockTime * 1000L); - } else if (unlockTime == -1) { - timedUnlock(-1); + } else { + timedUnlock(0); } } @@ -156,14 +160,6 @@ public class LockHelper implements SensorEventListener { } } - private void switchSensorOn() { - switchSensor(true); - } - - private void switchSensorOff() { - switchSensor(false); - } - private void switchSensor(boolean on) { SensorManager sensorManager = (SensorManager) app.getSystemService(Context.SENSOR_SERVICE); if (sensorManager != null) { @@ -176,23 +172,18 @@ public class LockHelper implements SensorEventListener { } } - private boolean isSensorEnabled() { - return turnScreenOnSensor.get() && isFollowingMode(); - } - public void onStart(@NonNull Activity activity) { - switchSensorOff(); + switchSensor(false); } public void onStop(@NonNull Activity activity) { lock(); - if (!activity.isFinishing() && isSensorEnabled()) { - switchSensorOn(); + if (!activity.isFinishing() && turnScreenOnSensor.get()) { + switchSensor(true); } } public void setLockUIAdapter(@Nullable LockUIAdapter adapter) { lockUIAdapter = adapter; } - } \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/WakeTimeBottomSheet.java b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/WakeTimeBottomSheet.java index 5cf26a5060..d670415dda 100644 --- a/OsmAnd/src/net/osmand/plus/settings/bottomsheets/WakeTimeBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/settings/bottomsheets/WakeTimeBottomSheet.java @@ -53,8 +53,8 @@ public class WakeTimeBottomSheet extends BasePreferenceBottomSheet { keepScreenOnEnabled = savedInstanceState.getBoolean(KEEP_SCREEN_ON_ENABLED); } else { int savedValIndex = listPreference.getValueIndex(); - keepScreenOnEnabled = savedValIndex == 0; - selectedEntryIndex = savedValIndex != 0 ? savedValIndex : 1; + keepScreenOnEnabled = savedValIndex <= 0; + selectedEntryIndex = savedValIndex > 0 ? savedValIndex : 1; } items.add(new TitleItem(listPreference.getDialogTitle())); diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/TurnScreenOnFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/TurnScreenOnFragment.java index 96e462c32e..96631cbfd3 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/TurnScreenOnFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/TurnScreenOnFragment.java @@ -1,6 +1,5 @@ package net.osmand.plus.settings.fragments; -import android.widget.ImageView; import android.widget.TextView; import androidx.fragment.app.FragmentManager; @@ -32,11 +31,9 @@ public class TurnScreenOnFragment extends BaseSettingsFragment implements OnPref super.onBindPreferenceViewHolder(preference, holder); String prefId = preference.getKey(); if (settings.TURN_SCREEN_ON_TIME_INT.getId().equals(prefId) && preference instanceof ListPreferenceEx) { - Object currentValue = ((ListPreferenceEx) preference).getValue(); - ImageView imageView = (ImageView) holder.findViewById(android.R.id.icon); - if (imageView != null && currentValue instanceof Integer) { - boolean enabled = preference.isEnabled() && (Integer) currentValue != 0; - imageView.setEnabled(enabled); + TextView summaryView = (TextView) holder.findViewById(android.R.id.summary); + if (summaryView != null && !preference.isEnabled()) { + summaryView.setText(R.string.default_screen_timeout); } } else if ("turn_screen_on_info".equals(prefId) || "turn_screen_on_options_info".equals(prefId)) { TextView titleView = (TextView) holder.findViewById(android.R.id.title); @@ -70,12 +67,11 @@ public class TurnScreenOnFragment extends BaseSettingsFragment implements OnPref } private void setupTurnScreenOnTimePref() { - Integer[] entryValues = new Integer[] {-1, 0, 5, 10, 15, 20, 30, 45, 60}; + Integer[] entryValues = new Integer[] {0, 5, 10, 15, 20, 30, 45, 60}; String[] entries = new String[entryValues.length]; - entries[0] = getString(R.string.shared_string_always); - entries[1] = getString(R.string.shared_string_never); - for (int i = 2; i < entryValues.length; i++) { + entries[0] = getString(R.string.keep_screen_on); + for (int i = 1; i < entryValues.length; i++) { entries[i] = entryValues[i] + " " + getString(R.string.int_seconds); } @@ -100,9 +96,12 @@ public class TurnScreenOnFragment extends BaseSettingsFragment implements OnPref } private void setupTurnScreenOnPowerButtonPref() { + ApplicationMode appMode = getSelectedAppMode(); + boolean enabled = settings.TURN_SCREEN_ON_TIME_INT.getModeValue(appMode) == 0 || settings.USE_SYSTEM_SCREEN_TIMEOUT.getModeValue(appMode); SwitchPreferenceEx turnScreenOnPowerButton = (SwitchPreferenceEx) findPreference(settings.TURN_SCREEN_ON_POWER_BUTTON.getId()); - turnScreenOnPowerButton.setIcon(getPersistentPrefIcon(R.drawable.ic_action_power_button)); + turnScreenOnPowerButton.setEnabled(enabled); turnScreenOnPowerButton.setDescription(R.string.turn_screen_on_power_button_descr); + turnScreenOnPowerButton.setIcon(getPersistentPrefIcon(R.drawable.ic_action_power_button)); } @Override