From 083b620e41d5bdd06c541400f7cce5d2cf968a7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rom=C3=A1n=20Mart=C3=ADnez?= Date: Thu, 7 Oct 2021 22:13:11 +0200 Subject: [PATCH] GPS data recording: remove idle/non-idle changes due to reported speed greater than 0.5mph. This avoids that to storing GPS locations if the user r actually is not moving (likely bad GPS reception). Fixes #968. Co-authored-by: vlmendz <91810638+vlmendz@users.noreply.github.com> Co-authored-by: Dennis Guse --- .../TrackRecordingServiceTestLocation.java | 22 +------------------ .../services/TrackRecordingManager.java | 22 +------------------ 2 files changed, 2 insertions(+), 42 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java index 49abe630f..fd6b0981b 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java @@ -252,13 +252,6 @@ public class TrackRecordingServiceTestLocation { .setSpeed(Speed.of(0)) .setAltitudeGain(0f) .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) //TODO Why is this added? Systems is idle and not moving at all. - .setLatitude(45) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(2)) - .setSpeed(Speed.of(0)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) @@ -305,20 +298,6 @@ public class TrackRecordingServiceTestLocation { .setSpeed(Speed.of(15)) .setAltitudeGain(0f) .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) //TODO Check why this trackPoint is inserted. - .setLatitude(45) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(2)) - .setSpeed(Speed.of(0)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), - new TrackPoint(TrackPoint.Type.TRACKPOINT, null) //TODO Check why this trackPoint is inserted. - .setLatitude(45) - .setLongitude(35) - .setHorizontalAccuracy(Distance.of(5)) - .setSpeed(Speed.of(0)) - .setAltitudeGain(0f) - .setAltitudeLoss(0f), new TrackPoint(TrackPoint.Type.TRACKPOINT, null) .setLatitude(45) .setLongitude(35) @@ -427,6 +406,7 @@ public class TrackRecordingServiceTestLocation { ), trackPoints); } + @Deprecated // Will be superseded when fixing #500 @MediumTest @Test public void testOnLocationChangedAsync_idle_withSensorDistance() { diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index 8cf194c6f..340ea7c2c 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -39,7 +39,6 @@ class TrackRecordingManager { private boolean currentSegmentHasTrackPoint; private TrackPoint lastTrackPoint; private TrackPoint lastStoredTrackPoint; - private boolean isIdle; TrackRecordingManager(Context context) { this.context = context; @@ -101,7 +100,6 @@ class TrackRecordingManager { lastTrackPoint = null; lastStoredTrackPoint = null; currentSegmentHasTrackPoint = false; - isIdle = false; } Pair> get(TrackPointCreator trackPointCreator) { @@ -164,33 +162,15 @@ class TrackRecordingManager { if (distanceToLastTrackLocation.greaterThan(maxRecordingDistance)) { trackPoint.setType(TrackPoint.Type.SEGMENT_START_AUTOMATIC); insertTrackPoint(trackId, trackPoint); - - isIdle = false; return true; } - if (trackPoint.hasSensorData() || distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval)) { + if (trackPoint.hasSensorData() || (distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval) && trackPoint.isMoving())) { insertTrackPoint(trackId, trackPoint); - - isIdle = false; return true; } } - if (!isIdle && !trackPoint.isMoving()) { - insertTrackPoint(trackId, trackPoint); - - isIdle = true; - return true; - } - - if (isIdle && trackPoint.isMoving()) { - insertTrackPoint(trackId, trackPoint); - - isIdle = false; - return true; - } - Log.d(TAG, "Not recording TrackPoint, idle"); lastTrackPoint = trackPoint; return false;