From 08ba7d50c73197a1230eca8cc72dc1d501d7a6af Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Mon, 8 Nov 2021 22:42:14 +0100 Subject: [PATCH] Only record a TrackPoint if the traveled distance is greater than recording distance interval. Code seemed to be a leftover from the removed idle/non-idle functionality. Fixed #1007. Co-authored-by: vlmendz <91810638+vlmendz@users.noreply.github.com> --- .../TrackRecordingServiceTestLocation.java | 52 ++++--------------- .../opentracks/content/data/TrackPoint.java | 13 ----- .../services/TrackRecordingManager.java | 23 +------- 3 files changed, 12 insertions(+), 76 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java index 08c5d292e..175aadff7 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java @@ -20,11 +20,14 @@ import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.internal.debugging.LocationImpl; +import java.time.Instant; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import de.dennisguse.opentracks.content.data.Altitude; import de.dennisguse.opentracks.content.data.Distance; import de.dennisguse.opentracks.content.data.Speed; import de.dennisguse.opentracks.content.data.TestDataUtil; @@ -187,7 +190,7 @@ public class TrackRecordingServiceTestLocation { TrackRecordingServiceTest.newTrackPoint(service, 45.000002, 35.0, 3, 15); TrackRecordingServiceTest.newTrackPoint(service, 45.000003, 35.0, 4, 15); TrackRecordingServiceTest.newTrackPoint(service, 45.000004, 35.0, 5, 15); - TrackRecordingServiceTest.newTrackPoint(service, 45.000005, 35.0, 6, 15); + TrackRecordingServiceTest.newTrackPoint(service, 45.0002, 35.0, 6, 15); service.endCurrentTrack(); @@ -207,7 +210,7 @@ public class TrackRecordingServiceTestLocation { .setAltitudeGain(0f) .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) - .setLatitude(45.0005) + .setLatitude(45.0002) .setLongitude(35) .setHorizontalAccuracy(Distance.of(6)) .setSpeed(Speed.of(15)) @@ -217,6 +220,9 @@ public class TrackRecordingServiceTestLocation { .setAltitudeGain(0f) .setAltitudeLoss(0f) ), trackPoints); + + + } @MediumTest @@ -251,13 +257,6 @@ public class TrackRecordingServiceTestLocation { .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) - .setLatitude(45) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(6)) - .setSpeed(Speed.of(0)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -297,13 +296,6 @@ public class TrackRecordingServiceTestLocation { .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) - .setLatitude(45) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(6)) - .setSpeed(Speed.of(15)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null) .setAltitudeGain(0f) .setAltitudeLoss(0f) @@ -470,20 +462,12 @@ public class TrackRecordingServiceTestLocation { .setHorizontalAccuracy(Distance.of(2)) .setSpeed(Speed.of(5)) .setSensorDistance(Distance.of(10)), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) - .setLatitude(45) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(4)) - .setSpeed(Speed.of(5)) - .setAltitudeGain(6f) - .setAltitudeLoss(6f) - .setSensorDistance(Distance.of(2)), new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null) .setSensorDistance(Distance.of(11)) .setSpeed(Speed.of(5)) - .setAltitudeGain(6f) - .setAltitudeLoss(6f) - .setSensorDistance(Distance.of(2)) + .setAltitudeGain(12f) + .setAltitudeLoss(12f) + .setSensorDistance(Distance.of(4)) ), trackPoints); } @@ -527,13 +511,6 @@ public class TrackRecordingServiceTestLocation { .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) - .setLatitude(45.1) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(3)) - .setSpeed(Speed.of(0)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.SEGMENT_START_AUTOMATIC, null) .setLatitude(45.2) @@ -542,13 +519,6 @@ public class TrackRecordingServiceTestLocation { .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) - .setLatitude(45.2) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(5)) - .setSpeed(Speed.of(0)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null) .setAltitudeGain(0f) .setAltitudeLoss(0f) diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java index 09b1473d8..2ebe6cbe2 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java @@ -349,19 +349,6 @@ public class TrackPoint { return this; } - public TrackPoint minusCumulativeSensorData(@NonNull TrackPoint lastTrackPoint) { - if (hasSensorDistance() && lastTrackPoint.hasSensorDistance()) { - sensorDistance = sensorDistance.minus(lastTrackPoint.getSensorDistance()); - } - if (hasAltitudeGain() && lastTrackPoint.hasAltitudeGain()) { - altitudeGain_m -= lastTrackPoint.altitudeGain_m; - } - if (hasAltitudeLoss() && lastTrackPoint.hasAltitudeLoss()) { - altitudeLoss_m -= lastTrackPoint.altitudeLoss_m; - } - return this; - } - public boolean hasSensorData() { return hasHeartRate() || hasCadence() || hasPower(); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index 340ea7c2c..6b054db8d 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -37,7 +37,6 @@ class TrackRecordingManager { private TrackStatisticsUpdater trackStatisticsUpdater; private boolean currentSegmentHasTrackPoint; - private TrackPoint lastTrackPoint; private TrackPoint lastStoredTrackPoint; TrackRecordingManager(Context context) { @@ -81,13 +80,11 @@ 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; } @@ -97,7 +94,6 @@ class TrackRecordingManager { trackId = null; trackStatisticsUpdater = null; - lastTrackPoint = null; lastStoredTrackPoint = null; currentSegmentHasTrackPoint = false; } @@ -107,7 +103,7 @@ class TrackRecordingManager { return null; } TrackStatisticsUpdater tmpTrackStatisticsUpdater = new TrackStatisticsUpdater(trackStatisticsUpdater); - Pair current = trackPointCreator.createCurrentTrackPoint(lastTrackPoint); + Pair current = trackPointCreator.createCurrentTrackPoint(lastStoredTrackPoint); tmpTrackStatisticsUpdater.addTrackPoint(current.first, recordingDistanceInterval); @@ -172,7 +168,6 @@ class TrackRecordingManager { } Log.d(TAG, "Not recording TrackPoint, idle"); - lastTrackPoint = trackPoint; return false; } @@ -181,22 +176,6 @@ class TrackRecordingManager { } private void insertTrackPoint(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) { - if (lastTrackPoint != null) { - 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 { - insertTrackPointHelper(trackId, lastTrackPoint); - // Remove the sensorDistance from trackPoint that is already going be stored with lastTrackPoint. - trackPoint.minusCumulativeSensorData(lastTrackPoint); - } - lastTrackPoint = null; - } - - insertTrackPointHelper(trackId, trackPoint); - } - - private void insertTrackPointHelper(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) { try { contentProviderUtils.insertTrackPoint(trackPoint, trackId); trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);