forked from upstream-mirrors/OpenTracks
Bugfix: reset on SensorDataSet should only take place if the TrackPoint was stored
Fixes #969.
This commit is contained in:
@@ -400,11 +400,14 @@ public class TrackPoint {
|
||||
return result;
|
||||
}
|
||||
result += ": lat=" + getLatitude() + " lng=" + getLongitude();
|
||||
if (!hasHorizontalAccuracy()) {
|
||||
return result;
|
||||
if (hasHorizontalAccuracy()) {
|
||||
result += " acc=" + getHorizontalAccuracy();
|
||||
}
|
||||
if (hasSensorDistance()) {
|
||||
result += " distance=" + getSensorDistance();
|
||||
}
|
||||
|
||||
return result + " acc=" + getHorizontalAccuracy();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static class Id {
|
||||
|
||||
@@ -93,7 +93,6 @@ public final class SensorDataSet {
|
||||
if (cyclingCadence != null) cyclingCadence.reset();
|
||||
if (cyclingDistanceSpeed != null) cyclingDistanceSpeed.reset();
|
||||
if (cyclingPower != null) cyclingPower.reset();
|
||||
|
||||
if (runningDistanceSpeedCadence != null) runningDistanceSpeedCadence.reset();
|
||||
}
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ class TrackRecordingManager {
|
||||
return new Marker.Id(ContentUris.parseId(uri));
|
||||
}
|
||||
|
||||
void onNewTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
|
||||
boolean onNewTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
|
||||
//TODO Figure out how to avoid loading the lastValidTrackPoint from the database
|
||||
TrackPoint lastValidTrackPoint = getLastValidTrackPointInCurrentSegment(trackId);
|
||||
|
||||
@@ -159,7 +159,7 @@ class TrackRecordingManager {
|
||||
if (!currentSegmentHasTrackPoint()) {
|
||||
insertTrackPoint(trackId, trackPoint);
|
||||
lastTrackPoint = trackPoint;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
Distance distanceToLastTrackLocation = trackPoint.distanceToPrevious(lastValidTrackPoint);
|
||||
@@ -173,7 +173,7 @@ class TrackRecordingManager {
|
||||
isIdle = false;
|
||||
|
||||
lastTrackPoint = trackPoint;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (trackPoint.hasSensorData() || distanceToLastTrackLocation.greaterOrEqualThan(recordingDistanceInterval)) {
|
||||
@@ -184,7 +184,7 @@ class TrackRecordingManager {
|
||||
isIdle = false;
|
||||
|
||||
lastTrackPoint = trackPoint;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ class TrackRecordingManager {
|
||||
isIdle = true;
|
||||
|
||||
lastTrackPoint = trackPoint;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isIdle && trackPoint.isMoving()) {
|
||||
@@ -207,11 +207,12 @@ class TrackRecordingManager {
|
||||
isIdle = false;
|
||||
|
||||
lastTrackPoint = trackPoint;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
Log.d(TAG, "Not recording TrackPoint, idle");
|
||||
lastTrackPoint = trackPoint;
|
||||
return false;
|
||||
}
|
||||
|
||||
Track getTrack() {
|
||||
|
||||
@@ -355,14 +355,14 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
|
||||
public boolean newTrackPoint(TrackPoint trackPoint, Distance thresholdHorizontalAccuracy) {
|
||||
if (!isRecording() || isPaused()) {
|
||||
Log.w(TAG, "Ignore newTrackPoint. Not recording or paused.");
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
trackRecordingManager.onNewTrackPoint(trackPoint, thresholdHorizontalAccuracy);
|
||||
notificationManager.updateTrackPoint(this, trackRecordingManager.getTrackStatistics(), trackPoint, thresholdHorizontalAccuracy);
|
||||
return trackRecordingManager.onNewTrackPoint(trackPoint, thresholdHorizontalAccuracy);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user