From 353c958ae060d9306355921efae8cbb235c87bb5 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 3 Nov 2019 00:54:34 +0100 Subject: [PATCH] Moved accessing sharedPreferences into PreferencesUtils. --- .../importer/GpxFileTrackImporterTest.java | 9 +-- .../importer/KmlFileTrackImporterTest.java | 5 +- .../services/TrackRecordingServiceTest.java | 6 +- .../TrackRecordingServiceTestLooper.java | 2 +- .../opentracks/AbstractListActivity.java | 2 +- .../opentracks/MarkerListActivity.java | 6 +- .../opentracks/SearchListActivity.java | 8 +- .../opentracks/TrackDetailActivity.java | 8 +- .../opentracks/TrackListActivity.java | 13 ++-- .../opentracks/content/TrackDataHub.java | 14 ++-- .../io/file/importer/KmzTrackImporter.java | 2 +- .../services/TrackRecordingService.java | 34 +++++---- .../TrackRecordingServiceConnection.java | 2 +- .../sensors/BluetoothRemoteSensorManager.java | 2 +- .../settings/ActivityTypePreference.java | 8 +- .../opentracks/settings/SettingsActivity.java | 2 +- .../opentracks/util/PreferencesUtils.java | 73 ++++++++++++++----- 17 files changed, 114 insertions(+), 82 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java index 9e5b289c5..af0218de0 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GpxFileTrackImporterTest.java @@ -27,7 +27,6 @@ import org.mockito.junit.MockitoJUnitRunner; import java.io.ByteArrayInputStream; import java.io.InputStream; -import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.Track; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -95,7 +94,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { // A flush happens at the end when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(1), eq(TRACK_ID_0))).thenReturn(1); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_1); - when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); + when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); expectTrackUpdate(trackCaptor, true, TRACK_ID_0); @@ -124,7 +123,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { // A flush happens at the end when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); - when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); + when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); expectTrackUpdate(trackCaptor, true, TRACK_ID_0); @@ -156,7 +155,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { // A flush happens at the end when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); - when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); + when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); expectTrackUpdate(trackCaptor, true, TRACK_ID_0); @@ -211,7 +210,7 @@ public class GpxFileTrackImporterTest extends AbstractTestFileTrackImporter { when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), anyInt(), anyLong())).thenReturn(1); when(contentProviderUtils.getFirstTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_0); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_0); - when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); + when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); contentProviderUtils.deleteTrack(context, TRACK_ID_0); InputStream inputStream = new ByteArrayInputStream(xml.getBytes()); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java index 4b1861775..d6409e93e 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/KmlFileTrackImporterTest.java @@ -27,7 +27,6 @@ import org.mockito.junit.MockitoJUnitRunner; import java.io.ByteArrayInputStream; import java.io.InputStream; -import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.Track; import de.dennisguse.opentracks.util.PreferencesUtils; @@ -79,7 +78,7 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { // A flush happens at the end when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(1), eq(TRACK_ID_0))).thenReturn(1); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_1); - when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); + when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); expectTrackUpdate(trackCaptor, true, TRACK_ID_0); @@ -110,7 +109,7 @@ public class KmlFileTrackImporterTest extends AbstractTestFileTrackImporter { // A flush happens at the end when(contentProviderUtils.bulkInsertTrackPoint((Location[]) any(), eq(5), eq(TRACK_ID_0))).thenReturn(5); when(contentProviderUtils.getLastTrackPointId(TRACK_ID_0)).thenReturn(TRACK_POINT_ID_3); - when(contentProviderUtils.getTrack(PreferencesUtils.getLong(context, R.string.recording_track_id_key))).thenReturn(null); + when(contentProviderUtils.getTrack(PreferencesUtils.getRecordingTrackId(context))).thenReturn(null); ArgumentCaptor trackCaptor = ArgumentCaptor.forClass(Track.class); expectTrackUpdate(trackCaptor, true, TRACK_ID_0); diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index 51d77a0d8..740dbd810 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -163,7 +163,7 @@ public class TrackRecordingServiceTest { Assert.assertTrue(service.isRecording()); Assert.assertEquals(id, service.getRecordingTrackId()); mServiceRule.unbindService(); - Assert.assertEquals(id, PreferencesUtils.getLong(context, R.string.recording_track_id_key)); + Assert.assertEquals(id, PreferencesUtils.getRecordingTrackId(context)); // Start the service in "resume" mode (simulates the on-reboot action). @@ -297,7 +297,7 @@ public class TrackRecordingServiceTest { long newTrackId = service.startNewTrack(); Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, newTrackId); - Assert.assertEquals(trackId, PreferencesUtils.getLong(context, R.string.recording_track_id_key)); + Assert.assertEquals(trackId, PreferencesUtils.getRecordingTrackId(context)); Assert.assertEquals(trackId, service.getRecordingTrackId()); } @@ -310,7 +310,7 @@ public class TrackRecordingServiceTest { // Ending the current track when there is no recording should not result in any error. service.endCurrentTrack(); - Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, PreferencesUtils.getLong(context, R.string.recording_track_id_key)); + Assert.assertFalse(PreferencesUtils.isRecording(context)); Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId()); } diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index f2533ccc6..72827f3bf 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -225,7 +225,7 @@ public class TrackRecordingServiceTestLooper { Track track = providerUtils.getTrack(id); Assert.assertNotNull(track); Assert.assertEquals(id, track.getId()); - Assert.assertEquals(id, PreferencesUtils.getLong(context, R.string.recording_track_id_key)); + Assert.assertEquals(id, PreferencesUtils.getRecordingTrackId(context)); Assert.assertEquals(id, service.getRecordingTrackId()); // Insert a few points, markers and statistics. diff --git a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java index 9e9ffb2c2..a2349a442 100644 --- a/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/AbstractListActivity.java @@ -65,7 +65,7 @@ public abstract class AbstractListActivity extends AbstractActivity implements C if (trackIds.length == 1 && trackIds[0] == -1L) { stopRecording = true; } else { - long recordingTrackId = PreferencesUtils.getLong(this, R.string.recording_track_id_key); + long recordingTrackId = PreferencesUtils.getRecordingTrackId(this); for (long trackId : trackIds) { if (trackId == recordingTrackId) { stopRecording = true; diff --git a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java index 90b180e94..5c21548a8 100644 --- a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java @@ -79,10 +79,10 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { // Note that the key can be null - if (key == null || key.equals(PreferencesUtils.getKey(MarkerListActivity.this, R.string.recording_track_id_key))) { - recordingTrackId = PreferencesUtils.getLong(MarkerListActivity.this, R.string.recording_track_id_key); + if (PreferencesUtils.isKey(MarkerListActivity.this, R.string.recording_track_id_key, key)) { + recordingTrackId = PreferencesUtils.getRecordingTrackId(MarkerListActivity.this); } - if (key == null || key.equals(PreferencesUtils.getKey(MarkerListActivity.this, R.string.recording_track_paused_key))) { + if (PreferencesUtils.isKey(MarkerListActivity.this, R.string.recording_track_paused_key, key)) { recordingTrackPaused = PreferencesUtils.getBoolean(MarkerListActivity.this, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); } if (key != null) { diff --git a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java index 07b707aab..b2493a9c8 100644 --- a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java @@ -143,13 +143,13 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa private final OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (key == null || key.equals(PreferencesUtils.getKey(SearchListActivity.this, R.string.stats_units_key))) { + if (PreferencesUtils.isKey(SearchListActivity.this, R.string.stats_units_key, key)) { metricUnits = PreferencesUtils.isMetricUnits(SearchListActivity.this); } - if (key == null || key.equals(PreferencesUtils.getKey(SearchListActivity.this, R.string.recording_track_id_key))) { - recordingTrackId = PreferencesUtils.getLong(SearchListActivity.this, R.string.recording_track_id_key); + if (PreferencesUtils.isKey(SearchListActivity.this, R.string.recording_track_id_key, key)) { + recordingTrackId = PreferencesUtils.getRecordingTrackId(SearchListActivity.this); } - if (key == null || key.equals(PreferencesUtils.getKey(SearchListActivity.this, R.string.recording_track_paused_key))) { + if (PreferencesUtils.isKey(SearchListActivity.this, R.string.recording_track_paused_key, key)) { recordingTrackPaused = PreferencesUtils.getBoolean(SearchListActivity.this, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); } if (key != null) { diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index d9f55a7f3..585091490 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -125,15 +125,15 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (key == null || key.equals(PreferencesUtils.getKey(TrackDetailActivity.this, R.string.recording_track_id_key))) { - recordingTrackId = PreferencesUtils.getLong(TrackDetailActivity.this, R.string.recording_track_id_key); + if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.recording_track_id_key, key)) { + recordingTrackId = PreferencesUtils.getRecordingTrackId(TrackDetailActivity.this); } - if (key == null || key.equals(PreferencesUtils.getKey(TrackDetailActivity.this, R.string.recording_track_paused_key))) { + if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.recording_track_paused_key, key)) { 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_key))) { + if (PreferencesUtils.isKey(TrackDetailActivity.this, R.string.trackdetail_show_on_lockscreen_while_recording_key, key)) { showOnLockScreen = PreferencesUtils.getBoolean(TrackDetailActivity.this, R.string.trackdetail_show_on_lockscreen_while_recording_key, PreferencesUtils.SHOW_TRACKDETAIL_WHILE_RECORDING_ON_LOCKSCREEN); setLockscreenPolicy(); } diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index 5ee320c27..70a703149 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -135,19 +135,16 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (key == null || key.equals(PreferencesUtils.getKey(TrackListActivity.this, R.string.stats_units_key))) { + if (PreferencesUtils.isKey(TrackListActivity.this, R.string.stats_units_key, key)) { metricUnits = PreferencesUtils.isMetricUnits(TrackListActivity.this); } - if (key == null || key.equals( - PreferencesUtils.getKey(TrackListActivity.this, R.string.recording_track_id_key))) { - recordingTrackId = PreferencesUtils.getLong( - TrackListActivity.this, R.string.recording_track_id_key); + if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_id_key, key)) { + recordingTrackId = PreferencesUtils.getRecordingTrackId(TrackListActivity.this); if (key != null && PreferencesUtils.isRecording(recordingTrackId)) { trackRecordingServiceConnection.startAndBind(); } } - if (key == null || key.equals(PreferencesUtils.getKey( - TrackListActivity.this, R.string.recording_track_paused_key))) { + if (PreferencesUtils.isKey(TrackListActivity.this, R.string.recording_track_paused_key, key)) { recordingTrackPaused = PreferencesUtils.getBoolean(TrackListActivity.this, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); @@ -226,7 +223,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe private final OnClickListener recordListener = new OnClickListener() { public void onClick(View v) { - if (recordingTrackId == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { + if (PreferencesUtils.isRecording(recordingTrackId)) { // Not recording -> Recording updateMenuItems(false, true); startRecording(); diff --git a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java index fb55b72c2..d704b0f16 100644 --- a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java +++ b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java @@ -254,13 +254,13 @@ public class TrackDataHub implements DataSourceListener { runInHandlerThread(new Runnable() { @Override public void run() { - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) { - recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); + if (PreferencesUtils.isKey(context, R.string.recording_track_id_key, key)) { + recordingTrackId = PreferencesUtils.getRecordingTrackId(context); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_track_paused_key, key)) { recordingTrackPaused = PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.stats_units_key))) { + if (PreferencesUtils.isKey(context, R.string.stats_units_key, key)) { metricUnits = PreferencesUtils.isMetricUnits(context); if (key != null) { for (TrackDataListener trackDataListener : trackDataManager.getListeners(TrackDataType.PREFERENCE)) { @@ -270,7 +270,7 @@ public class TrackDataHub implements DataSourceListener { } } } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.stats_rate_key))) { + if (PreferencesUtils.isKey(context, R.string.stats_rate_key, key)) { reportSpeed = PreferencesUtils.isReportSpeed(context); if (key != null) { for (TrackDataListener trackDataListener : trackDataManager.getListeners(TrackDataType.PREFERENCE)) { @@ -280,7 +280,7 @@ public class TrackDataHub implements DataSourceListener { } } } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_gps_accuracy_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_gps_accuracy_key, key)) { recordingGpsAccuracy = PreferencesUtils.getInt(context, R.string.recording_gps_accuracy_key, PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT); if (key != null) { for (TrackDataListener trackDataListener : trackDataManager.getListeners(TrackDataType.PREFERENCE)) { @@ -290,7 +290,7 @@ public class TrackDataHub implements DataSourceListener { } } } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_distance_interval_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_distance_interval_key, key)) { recordingDistanceInterval = PreferencesUtils.getInt(context, R.string.recording_distance_interval_key, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT); if (key != null) { for (TrackDataListener trackDataListener : trackDataManager.getListeners(TrackDataType.PREFERENCE)) { diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java index 6eca37946..9a0443770 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java @@ -101,7 +101,7 @@ public class KmzTrackImporter implements TrackImporter { * @param trackId the trackId */ private void cleanImport(long trackId) { - if (trackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { + if (!PreferencesUtils.isRecording(trackId)) { ContentProviderUtils contentProviderUtils = ContentProviderUtils.Factory.get(context); contentProviderUtils.deleteTrack(context, trackId); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 5c155c6fa..c564c9b10 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -117,27 +117,27 @@ public class TrackRecordingService extends Service { private final OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_id_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_track_id_key, key)) { // Only through the TrackRecordingService can one stop a recording and set the recordingTrackId to -1L. if (PreferencesUtils.isRecording(context)) { - recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); + recordingTrackId = PreferencesUtils.getRecordingTrackId(context); } } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_track_paused_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_track_paused_key, key)) { recordingTrackPaused = PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.stats_units_key))) { + if (PreferencesUtils.isKey(context, R.string.stats_units_key, key)) { boolean metricUnits = PreferencesUtils.isMetricUnits(context); voiceExecutor.setMetricUnits(metricUnits); splitExecutor.setMetricUnits(metricUnits); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.voice_frequency_key))) { + if (PreferencesUtils.isKey(context, R.string.voice_frequency_key, key)) { voiceExecutor.setTaskFrequency(PreferencesUtils.getInt(context, R.string.voice_frequency_key, PreferencesUtils.VOICE_FREQUENCY_DEFAULT)); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.split_frequency_key))) { + if (PreferencesUtils.isKey(context, R.string.split_frequency_key, key)) { splitExecutor.setTaskFrequency(PreferencesUtils.getInt(context, R.string.split_frequency_key, PreferencesUtils.SPLIT_FREQUENCY_DEFAULT)); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.min_recording_interval_key))) { + if (PreferencesUtils.isKey(context, R.string.min_recording_interval_key, key)) { int minRecordingInterval = PreferencesUtils.getInt(context, R.string.min_recording_interval_key, PreferencesUtils.MIN_RECORDING_INTERVAL_DEFAULT); switch (minRecordingInterval) { case PreferencesUtils.MIN_RECORDING_INTERVAL_ADAPT_BATTERY_LIFE: @@ -152,16 +152,16 @@ public class TrackRecordingService extends Service { locationListenerPolicy = new AbsoluteLocationListenerPolicy(minRecordingInterval * UnitConversions.ONE_SECOND); } } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_distance_interval_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_distance_interval_key, key)) { recordingDistanceInterval = PreferencesUtils.getInt(context, R.string.recording_distance_interval_key, PreferencesUtils.RECORDING_DISTANCE_INTERVAL_DEFAULT); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.max_recording_distance_key))) { + if (PreferencesUtils.isKey(context, R.string.max_recording_distance_key, key)) { maxRecordingDistance = PreferencesUtils.getInt(context, R.string.max_recording_distance_key, PreferencesUtils.MAX_RECORDING_DISTANCE_DEFAULT); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.recording_gps_accuracy_key))) { + if (PreferencesUtils.isKey(context, R.string.recording_gps_accuracy_key, key)) { recordingGpsAccuracy = PreferencesUtils.getInt(context, R.string.recording_gps_accuracy_key, PreferencesUtils.RECORDING_GPS_ACCURACY_DEFAULT); } - if (key == null || key.equals(PreferencesUtils.getKey(context, R.string.auto_resume_track_timeout_key))) { + if (PreferencesUtils.isKey(context, R.string.auto_resume_track_timeout_key, key)) { autoResumeTrackTimeout = PreferencesUtils.getInt(context, R.string.auto_resume_track_timeout_key, PreferencesUtils.AUTO_RESUME_TRACK_TIMEOUT_DEFAULT); } } @@ -464,17 +464,19 @@ public class TrackRecordingService extends Service { return false; } - int retries = PreferencesUtils.getInt(this, R.string.auto_resume_track_current_retry_key, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT); + int retries = PreferencesUtils.getAutoResumeTrackCurrentRetryDefault(this); if (retries >= MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS) { Log.d(TAG, "Not resuming. Exceeded maximum retry attempts."); return false; } - PreferencesUtils.setInt(this, R.string.auto_resume_track_current_retry_key, retries + 1); + PreferencesUtils.incrementAutoResumeTrackCurrentRetryDefault(this); if (autoResumeTrackTimeout == PreferencesUtils.AUTO_RESUME_TRACK_TIMEOUT_NEVER) { Log.d(TAG, "Not resuming. Auto-resume track timeout set to never."); return false; - } else if (autoResumeTrackTimeout == PreferencesUtils.AUTO_RESUME_TRACK_TIMEOUT_ALWAYS) { + } + + if (autoResumeTrackTimeout == PreferencesUtils.AUTO_RESUME_TRACK_TIMEOUT_ALWAYS) { Log.d(TAG, "Resuming. Auto-resume track timeout set to always."); return true; } @@ -508,13 +510,13 @@ public class TrackRecordingService extends Service { // Update shared preferences updateRecordingState(trackId, false); - PreferencesUtils.setInt(this, R.string.auto_resume_track_current_retry_key, 0); + PreferencesUtils.resetAutoResumeTrackCurrentRetryDefault(this); // Update database track.setId(trackId); track.setName(TrackNameUtils.getTrackName(this, trackId, now)); - String category = PreferencesUtils.getString(this, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT); + String category = PreferencesUtils.getDefaultActivity(this); track.setCategory(category); track.setIcon(TrackIconUtils.getIconValue(this, category)); track.setTripStatistics(trackTripStatisticsUpdater.getTripStatistics()); diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java index 66722a30e..ea733bc87 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceConnection.java @@ -248,7 +248,7 @@ public class TrackRecordingServiceConnection implements ServiceConnection, Death try { if (showEditor) { // Need to remember the recordingTrackId before calling endCurrentTrack() as endCurrentTrack() sets the value to -1L. - long recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); + long recordingTrackId = PreferencesUtils.getRecordingTrackId(context); trackRecordingService.endCurrentTrack(); if (PreferencesUtils.isRecording(context)) { Intent intent = IntentUtils.newIntent(context, TrackEditActivity.class) diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java index 3cf22bc97..3132cff8d 100644 --- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothRemoteSensorManager.java @@ -87,7 +87,7 @@ public class BluetoothRemoteSensorManager { private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (bluetoothConnectionManager != null && key == null || key.equals(PreferencesUtils.getKey(context, R.string.bluetooth_sensor_key))) { + if (bluetoothConnectionManager != null && PreferencesUtils.isKey(context, R.string.bluetooth_sensor_key, key)) { String address = PreferencesUtils.getString(context, R.string.bluetooth_sensor_key, PreferencesUtils.BLUETOOTH_SENSOR_DEFAULT); if (address.equals(PreferencesUtils.BLUETOOTH_SENSOR_DEFAULT)) { stop(); diff --git a/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java b/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java index 3db290db1..e94839e33 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java +++ b/src/main/java/de/dennisguse/opentracks/settings/ActivityTypePreference.java @@ -45,7 +45,7 @@ public class ActivityTypePreference extends DialogPreference { private SummaryProvider summaryProvider = new SummaryProvider() { @Override public CharSequence provideSummary(DialogPreference preference) { - String defaultActivity = PreferencesUtils.getString(ActivityTypePreference.this.getContext(), R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT); + String defaultActivity = PreferencesUtils.getDefaultActivity(ActivityTypePreference.this.getContext()); return defaultActivity != null && !defaultActivity.equals(PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT) ? defaultActivity : getContext().getString(R.string.value_unknown); } }; @@ -87,7 +87,7 @@ public class ActivityTypePreference extends DialogPreference { final Context context = getActivity(); textView = view.findViewById(R.id.activity_type_preference_text_view); - String category = PreferencesUtils.getString(context, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT); + String category = PreferencesUtils.getDefaultActivity(context); textView.setText(category); ArrayAdapter adapter = ArrayAdapter.createFromResource(context, R.array.activity_types, android.R.layout.simple_dropdown_item_1line); textView.setAdapter(adapter); @@ -132,7 +132,7 @@ public class ActivityTypePreference extends DialogPreference { } private void showIconSelectDialog() { - String category = PreferencesUtils.getString(getActivity(), R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT); + String category = PreferencesUtils.getDefaultActivity(getActivity()); ChooseActivityTypeDialogFragment.showDialog(getActivity().getSupportFragmentManager(), category); } @@ -141,7 +141,7 @@ public class ActivityTypePreference extends DialogPreference { if (positiveResult) { String newDefaultActivity = textView.getText().toString(); if (getPreference().callChangeListener(newDefaultActivity)) { - PreferencesUtils.setString(getActivity(), R.string.default_activity_key, newDefaultActivity); + PreferencesUtils.setDefaultActivity(getActivity(), newDefaultActivity); } } } diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java index 9d10e6844..8b773c199 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java @@ -53,7 +53,7 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit } }); - if (key == null || key.equals(PreferencesUtils.getKey(getActivity(), R.string.stats_units_key))) { + if (PreferencesUtils.isKey(getActivity(), R.string.stats_units_key, key)) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index b480e1518..72c4cad0a 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; +import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceManager; import de.dennisguse.opentracks.R; @@ -35,8 +36,6 @@ public class PreferencesUtils { * Preferences values. * The defaults need to match the defaults in the xml files. */ - public static final int AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT = 0; - // Values for auto_resume_track_timeout_key public static final int AUTO_RESUME_TRACK_TIMEOUT_ALWAYS = -1; public static final int AUTO_RESUME_TRACK_TIMEOUT_DEFAULT = 10; @@ -49,12 +48,6 @@ public class PreferencesUtils { public static final boolean CHART_SHOW_HEART_RATE_DEFAULT = true; public static final boolean CHART_SHOW_POWER_DEFAULT = true; public static final boolean CHART_SHOW_SPEED_DEFAULT = true; - @Deprecated - //NOTE: is at the moment still used to determine if a track is currently recorded; better ask the service directly. - //NOTE: This is also used to recover from a reboot, but this data should not be exposed to the whole application. - public static final long RECORDING_TRACK_ID_DEFAULT = -1L; - - public static final String DEFAULT_ACTIVITY_DEFAULT = ""; // Value for split_frequency_key and voice_frequency_key public static final int FREQUENCY_OFF = 0; @@ -78,18 +71,11 @@ public class PreferencesUtils { public static final int SPLIT_FREQUENCY_DEFAULT = 0; static final boolean STATS_SHOW_ELEVATION_DEFAULT = false; static final String TRACK_NAME_DEFAULT = "DATE_ISO_8601"; - private static final String CHART_X_AXIS_DEFAULT = "DISTANCE"; public static final String STATS_UNITS_DEFAULT = "METRIC"; - // Stats - private static final String STATS_RATE_DEFAULT = "SPEED"; 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 - public static final int TRACK_WIDGET_ITEM3_DEFAULT = 1; // total time - public static final int TRACK_WIDGET_ITEM4_DEFAULT = 2; // average speed public static final int VOICE_FREQUENCY_DEFAULT = 0; private PreferencesUtils() { @@ -99,16 +85,63 @@ public class PreferencesUtils { return PreferenceManager.getDefaultSharedPreferences(context); } + @Deprecated + //NOTE: is at the moment still used to determine if a track is currently recorded; better ask the service directly. + //NOTE: This is also used to recover from a reboot, but this data should not be exposed to the whole application. + public static final long RECORDING_TRACK_ID_DEFAULT = -1L; + + public static long getRecordingTrackId(Context context) { + return PreferencesUtils.getLong(context, R.string.recording_track_id_key, RECORDING_TRACK_ID_DEFAULT); + } + + + @VisibleForTesting + public static final int AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT = 0; + + public static int getAutoResumeTrackCurrentRetryDefault(Context context) { + return PreferencesUtils.getInt(context, R.string.auto_resume_track_current_retry_key, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT); + } + + public static void resetAutoResumeTrackCurrentRetryDefault(Context context) { + PreferencesUtils.setInt(context, R.string.auto_resume_track_current_retry_key, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT); + } + + public static void incrementAutoResumeTrackCurrentRetryDefault(Context context) { + PreferencesUtils.setInt(context, R.string.auto_resume_track_current_retry_key, getAutoResumeTrackCurrentRetryDefault(context) + 1); + } + + + public static final String DEFAULT_ACTIVITY_DEFAULT = ""; + + public static String getDefaultActivity(Context context) { + return PreferencesUtils.getString(context, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT); + } + + public static void setDefaultActivity(Context context, String newDefaultActivity) { + PreferencesUtils.setString(context, R.string.default_activity_key, newDefaultActivity); + } + /** * Gets a preference key * * @param context the context * @param keyId the key id */ - public static String getKey(Context context, int keyId) { + private static String getKey(Context context, int keyId) { return context.getString(keyId); } + /** + * Compares if keyId and key belong to the same shared preference key. + * + * @param keyId The resource id of the key + * @param key + * @return true if key == null or key belongs to keyId + */ + public static boolean isKey(Context context, int keyId, String key) { + return key == null || key.equals(PreferencesUtils.getKey(context, keyId)); + } + /** * Gets a boolean preference value. * @@ -180,9 +213,9 @@ public class PreferencesUtils { * @param context the context * @param keyId the key id */ - public static long getLong(Context context, int keyId) { + public static long getLong(Context context, int keyId, long defaultValue) { SharedPreferences sharedPreferences = getSharedPreferences(context); - return sharedPreferences.getLong(getKey(context, keyId), -1L); + return sharedPreferences.getLong(getKey(context, keyId), defaultValue); } /** @@ -241,6 +274,7 @@ public class PreferencesUtils { * @param context the context */ public static boolean isReportSpeed(Context context) { + final String STATS_RATE_DEFAULT = "SPEED"; return STATS_RATE_DEFAULT.equals(getString(context, R.string.stats_rate_key, STATS_RATE_DEFAULT)); } @@ -250,11 +284,12 @@ public class PreferencesUtils { * @param context the context */ public static boolean isChartByDistance(Context context) { + final String CHART_X_AXIS_DEFAULT = "DISTANCE"; return CHART_X_AXIS_DEFAULT.equals(getString(context, R.string.chart_x_axis_key, CHART_X_AXIS_DEFAULT)); } public static boolean isRecording(Context context) { - long recordingTrackId = PreferencesUtils.getLong(context, R.string.recording_track_id_key); + long recordingTrackId = PreferencesUtils.getRecordingTrackId(context); return recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; }