diff --git a/src/androidTest/java/de/dennisguse/opentracks/BootReceiverTest.java b/src/androidTest/java/de/dennisguse/opentracks/BootReceiverTest.java deleted file mode 100644 index bf752bc12..000000000 --- a/src/androidTest/java/de/dennisguse/opentracks/BootReceiverTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package de.dennisguse.opentracks; - -import android.app.ActivityManager; -import android.app.ActivityManager.RunningServiceInfo; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; - -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.platform.app.InstrumentationRegistry; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.List; - -import de.dennisguse.opentracks.services.TrackRecordingService; - -/** - * Tests for the BootReceiver. - * - * @author Youtao Liu - */ -@RunWith(AndroidJUnit4.class) -public class BootReceiverTest { - private static final String SERVICE_NAME = "de.dennisguse.opentracks.services.TrackRecordingService"; - - private Context context = InstrumentationRegistry.getInstrumentation().getContext(); - - /** - * Tests the behavior when receive notification which is the phone boot. - */ - @Test - public void testOnReceive_startService() { - // Make sure no TrackRecordingService - Intent stopIntent = new Intent(context, TrackRecordingService.class); - context.stopService(stopIntent); - Assert.assertFalse(isServiceExisted(context)); - - BootReceiver bootReceiver = new BootReceiver(); - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_BOOT_COMPLETED); - bootReceiver.onReceive(context, intent); - // Check if the service is started - Assert.assertFalse(isServiceExisted(context)); - } - - /** - * Tests the behavior when receive notification which is not the phone boot. - */ - @Test - public void testOnReceive_noStartService() { - // Make sure no TrackRecordingService - Intent stopIntent = new Intent(context, TrackRecordingService.class); - context.stopService(stopIntent); - Assert.assertFalse(isServiceExisted(context)); - - BootReceiver bootReceiver = new BootReceiver(); - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_BUG_REPORT); - bootReceiver.onReceive(context, intent); - - // Check if the service is not started - Assert.assertFalse(isServiceExisted(context)); - } - - /** - * Checks if a service is started in a context. - * - * @param context the context for checking a service - */ - private boolean isServiceExisted(Context context) { - ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - Assert.assertNotNull(activityManager); - - List serviceList = activityManager.getRunningServices(Integer.MAX_VALUE); - - for (int i = 0; i < serviceList.size(); i++) { - RunningServiceInfo serviceInfo = serviceList.get(i); - ComponentName componentName = serviceInfo.service; - if (componentName.getClassName().equals(SERVICE_NAME)) { - return true; - } - } - return false; - } -} \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index 0e7e6c423..00f752031 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -71,17 +71,12 @@ public class TrackRecordingServiceTest { private Context context = ApplicationProvider.getApplicationContext(); private ContentProviderUtils providerUtils; - private long trackId = Math.abs(new Random().nextLong()); + private final long trackId = Math.abs(new Random().nextLong()); static Intent createStartIntent(Context context) { return new Intent(context, TrackRecordingService.class); } - static void updateAutoResumePrefs(Context context, int attempts, int timeoutMins) { - PreferencesUtils.setInt(context, R.string.auto_resume_track_current_retry_key, attempts); - PreferencesUtils.setString(context, R.string.auto_resume_track_timeout_key, "" + timeoutMins); - } - @Before public void setUp() { // Set up the mock content resolver @@ -95,9 +90,6 @@ public class TrackRecordingServiceTest { SharedPreferences sharedPreferences = PreferencesUtils.getSharedPreferences(context); sharedPreferences.edit().clear().apply(); - // Disable auto resume by default. - updateAutoResumePrefs(context, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT, 0); - // Ensure that the database is empty before every test providerUtils.deleteAllTracks(context); } @@ -128,124 +120,6 @@ public class TrackRecordingServiceTest { Assert.assertNotNull(service); } - @MediumTest - @Test - public void testResumeAfterReboot_shouldResume() throws Exception { - // Insert a dummy track and mark it as recording track. - createDummyTrack(trackId, System.currentTimeMillis(), true); - - // Clear the number of attempts and set the timeout to 10 min. - updateAutoResumePrefs(context, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT, Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_default))); - - // Start the service in "resume" mode (simulates the on-reboot action). - Intent startIntent = createStartIntent(context); - startIntent.putExtra(TrackRecordingService.RESUME_TRACK_EXTRA_NAME, true); - mServiceRule.startService(startIntent); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(startIntent)); - - // then - Assert.assertNotNull(service); - - // We expect to resume the previous track. - Assert.assertTrue(service.isRecording()); - Assert.assertEquals(trackId, service.getRecordingTrackId()); - } - - @MediumTest - @Test - public void testResumeAfterReboot_simulateReboot() throws Exception { - updateAutoResumePrefs(context, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT, Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_default))); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); - Assert.assertFalse(service.isRecording()); - - // Simulate recording a track. - long id = service.startNewTrack(); - Assert.assertTrue(service.isRecording()); - Assert.assertEquals(id, service.getRecordingTrackId()); - mServiceRule.unbindService(); - Assert.assertEquals(id, PreferencesUtils.getRecordingTrackId(context)); - - // Start the service in "resume" mode (simulates the on-reboot action). - - Intent startIntent = createStartIntent(context); - startIntent.putExtra(TrackRecordingService.RESUME_TRACK_EXTRA_NAME, true); - mServiceRule.startService(startIntent); - service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); - - // then - Assert.assertNotNull(service); - Assert.assertTrue(service.isRecording()); - } - - @MediumTest - @Test - public void testResumeAfterReboot_noRecordingTrack() throws Exception { - // Insert a dummy track and mark it as recording track. - createDummyTrack(trackId, System.currentTimeMillis(), false); - - // Clear the number of attempts and set the timeout to 10 min. - updateAutoResumePrefs(context, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT, Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_default))); - - // Start the service in "resume" mode (simulates the on-reboot action). - Intent startIntent = createStartIntent(context); - startIntent.putExtra(TrackRecordingService.RESUME_TRACK_EXTRA_NAME, true); - mServiceRule.startService(startIntent); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(startIntent)); - - // then - Assert.assertNotNull(service); - - // We don't expect to resume the previous track, because it was stopped. - Assert.assertFalse(service.isRecording()); - Assert.assertEquals(-1L, service.getRecordingTrackId()); - } - - @MediumTest - @Test - public void testResumeAfterReboot_expiredTrack() throws Exception { - // Insert a dummy track last updated 20 min ago. - createDummyTrack(trackId, System.currentTimeMillis() - 1500 * 60 * 1000, true); - - // Clear the number of attempts and set the timeout to 10 min. - updateAutoResumePrefs(context, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT, Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_default))); - - // Start the service in "resume" mode (simulates the on-reboot action). - Intent startIntent = createStartIntent(context); - startIntent.putExtra(TrackRecordingService.RESUME_TRACK_EXTRA_NAME, true); - mServiceRule.startService(startIntent); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(startIntent)); - - // then - Assert.assertNotNull(service); - - // We don't expect to resume the previous track, because it has expired. - Assert.assertFalse(service.isRecording()); - Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId()); - } - - @MediumTest - @Test - public void testResumeAfterReboot_tooManyAttempts() throws Exception { - // Insert a dummy track. - createDummyTrack(trackId, System.currentTimeMillis(), true); - - // Set the number of attempts to max. - updateAutoResumePrefs(context, TrackRecordingService.MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS, Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_default))); - - // Start the service in "resume" mode (simulates the on-reboot action). - Intent startIntent = createStartIntent(context); - startIntent.putExtra(TrackRecordingService.RESUME_TRACK_EXTRA_NAME, true); - mServiceRule.startService(startIntent); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(startIntent)); - - //then - Assert.assertNotNull(service); - - // We don't expect to resume the previous track, because there were already too many attempts. - Assert.assertFalse(service.isRecording()); - Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, service.getRecordingTrackId()); - } - @MediumTest @Test public void testRecording_noTracks() throws Exception { @@ -289,16 +163,18 @@ public class TrackRecordingServiceTest { @MediumTest @Test public void testStartNewTrack_alreadyRecording() throws Exception { - createDummyTrack(trackId, -1L, true); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); + service.startNewTrack(); Assert.assertTrue(service.isRecording()); + long trackId = service.getRecordingTrackId(); long newTrackId = service.startNewTrack(); Assert.assertEquals(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, newTrackId); Assert.assertEquals(trackId, PreferencesUtils.getRecordingTrackId(context)); Assert.assertEquals(trackId, service.getRecordingTrackId()); + + service.endCurrentTrack(); } @MediumTest @@ -316,6 +192,7 @@ public class TrackRecordingServiceTest { @MediumTest @Test + @Deprecated public void testInsertStatisticsMarker_noRecordingTrack() throws Exception { ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); Assert.assertFalse(service.isRecording()); @@ -324,34 +201,7 @@ public class TrackRecordingServiceTest { Assert.assertEquals(-1L, waypointId); } - @MediumTest - @Test - public void testInsertStatisticsMarker_validLocation() throws Exception { - createDummyTrack(trackId, -1L, true); - - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); - Assert.assertTrue(service.isRecording()); - Assert.assertFalse(service.isPaused()); - insertLocation(service); - - long waypointId1 = service.insertWaypoint(WaypointCreationRequest.DEFAULT_STATISTICS); - Assert.assertNotEquals(-1L, waypointId1); - long waypointId2 = service.insertWaypoint(WaypointCreationRequest.DEFAULT_STATISTICS); - Assert.assertNotEquals(-1L, waypointId2); - - Waypoint wpt = providerUtils.getWaypoint(waypointId1); - Assert.assertEquals(context.getString(R.string.marker_statistics_icon_url), wpt.getIcon()); - Assert.assertEquals(context.getString(R.string.marker_split_name_format, 0), wpt.getName()); - Assert.assertEquals(WaypointType.STATISTICS, wpt.getType()); - Assert.assertEquals(trackId, wpt.getTrackId()); - Assert.assertEquals(0.0, wpt.getLength(), 0.01); - Assert.assertNotNull(wpt.getLocation()); - Assert.assertNotNull(wpt.getTripStatistics()); - // TODO check the rest of the params. - - // TODO: Check waypoint 2. - } - + // NOTE: Do not use to create a track that is currently recording. private void createDummyTrack(long id, long stopTime, boolean isRecording) { Track dummyTrack = new Track(); dummyTrack.setId(id); @@ -399,12 +249,12 @@ public class TrackRecordingServiceTest { @MediumTest @Test public void testInsertWaypointMarker_validWaypoint() throws Exception { - createDummyTrack(trackId, -1L, true); - ITrackRecordingService service = ((ITrackRecordingService) mServiceRule.bindService(createStartIntent(context))); + service.startNewTrack(); Assert.assertTrue(service.isRecording()); insertLocation(service); + long trackId = service.getRecordingTrackId(); long waypointId = service.insertWaypoint(WaypointCreationRequest.DEFAULT_WAYPOINT); Assert.assertNotEquals(-1L, waypointId); Waypoint wpt = providerUtils.getWaypoint(waypointId); @@ -415,5 +265,7 @@ public class TrackRecordingServiceTest { Assert.assertEquals(0.0, wpt.getLength(), 0.01); Assert.assertNotNull(wpt.getLocation()); Assert.assertNull(wpt.getTripStatistics()); + + service.endCurrentTrack(); } } diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index 2289cf17f..8d583ea9a 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -74,9 +74,6 @@ public class TrackRecordingServiceTestLooper { SharedPreferences sharedPreferences = PreferencesUtils.getSharedPreferences(context); sharedPreferences.edit().clear().apply(); - // Disable auto resume by default. - TrackRecordingServiceTest.updateAutoResumePrefs(context, PreferencesUtils.AUTO_RESUME_TRACK_CURRENT_RETRY_DEFAULT, 0); - // Ensure that the database is empty before every test providerUtils.deleteAllTracks(context); } diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 28defbcf4..778523475 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -101,7 +101,6 @@ limitations under the License. - - - - - - - - - - diff --git a/src/main/java/de/dennisguse/opentracks/BootReceiver.java b/src/main/java/de/dennisguse/opentracks/BootReceiver.java deleted file mode 100644 index 7728d8bfb..000000000 --- a/src/main/java/de/dennisguse/opentracks/BootReceiver.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2010 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package de.dennisguse.opentracks; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; - -import de.dennisguse.opentracks.services.TrackRecordingService; - -import static android.content.Intent.ACTION_BOOT_COMPLETED; - -/** - * This class react to the BOOT_COMPLETED broadcast. - *

- * One example of a broadcast message that this class is interested in, - * is notification about the phone boot. We may want to resume a previously - * started tracking session if the phone crashed (hopefully not), or the user - * decided to swap the battery or some external event occurred which forced - * a phone reboot. - *

- * This class simply delegates to {@link TrackRecordingService} to make a - * decision whether to continue with the previous track (if any), or just - * abandon it. - * - * @author Bartlomiej Niechwiej - */ -public class BootReceiver extends BroadcastReceiver { - - private static final String TAG = BootReceiver.class.getSimpleName(); - - @Override - public void onReceive(Context context, Intent intent) { - Log.d(TAG, "BootReceiver.onReceive: " + intent.getAction()); - if (ACTION_BOOT_COMPLETED.equals(intent.getAction())) { - Intent startIntent = new Intent(context, TrackRecordingService.class) - .putExtra(TrackRecordingService.RESUME_TRACK_EXTRA_NAME, true); - context.startService(startIntent); - } else { - Log.w(TAG, "BootReceiver: unsupported action"); - } - } -} diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 66161f798..5a6cf9774 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -74,8 +74,6 @@ import de.dennisguse.opentracks.util.UnitConversions; */ public class TrackRecordingService extends Service { - // The name of extra intent property to indicate whether we want to resume a previously recorded track. - public static final String RESUME_TRACK_EXTRA_NAME = "RESUME_TRACK"; private static final int NOTIFICATION_ID = 123; public static final double PAUSE_LATITUDE = 100.0; @@ -83,8 +81,6 @@ public class TrackRecordingService extends Service { // Anything faster than that (in meters per second) will be considered moving. public static final double MAX_NO_MOVEMENT_SPEED = 0.224; - @VisibleForTesting - static final int MAX_AUTO_RESUME_TRACK_RETRY_ATTEMPTS = 3; private static final String TAG = TrackRecordingService.class.getSimpleName(); // 1 minute in milliseconds private static final long ONE_MINUTE = (long) (UnitConversions.MIN_TO_S * UnitConversions.S_TO_MS); @@ -102,7 +98,6 @@ public class TrackRecordingService extends Service { private int recordingDistanceInterval; private int maxRecordingDistance; private int recordingGpsAccuracy; - private int autoResumeTrackTimeout; private long currentRecordingInterval; // The following variables are set when recording: @@ -149,11 +144,10 @@ public class TrackRecordingService extends Service { if (PreferencesUtils.isKey(context, R.string.recording_gps_accuracy_key, key)) { recordingGpsAccuracy = PreferencesUtils.getRecordingGPSAccuracy(context); } - if (PreferencesUtils.isKey(context, R.string.auto_resume_track_timeout_key, key)) { - autoResumeTrackTimeout = PreferencesUtils.getAutoResumeTrackTimeout(context); - } } }; + + @Deprecated //TODO Should be unused private TripStatisticsUpdater markerTripStatisticsUpdater; private WakeLock wakeLock; private BluetoothRemoteSensorManager remoteSensorManager; @@ -240,7 +234,6 @@ public class TrackRecordingService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { - handleStartCommand(intent, startId); return START_STICKY; } @@ -384,58 +377,6 @@ public class TrackRecordingService extends Service { return Long.parseLong(uri.getLastPathSegment()); } - /** - * Handles start command. - * - * @param intent the intent - * @param startId the start id - */ - private void handleStartCommand(Intent intent, int startId) { - // Check if the service is called to resume track (from phone reboot) - boolean resumeTrackRequested = intent.getBooleanExtra(RESUME_TRACK_EXTRA_NAME, false); - if (resumeTrackRequested && !shouldResumeTrack()) { - Log.i(TAG, "Stop resume track."); - updateRecordingState(PreferencesUtils.RECORDING_TRACK_ID_DEFAULT, true); - stopSelfResult(startId); - } - } - - /** - * Returns true if should resume. - */ - private boolean shouldResumeTrack() { - Track track = contentProviderUtils.getTrack(recordingTrackId); - - if (track == null) { - Log.d(TAG, "Not resuming. Track is null."); - return false; - } - - 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.incrementAutoResumeTrackCurrentRetryDefault(this); - - if (autoResumeTrackTimeout == Integer.parseInt(getResources().getString(R.string.auto_resume_track_timeout_never))) { - Log.d(TAG, "Not resuming. Auto-resume track timeout set to never."); - return false; - } - - if (autoResumeTrackTimeout == Integer.parseInt(getResources().getString(R.string.auto_resume_track_timeout_always))) { - Log.d(TAG, "Resuming. Auto-resume track timeout set to always."); - return true; - } - - if (track.getTripStatistics() == null) { - Log.d(TAG, "Not resuming. No trip statistics."); - return false; - } - long stopTime = track.getTripStatistics().getStopTime(); - return stopTime > 0 && (System.currentTimeMillis() - stopTime) <= autoResumeTrackTimeout * ONE_MINUTE; - } - /** * Starts a new track. * @@ -457,7 +398,6 @@ public class TrackRecordingService extends Service { // Update shared preferences updateRecordingState(trackId, false); - PreferencesUtils.resetAutoResumeTrackCurrentRetryDefault(this); // Update database track.setId(trackId); diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java b/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java index d5a587fc4..e1b0c7cd1 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java +++ b/src/main/java/de/dennisguse/opentracks/settings/PreferenceHelper.java @@ -142,22 +142,4 @@ final class PreferenceHelper { return entries; } - - static String[] getAutoResumeTrackTimeoutEntries(Context context) { - String[] entryValues = context.getResources().getStringArray(R.array.auto_resume_track_timeout_values); - String[] entries = new String[entryValues.length]; - - for (int i = 0; i < entryValues.length; i++) { - int value = Integer.parseInt(entryValues[i]); - if (value == Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_never))) { - entries[i] = context.getString(R.string.value_never); - } else if (value == Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_always))) { - entries[i] = context.getString(R.string.value_always); - } else { - entries[i] = context.getString(R.string.value_integer_minute, value); - } - } - - return entries; - } } diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java index 2ed749111..6d5af78bd 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java @@ -165,9 +165,6 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit ListPreference recordingGpsAccuracy = findPreference(getString(R.string.recording_gps_accuracy_key)); recordingGpsAccuracy.setEntries(PreferenceHelper.getRecordingGpsAccuracyEntries(getActivity(), metricUnits)); - ListPreference autoresumeTrack = findPreference(getString(R.string.auto_resume_track_timeout_key)); - autoresumeTrack.setEntries(PreferenceHelper.getAutoResumeTrackTimeoutEntries(getActivity())); - ListPreference statsRatePreferences = findPreference(getString(R.string.stats_rate_key)); String[] entries = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options); statsRatePreferences.setEntries(entries); diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index 2f5c3c9a8..6f050d21d 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -20,7 +20,6 @@ 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; @@ -41,29 +40,13 @@ public class PreferencesUtils { @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. + //NOTE: This was 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 String getDefaultActivity(Context context) { return PreferencesUtils.getString(context, R.string.default_activity_key, context.getString(R.string.default_activity_default)); } @@ -86,7 +69,7 @@ public class PreferencesUtils { * Compares if keyId and key belong to the same shared preference key. * * @param keyId The resource id of the key - * @param key The key of the preference + * @param key The key of the preference * @return true if key == null or key belongs to keyId */ public static boolean isKey(Context context, int keyId, String key) { @@ -209,33 +192,16 @@ public class PreferencesUtils { editor.apply(); } - /** - * Returns true if metric units. - * - * @param context the context - */ public static boolean isMetricUnits(Context context) { final String STATS_UNIT = context.getString(R.string.stats_units_default); return STATS_UNIT.equals(getString(context, R.string.stats_units_key, STATS_UNIT)); } - /** - * Returns true if the preferred rate is speed, false if the preferred rate is - * pace. - * - * @param context the context - */ public static boolean isReportSpeed(Context context) { final String STATS_RATE_DEFAULT = context.getString(R.string.stats_rate_default); return STATS_RATE_DEFAULT.equals(getString(context, R.string.stats_rate_key, STATS_RATE_DEFAULT)); } - public static int getAutoResumeTrackTimeout(Context context) { - final int AUTO_RESUME_TRACK_TIMEOUT = Integer.parseInt(context.getResources().getString(R.string.auto_resume_track_timeout_default)); - return PreferencesUtils.getInt(context, R.string.auto_resume_track_timeout_key, AUTO_RESUME_TRACK_TIMEOUT); - } - - public static boolean isRecordingTrackPaused(Context context) { return PreferencesUtils.getBoolean(context, R.string.recording_track_paused_key, isRecordingTrackPausedDefault(context)); } @@ -321,9 +287,6 @@ public class PreferencesUtils { } - - - public static int getRecordingGPSAccuracy(Context context) { final int RECORDING_GPS_ACCURACY = Integer.parseInt(context.getResources().getString(R.string.recording_gps_accuracy_default)); return PreferencesUtils.getInt(context, R.string.recording_gps_accuracy_key, RECORDING_GPS_ACCURACY); diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml index 783b49575..3b9ed1f43 100644 --- a/src/main/res/values/settings.xml +++ b/src/main/res/values/settings.xml @@ -90,18 +90,6 @@ @string/activity_type_wind_surfing - autoResumeTrackTimeout - 10 - -1 - 0 - - @string/auto_resume_track_timeout_never - 5 - @string/auto_resume_track_timeout_default - 15 - @string/auto_resume_track_timeout_always - - recordingDistanceInterval 10 diff --git a/src/main/res/values/settings_deprecated.xml b/src/main/res/values/settings_deprecated.xml index f807544fd..f2ae29e34 100644 --- a/src/main/res/values/settings_deprecated.xml +++ b/src/main/res/values/settings_deprecated.xml @@ -52,4 +52,16 @@ chartShowSpeed true + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml index 71da7e35f..20a952346 100644 --- a/src/main/res/xml/settings.xml +++ b/src/main/res/xml/settings.xml @@ -101,13 +101,6 @@ limitations under the License. android:key="@string/recording_gps_accuracy_key" android:title="@string/settings_recording_min_required_accuracy_title" app:useSimpleSummaryProvider="true" /> -