diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index 380f25463..72127448c 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -8,7 +8,6 @@ import android.util.Log; import android.util.Pair; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.content.data.Distance; @@ -39,7 +38,7 @@ class TrackRecordingManager { private boolean currentSegmentHasTrackPoint; private TrackPoint lastTrackPoint; - private TrackPoint lastValidTrackPoint; + private TrackPoint lastStoredTrackPoint; private boolean isIdle; TrackRecordingManager(Context context) { @@ -83,11 +82,14 @@ class TrackRecordingManager { trackStatisticsUpdater = new TrackStatisticsUpdater(track.getTrackStatistics()); insertTrackPoint(trackId, segmentStartTrackPoint); currentSegmentHasTrackPoint = false; - } + lastTrackPoint = null; + lastStoredTrackPoint = null; } void pause(TrackPointCreator trackPointCreator) { insertTrackPoint(trackId, trackPointCreator.createSegmentEnd()); currentSegmentHasTrackPoint = false; + lastTrackPoint = null; + lastStoredTrackPoint = null; } void end(TrackPointCreator trackPointCreator) { @@ -97,8 +99,8 @@ class TrackRecordingManager { trackId = null; trackStatisticsUpdater = null; lastTrackPoint = null; + lastStoredTrackPoint = null; currentSegmentHasTrackPoint = false; - lastValidTrackPoint = null; isIdle = false; } @@ -106,12 +108,12 @@ class TrackRecordingManager { if (trackPointCreator == null) { return null; } - TrackStatisticsUpdater tmpTrackStatisticsUpdater = getTrackStatisticsUpdater(); + TrackStatisticsUpdater tmpTrackStatisticsUpdater = new TrackStatisticsUpdater(trackStatisticsUpdater); Pair current = trackPointCreator.createCurrentTrackPoint(lastTrackPoint); tmpTrackStatisticsUpdater.addTrackPoint(current.first, recordingDistanceInterval); - Track track = getTrack(); //Get copy + Track track = contentProviderUtils.getTrack(trackId); //Get copy if (track == null) { Log.w(TAG, "Requesting data if not recording is taking place, should not be done."); return null; @@ -131,8 +133,7 @@ class TrackRecordingManager { name = context.getString(R.string.marker_name_format, nextMarkerNumber + 1); } - TrackPoint trackPoint = getLastValidTrackPointInCurrentSegment(trackId); - if (trackPoint == null) { + if (lastStoredTrackPoint == null) { Log.i(TAG, "Could not create a marker as trackPoint is unknown."); return null; } @@ -142,17 +143,13 @@ class TrackRecordingManager { String icon = context.getString(R.string.marker_icon_url); photoUrl = photoUrl != null ? photoUrl : ""; - // Insert marker - Marker marker = new Marker(name, description, category, icon, trackId, getTrackStatistics(), trackPoint, photoUrl); + Marker marker = new Marker(name, description, category, icon, trackId, getTrackStatistics(), lastStoredTrackPoint, photoUrl); Uri uri = contentProviderUtils.insertMarker(marker); return new Marker.Id(ContentUris.parseId(uri)); } boolean onNewTrackPoint(TrackPoint trackPoint) { - //TODO Figure out how to avoid loading the lastValidTrackPoint from the database - TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId); - //Storing trackPoint // Always insert the first segment location @@ -162,14 +159,13 @@ class TrackRecordingManager { return true; } - Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastValidTrackPoint); + Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastStoredTrackPoint); if (distanceToLastTrackLocation != null) { if (distanceToLastTrackLocation.greaterThan(maxRecordingDistance)) { trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC); insertTrackPoint(trackId, trackPoint); isIdle = false; - return true; } @@ -177,7 +173,6 @@ class TrackRecordingManager { insertTrackPoint(trackId, trackPoint); isIdle = false; - return true; } } @@ -186,7 +181,6 @@ class TrackRecordingManager { insertTrackPoint(trackId, trackPoint); isIdle = true; - return true; } @@ -194,7 +188,6 @@ class TrackRecordingManager { insertTrackPoint(trackId, trackPoint); isIdle = false; - return true; } @@ -203,39 +196,13 @@ class TrackRecordingManager { return false; } - Track getTrack() { - return contentProviderUtils.getTrack(trackId); - } - - //Functionality that uses this method should happen here. - @Deprecated - TrackStatisticsUpdater getTrackStatisticsUpdater() { - return new TrackStatisticsUpdater(trackStatisticsUpdater); - } - TrackStatistics getTrackStatistics() { return trackStatisticsUpdater.getTrackStatistics(); } - /** - * Gets the last valid track point in the current segment. - * - * @param trackId the track id - * @return the location or null - */ - @Deprecated - //Use lastValidTrackPoint - private TrackPoint getLastValidTrackPointInCurrentSegment(Track.Id trackId) { - if (!currentSegmentHasTrackPoint) { - return null; - } - return contentProviderUtils.getLastValidTrackPoint(trackId); - } - private void insertTrackPoint(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) { if (lastTrackPoint != null) { - TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId); - if (lastValidTrackPoint != null && lastTrackPoint.getTime().equals(lastValidTrackPoint.getTime())) { + if (lastStoredTrackPoint != null && lastTrackPoint.getTime().equals(lastStoredTrackPoint.getTime())) { // Do not insert if inserted already Log.w(TAG, "Ignore insertTrackPoint. trackPoint time same as last valid trackId point time."); } else { @@ -253,7 +220,7 @@ class TrackRecordingManager { trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval); contentProviderUtils.updateTrackStatistics(trackId, trackStatisticsUpdater.getTrackStatistics()); - lastValidTrackPoint = trackPoint; + lastStoredTrackPoint = trackPoint; } catch (SQLiteException e) { /* * Insert failed, most likely because of SqlLite error code 5 (SQLite_BUSY).