Bugfix: reset on SensorDataSet should only take place if the TrackPoint was stored

Fixes #969.
This commit is contained in:
Dennis Guse
2021-10-07 07:46:37 +02:00
parent 12e18b0bcd
commit 52a110d998
7 changed files with 104 additions and 29 deletions
@@ -83,14 +83,6 @@ public class TrackPointCreator {
return sensorDataSet;
}
public SensorDataSet fillAndReset(TrackPoint trackPoint) {
SensorDataSet sensorDataSet = fill(trackPoint);
resetSensorData();
return sensorDataSet;
}
public void stop() {
locationHandler.onStop();
@@ -112,9 +104,12 @@ public class TrackPointCreator {
}
public void onNewTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
fillAndReset(trackPoint);
fill(trackPoint);
service.newTrackPoint(trackPoint, thresholdHorizontalAccuracy);
boolean stored = service.newTrackPoint(trackPoint, thresholdHorizontalAccuracy);
if (stored) {
resetSensorData();
}
}
public TrackPoint createSegmentStartManual() {
@@ -123,7 +118,8 @@ public class TrackPointCreator {
public TrackPoint createSegmentEnd() {
TrackPoint segmentEnd = TrackPoint.createSegmentEndWithTime(createNow());
fillAndReset(segmentEnd);
fill(segmentEnd);
resetSensorData();
return segmentEnd;
}
@@ -181,7 +177,10 @@ public class TrackPointCreator {
}
public interface Callback {
void newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy);
/**
* @return Was TrackPoint stored (not discarded)?
*/
boolean newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy);
void newGpsStatus(GpsStatusValue gpsStatusValue);
}