mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-11 21:43:05 +02:00
Revert "Only record a TrackPoint if the traveled distance is greater than recording distance interval."
This reverts commit 08ba7d50c7.
Fix #1046.
This commit is contained in:
+41
-8
@@ -187,7 +187,7 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
TrackRecordingServiceTest.newTrackPoint(service, 45.000002, 35.0, 3, 15);
|
TrackRecordingServiceTest.newTrackPoint(service, 45.000002, 35.0, 3, 15);
|
||||||
TrackRecordingServiceTest.newTrackPoint(service, 45.000003, 35.0, 4, 15);
|
TrackRecordingServiceTest.newTrackPoint(service, 45.000003, 35.0, 4, 15);
|
||||||
TrackRecordingServiceTest.newTrackPoint(service, 45.000004, 35.0, 5, 15);
|
TrackRecordingServiceTest.newTrackPoint(service, 45.000004, 35.0, 5, 15);
|
||||||
TrackRecordingServiceTest.newTrackPoint(service, 45.0002, 35.0, 6, 15);
|
TrackRecordingServiceTest.newTrackPoint(service, 45.000005, 35.0, 6, 15);
|
||||||
|
|
||||||
service.endCurrentTrack();
|
service.endCurrentTrack();
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(0f),
|
.setAltitudeLoss(0f),
|
||||||
new TrackPoint(TrackPoint.Type.TRACKPOINT, null)
|
new TrackPoint(TrackPoint.Type.TRACKPOINT, null)
|
||||||
.setLatitude(45.0002)
|
.setLatitude(45.0005)
|
||||||
.setLongitude(35)
|
.setLongitude(35)
|
||||||
.setHorizontalAccuracy(Distance.of(6))
|
.setHorizontalAccuracy(Distance.of(6))
|
||||||
.setSpeed(Speed.of(15))
|
.setSpeed(Speed.of(15))
|
||||||
@@ -217,9 +217,6 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(0f)
|
.setAltitudeLoss(0f)
|
||||||
), trackPoints);
|
), trackPoints);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@MediumTest
|
@MediumTest
|
||||||
@@ -254,6 +251,13 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setSpeed(Speed.of(0))
|
.setSpeed(Speed.of(0))
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(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)
|
new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null)
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(0f)
|
.setAltitudeLoss(0f)
|
||||||
@@ -293,6 +297,13 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setSpeed(Speed.of(15))
|
.setSpeed(Speed.of(15))
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(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)
|
new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null)
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(0f)
|
.setAltitudeLoss(0f)
|
||||||
@@ -419,12 +430,20 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setHorizontalAccuracy(Distance.of(2))
|
.setHorizontalAccuracy(Distance.of(2))
|
||||||
.setSpeed(Speed.of(5))
|
.setSpeed(Speed.of(5))
|
||||||
.setSensorDistance(Distance.of(10)),
|
.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)
|
new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null)
|
||||||
.setSensorDistance(Distance.of(11))
|
.setSensorDistance(Distance.of(11))
|
||||||
.setSpeed(Speed.of(5))
|
.setSpeed(Speed.of(5))
|
||||||
.setAltitudeGain(12f)
|
.setAltitudeGain(6f)
|
||||||
.setAltitudeLoss(12f)
|
.setAltitudeLoss(6f)
|
||||||
.setSensorDistance(Distance.of(4))
|
.setSensorDistance(Distance.of(2))
|
||||||
), trackPoints);
|
), trackPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -468,6 +487,13 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setSpeed(Speed.of(0))
|
.setSpeed(Speed.of(0))
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(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)
|
new TrackPoint(TrackPoint.Type.SEGMENT_START_AUTOMATIC, null)
|
||||||
.setLatitude(45.2)
|
.setLatitude(45.2)
|
||||||
@@ -476,6 +502,13 @@ public class TrackRecordingServiceTestLocation {
|
|||||||
.setSpeed(Speed.of(0))
|
.setSpeed(Speed.of(0))
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(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)
|
new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null)
|
||||||
.setAltitudeGain(0f)
|
.setAltitudeGain(0f)
|
||||||
.setAltitudeLoss(0f)
|
.setAltitudeLoss(0f)
|
||||||
|
|||||||
@@ -349,6 +349,19 @@ public class TrackPoint {
|
|||||||
return this;
|
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() {
|
public boolean hasSensorData() {
|
||||||
return hasHeartRate() || hasCadence() || hasPower();
|
return hasHeartRate() || hasCadence() || hasPower();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ class TrackRecordingManager {
|
|||||||
private TrackStatisticsUpdater trackStatisticsUpdater;
|
private TrackStatisticsUpdater trackStatisticsUpdater;
|
||||||
|
|
||||||
private boolean currentSegmentHasTrackPoint;
|
private boolean currentSegmentHasTrackPoint;
|
||||||
|
private TrackPoint lastTrackPoint;
|
||||||
private TrackPoint lastStoredTrackPoint;
|
private TrackPoint lastStoredTrackPoint;
|
||||||
|
|
||||||
TrackRecordingManager(Context context) {
|
TrackRecordingManager(Context context) {
|
||||||
@@ -80,11 +81,13 @@ class TrackRecordingManager {
|
|||||||
trackStatisticsUpdater = new TrackStatisticsUpdater(track.getTrackStatistics());
|
trackStatisticsUpdater = new TrackStatisticsUpdater(track.getTrackStatistics());
|
||||||
insertTrackPoint(trackId, segmentStartTrackPoint);
|
insertTrackPoint(trackId, segmentStartTrackPoint);
|
||||||
currentSegmentHasTrackPoint = false;
|
currentSegmentHasTrackPoint = false;
|
||||||
|
lastTrackPoint = null;
|
||||||
lastStoredTrackPoint = null; }
|
lastStoredTrackPoint = null; }
|
||||||
|
|
||||||
void pause(TrackPointCreator trackPointCreator) {
|
void pause(TrackPointCreator trackPointCreator) {
|
||||||
insertTrackPoint(trackId, trackPointCreator.createSegmentEnd());
|
insertTrackPoint(trackId, trackPointCreator.createSegmentEnd());
|
||||||
currentSegmentHasTrackPoint = false;
|
currentSegmentHasTrackPoint = false;
|
||||||
|
lastTrackPoint = null;
|
||||||
lastStoredTrackPoint = null;
|
lastStoredTrackPoint = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,6 +97,7 @@ class TrackRecordingManager {
|
|||||||
|
|
||||||
trackId = null;
|
trackId = null;
|
||||||
trackStatisticsUpdater = null;
|
trackStatisticsUpdater = null;
|
||||||
|
lastTrackPoint = null;
|
||||||
lastStoredTrackPoint = null;
|
lastStoredTrackPoint = null;
|
||||||
currentSegmentHasTrackPoint = false;
|
currentSegmentHasTrackPoint = false;
|
||||||
}
|
}
|
||||||
@@ -103,7 +107,7 @@ class TrackRecordingManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
TrackStatisticsUpdater tmpTrackStatisticsUpdater = new TrackStatisticsUpdater(trackStatisticsUpdater);
|
TrackStatisticsUpdater tmpTrackStatisticsUpdater = new TrackStatisticsUpdater(trackStatisticsUpdater);
|
||||||
Pair<TrackPoint, SensorDataSet> current = trackPointCreator.createCurrentTrackPoint(lastStoredTrackPoint);
|
Pair<TrackPoint, SensorDataSet> current = trackPointCreator.createCurrentTrackPoint(lastTrackPoint);
|
||||||
|
|
||||||
tmpTrackStatisticsUpdater.addTrackPoint(current.first, recordingDistanceInterval);
|
tmpTrackStatisticsUpdater.addTrackPoint(current.first, recordingDistanceInterval);
|
||||||
|
|
||||||
@@ -168,6 +172,7 @@ class TrackRecordingManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG, "Not recording TrackPoint, idle");
|
Log.d(TAG, "Not recording TrackPoint, idle");
|
||||||
|
lastTrackPoint = trackPoint;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,6 +181,22 @@ class TrackRecordingManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void insertTrackPoint(@NonNull Track.Id trackId, @NonNull TrackPoint trackPoint) {
|
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 {
|
try {
|
||||||
contentProviderUtils.insertTrackPoint(trackPoint, trackId);
|
contentProviderUtils.insertTrackPoint(trackPoint, trackId);
|
||||||
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
|
trackStatisticsUpdater.addTrackPoint(trackPoint, recordingDistanceInterval);
|
||||||
|
|||||||
Reference in New Issue
Block a user