From 0b326a77c2b04caa4c27107916f596d72623f274 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 11 Jun 2022 14:24:41 +0200 Subject: [PATCH] Bugfix: Elevation in charts smoothing removed as it was broken. Fixes #1241. --- .../opentracks/chart/ChartPointTest.java | 24 +++++++++++-------- .../opentracks/chart/ChartFragment.java | 4 ++-- .../opentracks/chart/ChartPoint.java | 6 ++--- .../opentracks/data/TrackDataHub.java | 4 ++-- .../opentracks/data/models/TrackPoint.java | 2 +- .../stats/TrackStatisticsUpdater.java | 8 ------- 6 files changed, 22 insertions(+), 26 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java index 70ce05e71..3744e7e32 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java @@ -27,7 +27,7 @@ public class ChartPointTest { statistics.setTotalTime(Duration.ofSeconds(1000)); // when - ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), Altitude.EGM2008.of(0), false, UnitSystem.IMPERIAL); + ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), false, UnitSystem.IMPERIAL); // then assertEquals(1000000, (long) point.getTimeOrDistance()); @@ -40,7 +40,7 @@ public class ChartPointTest { statistics.setTotalDistance(Distance.of(1000)); // when - ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), Altitude.EGM2008.of(0), true, UnitSystem.METRIC); + ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), true, UnitSystem.METRIC); // then assertEquals(1, (long) point.getTimeOrDistance()); @@ -50,9 +50,11 @@ public class ChartPointTest { public void create_get_altitude_speed_and_pace() { // given TrackStatistics statistics = new TrackStatistics(); + TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint() + .setAltitude(Altitude.EGM2008.of(50)); // when - ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(10), Altitude.EGM2008.of(50), false, UnitSystem.METRIC); + ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); // then assertEquals(50, point.getAltitude(), 0.01); @@ -64,9 +66,10 @@ public class ChartPointTest { public void create_sensorNotAvailable() { // given TrackStatistics statistics = new TrackStatistics(); - + TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint() + .setAltitude(Altitude.EGM2008.of(50)); // when - ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(10), Altitude.EGM2008.of(50), false, UnitSystem.METRIC); + ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); // then assertNull(point.getHeartRate()); @@ -77,15 +80,16 @@ public class ChartPointTest { @Test public void create_sensorAvailable() { // given - TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint(); - trackPoint.setHeartRate(100f); - trackPoint.setCadence(101f); - trackPoint.setPower(102f); + TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint() + .setAltitude(Altitude.EGM2008.of(50)) + .setHeartRate(100f) + .setCadence(101f) + .setPower(102f); TrackStatistics statistics = new TrackStatistics(); // when - ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), Altitude.EGM2008.of(50), false, UnitSystem.METRIC); + ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); // then assertEquals(100.0, point.getHeartRate(), 0.01); diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java b/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java index 566f27f59..d9b4117c5 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java @@ -188,9 +188,9 @@ public class ChartFragment extends Fragment implements TrackDataHub.Listener { } } - public void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics, Speed smoothedSpeed, Altitude smoothedAltitude) { + public void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics, Speed smoothedSpeed) { if (isResumed()) { - ChartPoint point = new ChartPoint(trackStatistics, trackPoint, smoothedSpeed, smoothedAltitude, chartByDistance, viewBinding.chartView.getUnitSystem()); + ChartPoint point = new ChartPoint(trackStatistics, trackPoint, smoothedSpeed, chartByDistance, viewBinding.chartView.getUnitSystem()); pendingPoints.add(point); } } diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java b/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java index 8868abc78..0c14f0294 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java @@ -29,15 +29,15 @@ public class ChartPoint { this.altitude = altitude; } - public ChartPoint(@NonNull TrackStatistics trackStatistics, @NonNull TrackPoint trackPoint, Speed smoothedSpeed, Altitude smoothedAltitude, boolean chartByDistance, UnitSystem unitSystem) { + public ChartPoint(@NonNull TrackStatistics trackStatistics, @NonNull TrackPoint trackPoint, Speed smoothedSpeed, boolean chartByDistance, UnitSystem unitSystem) { if (chartByDistance) { timeOrDistance = trackStatistics.getTotalDistance().toKM_Miles(unitSystem); } else { timeOrDistance = trackStatistics.getTotalTime().toMillis(); } - if (smoothedAltitude != null) { - altitude = Distance.of(smoothedAltitude.toM()).toM_FT(unitSystem); + if (trackPoint.hasAltitude()) { + altitude = Distance.of(trackPoint.getAltitude().toM()).toM_FT(unitSystem); } if (smoothedSpeed != null) { diff --git a/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java b/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java index 8354bdbb3..0182022ba 100644 --- a/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java +++ b/src/main/java/de/dennisguse/opentracks/data/TrackDataHub.java @@ -367,7 +367,7 @@ public class TrackDataHub { // Also include the last point if the selected track is not recording. if ((localNumLoadedTrackPoints % samplingFrequency == 0) || (trackPointId == lastTrackPointId && !isSelectedTrackRecording())) { for (Listener trackDataListener : listeners) { - trackDataListener.onSampledInTrackPoint(trackPoint, currentUpdater.getTrackStatistics(), currentUpdater.getSmoothedSpeed(), currentUpdater.getSmoothedAltitude()); + trackDataListener.onSampledInTrackPoint(trackPoint, currentUpdater.getTrackStatistics(), currentUpdater.getSmoothedSpeed()); } } else { for (Listener trackDataListener : listeners) { @@ -432,7 +432,7 @@ public class TrackDataHub { * * @param trackPoint the trackPoint */ - default void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics, Speed smoothedSpeed, @Nullable Altitude smoothedAltitude_m) { + default void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics, Speed smoothedSpeed) { } /** diff --git a/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java b/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java index 07470f6d2..489761ba4 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java @@ -46,7 +46,7 @@ public class TrackPoint { private Double longitude; private Distance horizontalAccuracy; private Distance verticalAccuracy; - private Altitude altitude; + private Altitude altitude; //TODO use Altitude.WGS84 private Speed speed; private Float bearing; private Distance sensorDistance; diff --git a/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java b/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java index 72aa52b6d..70a30fd67 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TrackStatisticsUpdater.java @@ -208,14 +208,6 @@ public class TrackStatisticsUpdater { totalHeartRateDuration = Duration.ZERO; } - /** - * Gets the smoothed altitude over several readings. - * The altitude readings is noisy so the smoothed altitude is better than the raw altitude for many tasks. - */ - public Altitude getSmoothedAltitude() { - return altitudeBuffer.getAverage(); - } - public Speed getSmoothedSpeed() { return speedBuffer.getAverage(); }