diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java index b0d4a782f..3a50906f0 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -415,7 +415,7 @@ public class CustomContentProviderUtilsTest { /** * Tests the method - * {@link ContentProviderUtils#deleteWaypoint(Context, long)} + * {@link ContentProviderUtils#deleteWaypoint(long)} * when there is only one waypoint in the track. */ @Test @@ -431,14 +431,14 @@ public class CustomContentProviderUtilsTest { contentProviderUtils.insertWaypoint(waypoint1); // Delete - contentProviderUtils.deleteWaypoint(context, 1); + contentProviderUtils.deleteWaypoint(1); Assert.assertNull(contentProviderUtils.getWaypoint(1)); } /** * Tests the method - * {@link ContentProviderUtils#deleteWaypoint(Context, long)} + * {@link ContentProviderUtils#deleteWaypoint(long)} * when there is more than one waypoint in the track. */ @Test @@ -476,7 +476,7 @@ public class CustomContentProviderUtilsTest { // Delete Assert.assertNotNull(contentProviderUtils.getWaypoint(waypoint1Id)); - contentProviderUtils.deleteWaypoint(context, waypoint1Id); + contentProviderUtils.deleteWaypoint(waypoint1Id); Assert.assertNull(contentProviderUtils.getWaypoint(waypoint1Id)); Assert.assertEquals(MOCK_DESC, contentProviderUtils.getWaypoint(waypoint2Id).getDescription()); @@ -507,32 +507,6 @@ public class CustomContentProviderUtilsTest { Assert.assertEquals(4, contentProviderUtils.getNextWaypointNumber(trackId)); } - /** - * Tests the method - * {@link ContentProviderUtils#getLastWaypoint(long)}. - */ - @Test - public void testGetLastWaypoint() { - long trackId = System.currentTimeMillis(); - Track track = TestDataUtil.getTrack(trackId, 10); - contentProviderUtils.insertTrack(track); - - Waypoint waypoint1 = new Waypoint(); - waypoint1.setTrackId(trackId); - waypoint1.setDescription("Desc1"); - Waypoint waypoint2 = new Waypoint(); - waypoint2.setTrackId(trackId); - waypoint2.setDescription("Desc2"); - Waypoint waypoint3 = new Waypoint(); - waypoint3.setTrackId(trackId); - waypoint3.setDescription("Desc3"); - contentProviderUtils.insertWaypoint(waypoint1); - contentProviderUtils.insertWaypoint(waypoint2); - contentProviderUtils.insertWaypoint(waypoint3); - - Assert.assertEquals("Desc3", contentProviderUtils.getLastWaypoint(trackId).getDescription()); - } - /** * Tests the method {@link ContentProviderUtils#insertWaypoint(Waypoint)} and * {@link ContentProviderUtils#getWaypoint(long)}. diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index cc840b7b0..a604f3dea 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -47,7 +47,7 @@ public class TrackRecordingServiceTestLooper { private Context context = ApplicationProvider.getApplicationContext(); - private ContentProviderUtils providerUtils; + private ContentProviderUtils contentProviderUtils; @BeforeClass public static void preSetUp() { @@ -67,14 +67,14 @@ public class TrackRecordingServiceTestLooper { }; customContentProvider.attachInfo(context, null); - providerUtils = new ContentProviderUtils(context); + contentProviderUtils = new ContentProviderUtils(context); // Let's use default values. SharedPreferences sharedPreferences = PreferencesUtils.getSharedPreferences(context); sharedPreferences.edit().clear().apply(); // Ensure that the database is empty before every test - providerUtils.deleteAllTracks(context); + contentProviderUtils.deleteAllTracks(context); } @After @@ -86,7 +86,7 @@ public class TrackRecordingServiceTestLooper { } // Ensure that the database is empty after every test - providerUtils.deleteAllTracks(context); + contentProviderUtils.deleteAllTracks(context); } @MediumTest @@ -186,7 +186,7 @@ public class TrackRecordingServiceTestLooper { @MediumTest @Test public void testIntegration_completeRecordingSession() throws TimeoutException { - List tracks = providerUtils.getAllTracks(); + List tracks = contentProviderUtils.getAllTracks(); Assert.assertTrue(tracks.isEmpty()); fullRecordingSession(); } @@ -199,7 +199,7 @@ public class TrackRecordingServiceTestLooper { long id = service.startNewTrack(); Assert.assertTrue(id >= 0); Assert.assertTrue(service.isRecording()); - Track track = providerUtils.getTrack(id); + Track track = contentProviderUtils.getTrack(id); Assert.assertNotNull(track); Assert.assertEquals(id, track.getId()); Assert.assertEquals(id, PreferencesUtils.getRecordingTrackId(context)); @@ -226,7 +226,7 @@ public class TrackRecordingServiceTestLooper { service.endCurrentTrack(); Assert.assertFalse(service.isRecording()); Assert.assertEquals(-1L, service.getRecordingTrackId()); - track = providerUtils.getTrack(id); + track = contentProviderUtils.getTrack(id); Assert.assertNotNull(track); Assert.assertEquals(id, track.getId()); TripStatistics tripStatistics = track.getTripStatistics(); diff --git a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java index 8701d43b2..6d87d44b8 100644 --- a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java @@ -99,7 +99,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker // UI elements private ListView listView; // Callback when an item is selected in the contextual action mode - private ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() { + private final ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() { @Override public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) { boolean isSingleSelection = ids.length == 1; diff --git a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java index b4068d5dd..0172fd70c 100644 --- a/src/main/java/de/dennisguse/opentracks/SearchListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/SearchListActivity.java @@ -104,7 +104,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa private boolean recordingTrackPaused; // Callback when an item is selected in the contextual action mode - private ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() { + private final ContextualActionModeCallback contextualActionModeCallback = new ContextualActionModeCallback() { @Override public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) { boolean isRecording = PreferencesUtils.isRecording(recordingTrackId); diff --git a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java index 7a10e41a5..8697ce3ef 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDetailActivity.java @@ -195,7 +195,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA sharedPreferences = PreferencesUtils.getSharedPreferences(this); trackRecordingServiceConnection = new TrackRecordingServiceConnection(this, bindChangedCallback); - trackDataHub = TrackDataHub.newInstance(this); + trackDataHub = new TrackDataHub(this); FragmentPagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager(), 1) { @Override diff --git a/src/main/java/de/dennisguse/opentracks/android/ContentResolverWrapper.java b/src/main/java/de/dennisguse/opentracks/android/ContentResolverWrapper.java index 3a71bf0bc..8bf14f1cc 100644 --- a/src/main/java/de/dennisguse/opentracks/android/ContentResolverWrapper.java +++ b/src/main/java/de/dennisguse/opentracks/android/ContentResolverWrapper.java @@ -13,7 +13,7 @@ import androidx.annotation.Nullable; */ public class ContentResolverWrapper implements IContentResolver { - private ContentResolver contentResolver; + private final ContentResolver contentResolver; public ContentResolverWrapper(ContentResolver contentResolver) { this.contentResolver = contentResolver; diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartView.java b/src/main/java/de/dennisguse/opentracks/chart/ChartView.java index b90b12d2f..d8692ee4e 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartView.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartView.java @@ -122,7 +122,7 @@ public class ChartView extends View { private boolean reportSpeed = true; private boolean showPointer = false; - private GestureDetectorCompat detectorScrollFlingTab = new GestureDetectorCompat(getContext(), new GestureDetector.SimpleOnGestureListener() { + private final GestureDetectorCompat detectorScrollFlingTab = new GestureDetectorCompat(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onDown(MotionEvent e) { @@ -176,7 +176,7 @@ public class ChartView extends View { } }); - private ScaleGestureDetector detectorZoom = new ScaleGestureDetector(getContext(), new ScaleGestureDetector.SimpleOnScaleGestureListener() { + private final ScaleGestureDetector detectorZoom = new ScaleGestureDetector(getContext(), new ScaleGestureDetector.SimpleOnScaleGestureListener() { @Override public boolean onScale(ScaleGestureDetector detector) { diff --git a/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java b/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java index 4d1446493..6eaaf6d59 100644 --- a/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java +++ b/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java @@ -39,7 +39,7 @@ public class DescriptionGenerator { private static final String TEXT_LINE_BREAK = "\n"; private static final String TEXT_PARAGRAPH_SEPARATOR = "\n\n"; - private Context context; + private final Context context; public DescriptionGenerator(Context context) { this.context = context; diff --git a/src/main/java/de/dennisguse/opentracks/content/SearchEngine.java b/src/main/java/de/dennisguse/opentracks/content/SearchEngine.java index 3aee29176..1f7e96a29 100644 --- a/src/main/java/de/dennisguse/opentracks/content/SearchEngine.java +++ b/src/main/java/de/dennisguse/opentracks/content/SearchEngine.java @@ -106,7 +106,7 @@ public class SearchEngine { public static final long OLDEST_ALLOWED_TIMESTAMP = 946692000000L; /** - * Comparador for scored results. + * Comparator for scored results. */ private static final Comparator SCORED_RESULT_COMPARATOR = new Comparator() { @Override diff --git a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java index 988e92c87..5f600ddaa 100644 --- a/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java +++ b/src/main/java/de/dennisguse/opentracks/content/TrackDataHub.java @@ -45,10 +45,6 @@ import de.dennisguse.opentracks.util.PreferencesUtils; */ public class TrackDataHub implements DataSourceListener { - public synchronized static TrackDataHub newInstance(Context context) { - return new TrackDataHub(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACK_POINTS); - } - /** * Target number of track points displayed by the map overlay. * We may display more than this number of points. @@ -90,14 +86,10 @@ public class TrackDataHub implements DataSourceListener { private long firstSeenLocationId; private long lastSeenLocationId; - /** - * Constructor. - * - * @param context the context - * @param trackDataManager the track data manager - * @param contentProviderUtils the content tracks provider utils - * @param targetNumPoints the target number of points - */ + public TrackDataHub(Context context) { + this(context, new TrackDataManager(), new ContentProviderUtils(context), TARGET_DISPLAYED_TRACK_POINTS); + } + @VisibleForTesting private TrackDataHub(Context context, TrackDataManager trackDataManager, ContentProviderUtils contentProviderUtils, int targetNumPoints) { this.context = context; diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Track.java b/src/main/java/de/dennisguse/opentracks/content/data/Track.java index c18ff745a..516e9cfa5 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/Track.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/Track.java @@ -18,6 +18,8 @@ package de.dennisguse.opentracks.content.data; import android.location.Location; +import androidx.annotation.VisibleForTesting; + import java.util.ArrayList; import java.util.List; @@ -106,6 +108,7 @@ public class Track { this.tripStatistics = tripStatistics; } + @VisibleForTesting public void addLocation(Location location) { locations.add(location); } diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java b/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java new file mode 100644 index 000000000..73d6bff13 --- /dev/null +++ b/src/main/java/de/dennisguse/opentracks/content/provider/CachedTrackPointsIndexes.java @@ -0,0 +1,36 @@ +package de.dennisguse.opentracks.content.provider; + +import android.database.Cursor; + +import de.dennisguse.opentracks.content.data.TrackPointsColumns; + +/** + * A cache of track points indexes. + */ +class CachedTrackPointsIndexes { + final int idIndex; + final int longitudeIndex; + final int latitudeIndex; + final int timeIndex; + final int altitudeIndex; + final int accuracyIndex; + final int speedIndex; + final int bearingIndex; + final int sensorHeartRateIndex; + final int sensorCadenceIndex; + final int sensorPowerIndex; + + CachedTrackPointsIndexes(Cursor cursor) { + idIndex = cursor.getColumnIndex(TrackPointsColumns._ID); + longitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE); + latitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE); + timeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.TIME); + altitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE); + accuracyIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ACCURACY); + speedIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SPEED); + bearingIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.BEARING); + sensorHeartRateIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE); + sensorCadenceIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_CADENCE); + sensorPowerIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_POWER); + } +} diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java index a12297fb8..7edc4d1af 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -57,17 +57,17 @@ public class ContentProviderUtils { /** * The authority (the first part of the URI) for the app's content provider. */ - static String AUTHORITY_PACKAGE = BuildConfig.APPLICATION_ID + ".content"; + static final String AUTHORITY_PACKAGE = BuildConfig.APPLICATION_ID + ".content"; /** * The base URI for the app's content provider. */ - public static String CONTENT_BASE_URI = "content://" + AUTHORITY_PACKAGE; + public static final String CONTENT_BASE_URI = "content://" + AUTHORITY_PACKAGE; /** * Maximum number of waypoints that will be loaded at one time. */ - public static int MAX_LOADED_WAYPOINTS_POINTS = 10000; + public static final int MAX_LOADED_WAYPOINTS_POINTS = 10000; private final IContentResolver contentResolver; private int defaultCursorBatchSize = 2000; @@ -107,8 +107,6 @@ public class ContentProviderUtils { int nameIndex = cursor.getColumnIndexOrThrow(TracksColumns.NAME); int descriptionIndex = cursor.getColumnIndexOrThrow(TracksColumns.DESCRIPTION); int categoryIndex = cursor.getColumnIndexOrThrow(TracksColumns.CATEGORY); - int startIdIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTID); - int stopIdIndex = cursor.getColumnIndexOrThrow(TracksColumns.STOPID); int startTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTTIME); int stopTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STOPTIME); int numPointsIndex = cursor.getColumnIndexOrThrow(TracksColumns.NUMPOINTS); @@ -240,9 +238,10 @@ public class ContentProviderUtils { * If no track exists, an empty list is returned. * NOTE: the returned tracks do not have any track points attached. */ + @VisibleForTesting public List getAllTracks() { ArrayList tracks = new ArrayList<>(); - try (Cursor cursor = getTrackCursor(null, null, null, TracksColumns._ID)) { + try (Cursor cursor = getTrackCursor(null, null, TracksColumns._ID)) { if (cursor != null && cursor.moveToFirst()) { tracks.ensureCapacity(cursor.getCount()); do { @@ -257,7 +256,7 @@ public class ContentProviderUtils { * Gets the last track or null. */ public Track getLastTrack() { - try (Cursor cursor = getTrackCursor(null, null, null, TracksColumns.STARTTIME + " DESC")) { + try (Cursor cursor = getTrackCursor(null, null, TracksColumns.STARTTIME + " DESC")) { // Using the same order as shown in the track list if (cursor != null && cursor.moveToNext()) { return createTrack(cursor); @@ -276,7 +275,7 @@ public class ContentProviderUtils { if (trackId < 0) { return null; } - try (Cursor cursor = getTrackCursor(null, TracksColumns._ID + "=?", new String[]{Long.toString(trackId)}, TracksColumns._ID)) { + try (Cursor cursor = getTrackCursor(TracksColumns._ID + "=?", new String[]{Long.toString(trackId)}, TracksColumns._ID)) { if (cursor != null && cursor.moveToNext()) { return createTrack(cursor); } @@ -293,7 +292,7 @@ public class ContentProviderUtils { * @param sortOrder the sort order. Can be null */ public Cursor getTrackCursor(String selection, String[] selectionArgs, String sortOrder) { - return getTrackCursor(null, selection, selectionArgs, sortOrder); + return contentResolver.query(TracksColumns.CONTENT_URI, null, selection, selectionArgs, sortOrder); } /** @@ -348,17 +347,6 @@ public class ContentProviderUtils { return values; } - /** - * Gets a track cursor. - * - * @param projection the projection - * @param selection the selection - * @param selectionArgs the selection arguments - * @param sortOrder the sort oder - */ - private Cursor getTrackCursor(String[] projection, String selection, String[] selectionArgs, String sortOrder) { - return contentResolver.query(TracksColumns.CONTENT_URI, projection, selection, selectionArgs, sortOrder); - } /** * Creates a waypoint from a cursor. @@ -446,7 +434,7 @@ public class ContentProviderUtils { * @param waypointId the waypoint id */ - public void deleteWaypoint(Context context, long waypointId) { + public void deleteWaypoint(long waypointId) { final Waypoint waypoint = getWaypoint(waypointId); if (waypoint != null && waypoint.hasPhoto()) { Uri uri = waypoint.getPhotoURI(); @@ -462,26 +450,6 @@ public class ContentProviderUtils { contentResolver.delete(WaypointsColumns.CONTENT_URI, WaypointsColumns._ID + "=?", new String[]{Long.toString(waypointId)}); } - /** - * Gets the last waypoint for a type. Returns null if it doesn't exist. - * - * @param trackId the track id - */ - public Waypoint getLastWaypoint(long trackId) { - if (trackId < 0) { - return null; - } - String selection = WaypointsColumns.TRACKID + "=?"; - String[] selectionArgs = new String[]{Long.toString(trackId)}; - try (Cursor cursor = getWaypointCursor(null, selection, selectionArgs, WaypointsColumns._ID + " DESC", 1)) { - - if (cursor != null && cursor.moveToFirst()) { - return createWaypoint(cursor); - } - } - return null; - } - /** * Gets the next waypoint number for a type. * Returns -1 if not able to get the next waypoint number. @@ -974,35 +942,4 @@ public class ContentProviderUtils { void setDefaultCursorBatchSize(int defaultCursorBatchSize) { this.defaultCursorBatchSize = defaultCursorBatchSize; } - - /** - * A cache of track points indexes. - */ - static class CachedTrackPointsIndexes { - final int idIndex; - final int longitudeIndex; - final int latitudeIndex; - final int timeIndex; - final int altitudeIndex; - final int accuracyIndex; - final int speedIndex; - final int bearingIndex; - final int sensorHeartRateIndex; - final int sensorCadenceIndex; - final int sensorPowerIndex; - - CachedTrackPointsIndexes(Cursor cursor) { - idIndex = cursor.getColumnIndex(TrackPointsColumns._ID); - longitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LONGITUDE); - latitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.LATITUDE); - timeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.TIME); - altitudeIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALTITUDE); - accuracyIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.ACCURACY); - speedIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SPEED); - bearingIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.BEARING); - sensorHeartRateIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_HEARTRATE); - sensorCadenceIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_CADENCE); - sensorPowerIndex = cursor.getColumnIndexOrThrow(TrackPointsColumns.SENSOR_POWER); - } - } } diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/CustomContentProvider.java b/src/main/java/de/dennisguse/opentracks/content/provider/CustomContentProvider.java index fb0737249..eb71ae41d 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/CustomContentProvider.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/CustomContentProvider.java @@ -134,7 +134,6 @@ public abstract class CustomContentProvider extends ContentProvider { case TRACKPOINTS: return TrackPointsColumns.CONTENT_TYPE; case TRACKPOINTS_BY_ID: - return TrackPointsColumns.CONTENT_ITEMTYPE; case TRACKPOINTS_BY_TRACKID: return TrackPointsColumns.CONTENT_ITEMTYPE; case TRACKS: diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointFactory.java b/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointFactory.java index cb272d45e..19ad1ff6b 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointFactory.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointFactory.java @@ -13,7 +13,7 @@ public class TrackPointFactory { /** * The default {@link TrackPointFactory} which creates a location each time. */ - public static TrackPointFactory DEFAULT_LOCATION_FACTORY = new TrackPointFactory(); + public static final TrackPointFactory DEFAULT_LOCATION_FACTORY = new TrackPointFactory(); public TrackPoint createLocation() { return new TrackPoint(LocationManager.GPS_PROVIDER); diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java b/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java index 6d86a8877..37863f70a 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/TrackPointIterator.java @@ -19,7 +19,7 @@ public class TrackPointIterator implements Iterator, AutoCloseable { private final long trackId; private final boolean descending; private final TrackPointFactory trackPointFactory; - private final ContentProviderUtils.CachedTrackPointsIndexes indexes; + private final CachedTrackPointsIndexes indexes; private long lastTrackPointId = -1L; private Cursor cursor; @@ -35,7 +35,7 @@ public class TrackPointIterator implements Iterator, AutoCloseable { this.trackPointFactory = trackPointFactory; cursor = getCursor(startTrackPointId); - indexes = cursor != null ? new ContentProviderUtils.CachedTrackPointsIndexes(cursor) + indexes = cursor != null ? new CachedTrackPointsIndexes(cursor) : null; } diff --git a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorState.java b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorState.java index 5b7a942fb..25da972e1 100644 --- a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorState.java +++ b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorState.java @@ -20,7 +20,6 @@ public enum SensorState { case CONNECTED: return c.getString(R.string.sensor_state_connected); case DISCONNECTING: - return c.getString(R.string.sensor_state_disconnected); case DISCONNECTED: return c.getString(R.string.sensor_state_disconnected); default: diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java index 8a25e532a..801110c6d 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ChartDistanceFragment.java @@ -2,8 +2,6 @@ package de.dennisguse.opentracks.fragments; public class ChartDistanceFragment extends ChartFragment { - public static final String CHART_FRAGMENT_TAG = ChartDistanceFragment.class.getSimpleName(); - public ChartDistanceFragment() { super(true); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java index 98949d450..9b52ea5a3 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ChartFragment.java @@ -73,7 +73,7 @@ public abstract class ChartFragment extends Fragment implements TrackDataListene // Modes of operation private boolean chartByDistance; - private boolean[] chartShow = new boolean[]{true, true, true, true, true, true}; + private final boolean[] chartShow = new boolean[]{true, true, true, true, true, true}; // UI elements private ChartView chartView; diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java index 5641e4ed3..1139e3353 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ChartTimeFragment.java @@ -2,8 +2,6 @@ package de.dennisguse.opentracks.fragments; public class ChartTimeFragment extends ChartFragment { - public static final String CHART_FRAGMENT_TAG = ChartTimeFragment.class.getSimpleName(); - public ChartTimeFragment() { super(false); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeDialogFragment.java index 45841954d..6b578473e 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeDialogFragment.java @@ -39,7 +39,7 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment implements return TrackIconUtils.getAllIconValues().indexOf(iconValue); } - private String preselectedCategory; + private final String preselectedCategory; private ChooseActivityTypeCaller chooseActivityTypeCaller; @@ -71,7 +71,6 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment implements int position = getPosition(getContext(), preselectedCategory); if (position != -1) { imageAdapter.setSelected(position); - imageAdapter.notifyDataSetChanged(); } gridView.setOnItemClickListener(this); diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeImageAdapter.java b/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeImageAdapter.java index ea428c9ca..c6fcb7677 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeImageAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ChooseActivityTypeImageAdapter.java @@ -56,12 +56,9 @@ public class ChooseActivityTypeImageAdapter extends BaseAdapter { return 0; } - public int getSelected() { - return selected; - } - public void setSelected(int position) { selected = position; + notifyDataSetChanged(); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java index 3a1a10a53..6f6b30526 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java @@ -37,7 +37,7 @@ public class ConfirmDeleteDialogFragment extends DialogFragment { private static final String CONFIRM_DELETE_DIALOG_TAG = "confirmDeleteDialog"; private ConfirmDeleteCaller caller; - private long[] trackIds; + private final long[] trackIds; public ConfirmDeleteDialogFragment(long[] trackIds) { this.trackIds = trackIds; diff --git a/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java index eca641d94..ab86d3a9e 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/DeleteMarkerDialogFragment.java @@ -38,7 +38,7 @@ import de.dennisguse.opentracks.util.DialogUtils; public class DeleteMarkerDialogFragment extends DialogFragment { private static final String DELETE_MARKER_DIALOG_TAG = "deleteMarkerDialog"; - private long[] markerIds; + private final long[] markerIds; private DeleteMarkerCaller caller; @@ -82,7 +82,7 @@ public class DeleteMarkerDialogFragment extends DialogFragment { public void run() { ContentProviderUtils contentProviderUtils = new ContentProviderUtils(fragmentActivity); for (long markerId : markerIds) { - contentProviderUtils.deleteWaypoint(fragmentActivity, markerId); + contentProviderUtils.deleteWaypoint(markerId); } caller.onDeleteMarkerDone(); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java index 0852f71f7..59e9649c1 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java @@ -40,10 +40,10 @@ import de.dennisguse.opentracks.io.file.TrackFileFormat; public class FileTypeDialogFragment extends DialogFragment { private static final String FILE_TYPE_DIALOG_TAG = "fileType"; - private int titleId; + private final int titleId; private FileTypeCaller caller; - private int optionId; + private final int optionId; public FileTypeDialogFragment(int titleId, int optionId) { this.titleId = titleId; diff --git a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java index dfb29e6fb..df1e373d2 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/MarkerDetailFragment.java @@ -64,7 +64,7 @@ public class MarkerDetailFragment extends Fragment { private ImageView textGradient; private LinearLayout waypointInfo; private Waypoint waypoint; - private Runnable hideText = new Runnable() { + private final Runnable hideText = new Runnable() { @Override public void run() { Animation animation = AnimationUtils.loadAnimation(getActivity(), R.anim.fadeout); @@ -219,7 +219,7 @@ public class MarkerDetailFragment extends Fragment { photoView.setImageResource(MarkerUtils.ICON_ID); } - setName(R.id.marker_detail_waypoint_name, hasPhoto); + setName(hasPhoto); TextView category = getView().findViewById(R.id.marker_detail_waypoint_category); ListItemUtils.setTextView(getActivity(), category, StringUtils.getCategory(waypoint.getCategory()), hasPhoto); @@ -227,16 +227,16 @@ public class MarkerDetailFragment extends Fragment { TextView description = getView().findViewById(R.id.marker_detail_waypoint_description); ListItemUtils.setTextView(getActivity(), description, waypoint.getDescription(), hasPhoto); - setLocation(R.id.marker_detail_waypoint_location, hasPhoto); + setLocation(hasPhoto); } - private void setName(int resId, boolean addShadow) { - TextView textView = getView().findViewById(resId); + private void setName(boolean addShadow) { + TextView textView = getView().findViewById(R.id.marker_detail_waypoint_name); ListItemUtils.setTextView(getActivity(), textView, waypoint.getName(), addShadow); } - private void setLocation(int resId, boolean addShadow) { - TextView textView = getView().findViewById(resId); + private void setLocation(boolean addShadow) { + TextView textView = getView().findViewById(R.id.marker_detail_waypoint_location); Location location = waypoint.getLocation(); String value; if (location == null) { diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmlTrackWriter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmlTrackWriter.java index 5a2c37c14..be3ba1fa2 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmlTrackWriter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmlTrackWriter.java @@ -65,9 +65,9 @@ public class KmlTrackWriter implements TrackWriter { private final ContentProviderUtils contentProviderUtils; private PrintWriter printWriter; - private List powerList = new ArrayList<>(); - private List cadenceList = new ArrayList<>(); - private List heartRateList = new ArrayList<>(); + private final List powerList = new ArrayList<>(); + private final List cadenceList = new ArrayList<>(); + private final List heartRateList = new ArrayList<>(); private Location startLocation; @@ -164,7 +164,7 @@ public class KmlTrackWriter implements TrackWriter { if (printWriter != null && exportTrackDetail) { if (waypoint.hasPhoto() && exportPhotos) { float heading = getHeading(waypoint.getTrackId(), waypoint.getLocation()); - writePhotoOverlay(waypoint.getName(), waypoint.getCategory(), waypoint.getDescription(), WAYPOINT_STYLE, waypoint.getLocation(), waypoint.getPhotoUrl(), heading); + writePhotoOverlay(waypoint.getName(), waypoint.getCategory(), waypoint.getDescription(), waypoint.getLocation(), waypoint.getPhotoUrl(), heading); } else { writePlacemark(waypoint.getName(), waypoint.getCategory(), waypoint.getDescription(), WAYPOINT_STYLE, waypoint.getLocation()); } @@ -321,16 +321,14 @@ public class KmlTrackWriter implements TrackWriter { /** * Writes a photo overlay. - * - * @param name the name + * @param name the name * @param category the category * @param description the description - * @param styleName the style name * @param location the location * @param photoUrl the photo url * @param heading the heading */ - private void writePhotoOverlay(String name, String category, String description, String styleName, Location location, String photoUrl, float heading) { + private void writePhotoOverlay(String name, String category, String description, Location location, String photoUrl, float heading) { if (location != null && exportTrackDetail) { printWriter.println(""); printWriter.println("" + StringUtils.formatCData(name) + ""); @@ -343,7 +341,7 @@ public class KmlTrackWriter implements TrackWriter { printWriter.print("90"); printWriter.println(""); printWriter.println("" + getTime(location) + ""); - printWriter.println("#" + styleName + ""); + printWriter.println("#" + KmlTrackWriter.WAYPOINT_STYLE + ""); writeCategory(category); if (exportPhotos) { diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmzTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmzTrackExporter.java index 4e45d0bea..e55a6410a 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmzTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KmzTrackExporter.java @@ -52,7 +52,7 @@ public class KmzTrackExporter implements TrackExporter { private final TrackExporter fileTrackExporter; private final Track[] tracks; - private boolean exportPhotos; + private final boolean exportPhotos; /** * Constructor. diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java index 593ec79f7..8759f8534 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java @@ -493,7 +493,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track // TODO Why private inner class? private class TrackData { // The current track - Track track = new Track(); + final Track track = new Track(); // The number of segments processed for the current track int numberOfSegments = 0; @@ -508,10 +508,10 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track TripStatisticsUpdater tripStatisticsUpdater; // The import time of the track. - long importTime = System.currentTimeMillis(); + final long importTime = System.currentTimeMillis(); // The buffered locations - Location[] bufferedLocations = new Location[MAX_BUFFERED_LOCATIONS]; + final Location[] bufferedLocations = new Location[MAX_BUFFERED_LOCATIONS]; // The number of buffered locations int numBufferedLocations = 0; diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java index 6108ce010..5eeaed770 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingService.java @@ -150,7 +150,7 @@ public class TrackRecordingService extends Service { private boolean currentSegmentHasLocation; private boolean isIdle; // true if idle private ServiceBinder binder = new ServiceBinder(this); - private LocationListener locationListener = new LocationListener() { + private final LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(final Location location) { @@ -358,7 +358,7 @@ public class TrackRecordingService extends Service { track.setTripStatistics(trackTripStatisticsUpdater.getTripStatistics()); contentProviderUtils.updateTrack(track); - startRecording(true); + startRecording(); return trackId; } @@ -382,7 +382,7 @@ public class TrackRecordingService extends Service { } catch (RuntimeException e) { Log.e(TAG, "RuntimeException", e); } - startRecording(true); + startRecording(); } /** @@ -408,15 +408,13 @@ public class TrackRecordingService extends Service { insertLocation(track, resume, null); } - startRecording(false); + startRecording(); } /** * Common code for starting a new track, resuming a track, or restarting after phone reboot. - * - * @param trackStarted true if track is started, false if track is resumed */ - private void startRecording(boolean trackStarted) { + private void startRecording() { // Update instance variables remoteSensorManager = new BluetoothRemoteSensorManager(this); remoteSensorManager.start(); @@ -686,7 +684,7 @@ public class TrackRecordingService extends Service { } try { - Uri uri = contentProviderUtils.insertTrackPoint(location, track.getId()); + contentProviderUtils.insertTrackPoint(location, track.getId()); trackTripStatisticsUpdater.addLocation(location, recordingDistanceInterval); updateRecordingTrack(track, LocationUtils.isValidLocation(location)); } catch (SQLiteException e) { diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java index 064f1e866..52e5d92bc 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManager.java @@ -24,9 +24,9 @@ class TrackRecordingServiceNotificationManager { private final static String CHANNEL_ID = TrackRecordingServiceNotificationManager.class.getSimpleName(); - private NotificationCompat.Builder notificationBuilder; + private final NotificationCompat.Builder notificationBuilder; - private NotificationManager notificationManager; + private final NotificationManager notificationManager; private boolean previousLocationWasAccurate = true; diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java index f928dc529..98913593c 100644 --- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java @@ -57,9 +57,9 @@ public class BluetoothConnectionManager { private SensorState sensorState; private BluetoothGatt bluetoothGatt; - private BluetoothDevice bluetoothDevice; + private final BluetoothDevice bluetoothDevice; - private BluetoothGattCallback connectCallback = new BluetoothGattCallback() { + private final BluetoothGattCallback connectCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { switch (newState) { diff --git a/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java b/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java index 65a3e3e7d..2d1e49b14 100644 --- a/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java +++ b/src/main/java/de/dennisguse/opentracks/services/tasks/AnnouncementPeriodicTask.java @@ -61,11 +61,7 @@ public class AnnouncementPeriodicTask implements PeriodicTask { stop = false; break; case AudioManager.AUDIOFOCUS_LOSS: - stop = true; - break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - stop = true; - break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: stop = true; break; diff --git a/src/main/java/de/dennisguse/opentracks/settings/BluetoothLeAdapter.java b/src/main/java/de/dennisguse/opentracks/settings/BluetoothLeAdapter.java index 069c15552..634eb3c3b 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/BluetoothLeAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/settings/BluetoothLeAdapter.java @@ -74,7 +74,7 @@ public class BluetoothLeAdapter extends BaseAdapter { public class Device { private String name; - private String address; + private final String address; public Device(String name, String address) { this.name = name; diff --git a/src/main/java/de/dennisguse/opentracks/settings/BluetoothLePreference.java b/src/main/java/de/dennisguse/opentracks/settings/BluetoothLePreference.java index 460078cb5..ea7aad051 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/BluetoothLePreference.java +++ b/src/main/java/de/dennisguse/opentracks/settings/BluetoothLePreference.java @@ -88,10 +88,10 @@ public class BluetoothLePreference extends DialogPreference { public static class BluetoothLePreferenceDialog extends PreferenceDialogFragmentCompat { private int selectedEntryIndex; - private BluetoothLeAdapter listAdapter = new BluetoothLeAdapter(); + private final BluetoothLeAdapter listAdapter = new BluetoothLeAdapter(); private BluetoothLeScanner scanner = null; - private ScanCallback scanCallback = new ScanCallback() { + private final ScanCallback scanCallback = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); diff --git a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java index 904adf45d..2a523a10d 100644 --- a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java @@ -80,19 +80,6 @@ public class FileUtils { return buildUniqueFileName(directory, fileBaseName, extension, 0); } - /** - * Gets the name from a file name, without the extension. - * - * @param fileName the file name - */ - public static String getName(String fileName) { - int index = fileName.lastIndexOf('.'); - if (index == -1) { - return fileName; - } - return fileName.substring(0, index); - } - /** * Gets the extension from a file name. * Returns null if there is no extension. diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index 6f050d21d..15ec376ab 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; @@ -44,7 +45,7 @@ public class PreferencesUtils { 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); + return PreferencesUtils.getLong(context); } public static String getDefaultActivity(Context context) { @@ -134,6 +135,7 @@ public class PreferencesUtils { * @param keyId the key id * @param value the value */ + @VisibleForTesting public static void setInt(Context context, int keyId, int value) { SharedPreferences sharedPreferences = getSharedPreferences(context); Editor editor = sharedPreferences.edit(); @@ -143,13 +145,12 @@ public class PreferencesUtils { /** * Gets a long preference value. - * * @param context the context - * @param keyId the key id + * */ - private static long getLong(Context context, int keyId, long defaultValue) { + private static long getLong(Context context) { SharedPreferences sharedPreferences = getSharedPreferences(context); - return sharedPreferences.getLong(getKey(context, keyId), defaultValue); + return sharedPreferences.getLong(getKey(context, R.string.recording_track_id_key), PreferencesUtils.RECORDING_TRACK_ID_DEFAULT); } /** diff --git a/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java b/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java index a0580bdd5..4320672ed 100644 --- a/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/TrackUtils.java @@ -29,7 +29,7 @@ import de.dennisguse.opentracks.content.provider.ContentProviderUtils; */ public class TrackUtils { - public static String TRACK_SORT_ORDER = TracksColumns.STARTTIME + " DESC"; + public static final String TRACK_SORT_ORDER = TracksColumns.STARTTIME + " DESC"; private TrackUtils() { }