From c8ae3b83b5e9a2503420281019dbf05cdb3b70ef Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Mon, 2 Sep 2019 18:36:31 +0200 Subject: [PATCH] Added option to show statistics while recording without unlocking the device. --- .../opentracks/TrackDetailActivity.java | 25 +++++++++++++++++++ .../opentracks/util/PreferencesUtils.java | 2 ++ src/main/res/values/keys.xml | 2 ++ src/main/res/values/strings.xml | 12 ++++++--- src/main/res/xml/settings_recording.xml | 15 +++++++---- 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index 29149ae62..a10a88c6b 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -22,6 +22,7 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.pm.PackageManager; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; import android.util.Pair; @@ -29,6 +30,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; +import android.view.WindowManager; import android.widget.ShareActionProvider; import android.widget.TabHost; import android.widget.TabHost.TabSpec; @@ -94,6 +96,8 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA // Preferences private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT; + private boolean showOnLockScreen = PreferencesUtils.SHOW_TRACKDETAIL_WHILE_RECORDING_ON_LOCKSCREEN; + private final Runnable bindChangedCallback = new Runnable() { @Override public void run() { @@ -132,6 +136,11 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA recordingTrackPaused = PreferencesUtils.getBoolean(TrackDetailActivity.this, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); } + if (key == null || key.equals(PreferencesUtils.getKey(TrackDetailActivity.this, R.string.trackdetail_show_on_lockscreen_while_recording))) { + showOnLockScreen = PreferencesUtils.getBoolean(TrackDetailActivity.this, R.string.trackdetail_show_on_lockscreen_while_recording, PreferencesUtils.SHOW_TRACKDETAIL_WHILE_RECORDING_ON_LOCKSCREEN); + setLockscreenPolicy(); + } + if (key == null) return; runOnUiThread(new Runnable() { @@ -214,6 +223,22 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA trackController = new TrackController(this, trackRecordingServiceConnection, false, recordListener, stopListener); } + @Override + public void onAttachedToWindow() { + setLockscreenPolicy(); + super.onAttachedToWindow(); + } + + private void setLockscreenPolicy() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + setShowWhenLocked(showOnLockScreen); + } else { + if (showOnLockScreen) + getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + else getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); + } + } + @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 70b8d5701..e9f023edb 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -83,6 +83,8 @@ public class PreferencesUtils { public static final String TRACK_NAME_DEFAULT = "DATE_ISO_8601"; + public static final boolean SHOW_TRACKDETAIL_WHILE_RECORDING_ON_LOCKSCREEN = false; + // Track widget public static final int TRACK_WIDGET_ITEM1_DEFAULT = 3; // moving time public static final int TRACK_WIDGET_ITEM2_DEFAULT = 0; // distance diff --git a/src/main/res/values/keys.xml b/src/main/res/values/keys.xml index a3aed902f..6a9c496a6 100644 --- a/src/main/res/values/keys.xml +++ b/src/main/res/values/keys.xml @@ -28,10 +28,12 @@ limitations under the License. recordingDistanceInterval recordingGpsAccuracy splitFrequency + statsRate statsShowCoordinate statsShowGradeElevation statsUnits + trackdetail_show_on_lockscreen_while_recording trackName trackWidgetItem1 trackWidgetItem2 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 77921dddd..16ae1b280 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1085,10 +1085,16 @@ limitations under the License. X axis - - - + Show statistics on lockscreen + + + + While recording, show statistics without unlocking the device. + + + Recording diff --git a/src/main/res/xml/settings_recording.xml b/src/main/res/xml/settings_recording.xml index 2ce3232af..11ae067db 100644 --- a/src/main/res/xml/settings_recording.xml +++ b/src/main/res/xml/settings_recording.xml @@ -35,11 +35,6 @@ limitations under the License. android:key="@string/track_name_key" android:summary="%s" android:title="@string/settings_recording_track_name_title" /> - + + \ No newline at end of file