TrackRecordingManager: do not store sensor distance twice (previous TrackPoint's storage was delayed).

Fixes #969.
This commit is contained in:
Dennis Guse
2021-10-07 22:51:06 +02:00
parent f6b994572a
commit 90493ae498
4 changed files with 17 additions and 8 deletions
@@ -492,6 +492,7 @@ public class TrackRecordingServiceTestLocation {
.setSensorDistance(Distance.of(2)),
new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, null)
.setSensorDistance(Distance.of(11))
.setSpeed(Speed.of(5))
.setAltitudeGain(0f)
.setAltitudeLoss(0f)
.setSensorDistance(Distance.of(2))
@@ -349,6 +349,13 @@ public class TrackPoint {
return this;
}
public TrackPoint minusSensorDistance(@NonNull TrackPoint lastTrackPoint) {
if (hasSensorDistance() && lastTrackPoint.hasSensorDistance()) {
setSensorDistance(getSensorDistance().minus(lastTrackPoint.getSensorDistance()));
}
return this;
}
public boolean hasSensorData() {
return hasHeartRate() || hasCyclingCadence() || hasPower();
}
@@ -396,10 +403,9 @@ public class TrackPoint {
@Override
public String toString() {
String result = "time=" + getTime() + " (type=" + getType() + ")";
if (!hasLocation()) {
return result;
if (hasLocation()) {
result += ": lat=" + getLatitude() + " lng=" + getLongitude();
}
result += ": lat=" + getLatitude() + " lng=" + getLongitude();
if (hasHorizontalAccuracy()) {
result += " acc=" + getHorizontalAccuracy();
}
@@ -73,8 +73,8 @@ public final class SensorDataSet {
}
if (cyclingDistanceSpeed != null && cyclingDistanceSpeed.hasValue()) {
trackPoint.setSensorDistance(cyclingDistanceSpeed.getValue().getDistanceOverall());
trackPoint.setSpeed(cyclingDistanceSpeed.getValue().getSpeed());
trackPoint.setSensorDistance(cyclingDistanceSpeed.getValue().getDistanceOverall())
.setSpeed(cyclingDistanceSpeed.getValue().getSpeed());
}
if (cyclingPower != null && cyclingPower.hasValue()) {
@@ -82,9 +82,9 @@ public final class SensorDataSet {
}
if (runningDistanceSpeedCadence != null && runningDistanceSpeedCadence.hasValue()) {
trackPoint.setSensorDistance(runningDistanceSpeedCadence.getValue().getDistance());
trackPoint.setSpeed(runningDistanceSpeedCadence.getValue().getSpeed());
trackPoint.setCyclingCadence_rpm(runningDistanceSpeedCadence.getValue().getCadence());
trackPoint.setSensorDistance(runningDistanceSpeedCadence.getValue().getDistance())
.setSpeed(runningDistanceSpeedCadence.getValue().getSpeed())
.setCyclingCadence_rpm(runningDistanceSpeedCadence.getValue().getCadence());
}
}
@@ -207,6 +207,8 @@ class TrackRecordingManager {
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.minusSensorDistance(lastTrackPoint);
}
lastTrackPoint = null;
}