diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java index 4b4e38d5b..39423f835 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLocation.java @@ -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)) diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java index bbdfd535f..b8299aea4 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java @@ -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(); } diff --git a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java index b0b3eb3d1..9af5db20f 100644 --- a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java +++ b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataSet.java @@ -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()); } } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index 72127448c..d8d8d2be4 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -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; }