diff --git a/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java b/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java index 644dd6d4d..41fa6d8e7 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java @@ -61,6 +61,8 @@ public class TrackStatistics { // The average heart rate seen on this track private HeartRate avgHeartRate = null; + private boolean isIdle; + public TrackStatistics() { reset(); } @@ -81,6 +83,7 @@ public class TrackStatistics { totalAltitudeGain_m = other.totalAltitudeGain_m; totalAltitudeLoss_m = other.totalAltitudeLoss_m; avgHeartRate = other.avgHeartRate; + isIdle = other.isIdle; } @VisibleForTesting @@ -168,6 +171,8 @@ public class TrackStatistics { setMaxSpeed(Speed.zero()); setTotalAltitudeGain(null); setTotalAltitudeLoss(null); + + isIdle = false; } public void reset(Instant startTime) { @@ -248,6 +253,14 @@ public class TrackStatistics { return totalTime.minus(movingTime); } + public boolean isIdle() { + return isIdle; + } + + public void setIdle(boolean idle) { + isIdle = idle; + } + public boolean hasAverageHeartRate() { return avgHeartRate != null; } diff --git a/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java b/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java index 93b5efa52..31dc37936 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java @@ -49,8 +49,6 @@ public class TrackStatisticsUpdater { // Current segment's last trackPoint private TrackPoint lastTrackPoint; - private boolean idle; - public TrackStatisticsUpdater() { this(new TrackStatistics()); } @@ -72,7 +70,6 @@ public class TrackStatisticsUpdater { this.trackStatistics = new TrackStatistics(toCopy.trackStatistics); this.lastTrackPoint = toCopy.lastTrackPoint; - this.idle = toCopy.idle; resetAverageHeartRate(); } @@ -140,18 +137,18 @@ public class TrackStatisticsUpdater { movingDistance = trackPoint.distanceToPrevious(lastTrackPoint); } if (movingDistance != null) { - idle = false; + currentSegment.setIdle(false); currentSegment.addTotalDistance(movingDistance); } - if (!idle && !trackPoint.isSegmentManualStart()) { + if (!currentSegment.isIdle() && !trackPoint.isSegmentManualStart()) { if (lastTrackPoint != null) { currentSegment.addMovingTime(trackPoint, lastTrackPoint); } } if (trackPoint.getType() == TrackPoint.Type.IDLE) { - idle = true; + currentSegment.setIdle(true); } if (trackPoint.hasSpeed()) { @@ -174,7 +171,6 @@ public class TrackStatisticsUpdater { currentSegment.reset(trackPoint.getTime()); lastTrackPoint = null; - idle = false; resetAverageHeartRate(); }