From 355f3ef6147900688944239033f3b38d48d1d22c Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Tue, 3 Dec 2019 07:46:07 +0100 Subject: [PATCH] Added "screen always on"-feature to TrackDetailActivity. And the "show on lockscreen"-feature is only used while recording. --- .../opentracks/TrackDetailActivity.java | 23 ++++++++++++++++++- .../opentracks/util/PreferencesUtils.java | 5 ++++ src/main/res/values/settings.xml | 3 +++ src/main/res/values/strings.xml | 7 ++++++ src/main/res/xml/settings.xml | 5 ++++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index 142c9771c..555c944a2 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -127,16 +127,24 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.recording_track_id_key, key)) { recordingTrackId = PreferencesUtils.getRecordingTrackId(TrackDetailActivity.this); + setLockscreenPolicy(); + setScreenOnPolicy(); } if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.recording_track_paused_key, key)) { recordingTrackPaused = PreferencesUtils.isRecordingTrackPaused(TrackDetailActivity.this); + setLockscreenPolicy(); + setScreenOnPolicy(); } if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.stats_show_on_lockscreen_while_recording_key, key)) { setLockscreenPolicy(); } + if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.stats_keep_screen_on_while_recording_key, key)) { + setScreenOnPolicy(); + } + if (key == null) return; runOnUiThread(new Runnable() { @@ -227,11 +235,13 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA @Override public void onAttachedToWindow() { setLockscreenPolicy(); + setScreenOnPolicy(); super.onAttachedToWindow(); } private void setLockscreenPolicy() { - boolean showOnLockScreen = PreferencesUtils.shouldShowStatsOnLockscreen(TrackDetailActivity.this); + boolean showOnLockScreen = PreferencesUtils.shouldShowStatsOnLockscreen(TrackDetailActivity.this) + && PreferencesUtils.isRecording(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { setShowWhenLocked(showOnLockScreen); @@ -242,6 +252,17 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA } } + private void setScreenOnPolicy() { + boolean keepScreenOn = PreferencesUtils.shouldKeepScreenOn(TrackDetailActivity.this) + && PreferencesUtils.isRecording(this); + + if (keepScreenOn) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + @Override protected void onStart() { super.onStart(); diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index 20afeb043..df05dc5d2 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -289,6 +289,11 @@ public class PreferencesUtils { return getBoolean(context, R.string.stats_show_on_lockscreen_while_recording_key, STATS_SHOW_ON_LOCKSCREEN_DEFAULT); } + public static boolean shouldKeepScreenOn(Context context) { + final boolean DEFAULT = context.getResources().getBoolean(R.bool.stats_keep_screen_on_while_recording_default); + return getBoolean(context, R.string.stats_keep_screen_on_while_recording_key, DEFAULT); + } + public static boolean isShowStatsGradeElevation(Context context) { final boolean STATS_SHOW_GRADE_ELEVATION = context.getResources().getBoolean(R.bool.stats_show_grade_elevation_default); return PreferencesUtils.getBoolean(context, R.string.stats_show_grade_elevation_key, STATS_SHOW_GRADE_ELEVATION); diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml index 48c80375f..3888ae9e1 100644 --- a/src/main/res/values/settings.xml +++ b/src/main/res/values/settings.xml @@ -25,6 +25,9 @@ trackdetail_show_on_lockscreen_while_recording false + trackdetail_keep_screen_on_while_recording + false + settingsReset bluetoothSensor diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index ea462c4ef..3b3a06d89 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1194,6 +1194,13 @@ limitations under the License. While recording, show statistics without unlocking the device. + + Keep screen on + + + While recording, keep the screen on. + + diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml index d4db0dccb..3ba34b93c 100644 --- a/src/main/res/xml/settings.xml +++ b/src/main/res/xml/settings.xml @@ -74,6 +74,11 @@ limitations under the License. android:key="@string/stats_show_on_lockscreen_while_recording_key" android:summary="@string/settings_recording_show_on_lockscreen_while_recording_summary" android:title="@string/settings_recording_show_on_lockscreen_while_recording_title" /> +