From f621cdf03281e5c89cc42565a671838cc22e82a0 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 1 Apr 2020 20:22:02 +0200 Subject: [PATCH] Removed grade internals completely. --- .../content/DescriptionGeneratorTest.java | 34 --------------- .../CustomContentProviderUtilsTest.java | 4 -- .../opentracks/stats/TripStatisticsTest.java | 6 --- .../content/DescriptionGenerator.java | 21 ---------- .../opentracks/fragments/StatsFragment.java | 22 +++++----- .../opentracks/stats/TripStatistics.java | 36 +--------------- .../stats/TripStatisticsUpdater.java | 42 +------------------ .../opentracks/util/PreferencesUtils.java | 6 +-- src/main/res/values/settings.xml | 2 +- src/main/res/xml/settings.xml | 2 +- 10 files changed, 18 insertions(+), 157 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java index 8208463c5..25ec4b60b 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java @@ -63,8 +63,6 @@ public class DescriptionGeneratorTest { stats.setMaxElevation(550); stats.setMinElevation(-500); stats.setTotalElevationGain(6000); - stats.setMaxGrade(0.42); - stats.setMinGrade(0.11); stats.setStartTime(START_TIME); track.setTripStatistics(stats); track.setCategory("hiking"); @@ -85,8 +83,6 @@ public class DescriptionGeneratorTest { + "Max elevation: 550 m (1804 ft)
" + "Min elevation: -500 m (-1640 ft)
" + "Elevation gain: 6000 m (19685 ft)
" - + "Max grade: 42 %
" - + "Min grade: 11 %
" + "Recorded: " + StringUtils.formatDateTime(context, START_TIME) + "
"; Assert.assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true)); @@ -142,34 +138,4 @@ public class DescriptionGeneratorTest { descriptionGenerator.writePace(1.1, builder, R.string.description_average_pace_in_minute, "\n"); Assert.assertEquals("Average pace: 15:09 min/km (24:23 min/mi)\n", builder.toString()); } - - /** - * Tests {@link DescriptionGenerator#writeGrade(double, StringBuilder, int, String)}. - */ - @Test - public void testWriteGrade() { - StringBuilder builder = new StringBuilder(); - descriptionGenerator.writeGrade(.042, builder, R.string.description_max_grade, "
"); - Assert.assertEquals("Max grade: 4 %
", builder.toString()); - } - - /** - * Tests {@link DescriptionGenerator#writeGrade(double, StringBuilder, int, String)} with a NaN. - */ - @Test - public void testWriteGrade_nan() { - StringBuilder builder = new StringBuilder(); - descriptionGenerator.writeGrade(Double.NaN, builder, R.string.description_max_grade, "
"); - Assert.assertEquals("Max grade: 0 %
", builder.toString()); - } - - /** - * Tests {@link DescriptionGenerator#writeGrade(double, StringBuilder, int, String)} with an infinite number. - */ - @Test - public void testWriteGrade_infinite() { - StringBuilder builder = new StringBuilder(); - descriptionGenerator.writeGrade(Double.POSITIVE_INFINITY, builder, R.string.description_max_grade, "
"); - Assert.assertEquals("Max grade: 0 %
", builder.toString()); - } } diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java index ff58109be..e1e5e21cb 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -323,8 +323,6 @@ public class CustomContentProviderUtilsTest { statistics.setMaxSpeed(60.0); statistics.setMaxElevation(1250.0); statistics.setMinElevation(1200.0); - statistics.setMaxGrade(15.0); - statistics.setMinGrade(minGrade); track.setTripStatistics(statistics); contentProviderUtils.insertTrack(track); @@ -427,8 +425,6 @@ public class CustomContentProviderUtilsTest { statistics.setMaxSpeed(60.0); statistics.setMaxElevation(1250.0); statistics.setMinElevation(1200.0); - statistics.setMaxGrade(15.0); - statistics.setMinGrade(-25.0); track.setTripStatistics(statistics); contentProviderUtils.insertTrack(track); diff --git a/src/androidTest/java/de/dennisguse/opentracks/stats/TripStatisticsTest.java b/src/androidTest/java/de/dennisguse/opentracks/stats/TripStatisticsTest.java index ff0b9c58c..3b307e664 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/stats/TripStatisticsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/stats/TripStatisticsTest.java @@ -58,10 +58,6 @@ public class TripStatisticsTest { statistics.setMinElevation(1200.0); // Resulting min elevation statistics2.setMaxElevation(3575.0); // Resulting max elevation statistics2.setMinElevation(2800.0); - statistics.setMaxGrade(15.0); - statistics.setMinGrade(-25.0); // Resulting min grade - statistics2.setMaxGrade(35.0); // Resulting max grade - statistics2.setMinGrade(0.0); statistics.merge(statistics2); @@ -74,8 +70,6 @@ public class TripStatisticsTest { Assert.assertEquals(statistics.getTotalDistance() / (statistics.getMovingTime() / 1000.0), statistics.getMaxSpeed(), 0.001); Assert.assertEquals(1200.0, statistics.getMinElevation(), 0.001); Assert.assertEquals(3575.0, statistics.getMaxElevation(), 0.001); - Assert.assertEquals(-25.0, statistics.getMinGrade(), 0.001); - Assert.assertEquals(35.0, statistics.getMaxGrade(), 0.001); } @Test diff --git a/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java b/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java index 6eaaf6d59..37549f51f 100644 --- a/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java +++ b/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java @@ -134,12 +134,6 @@ public class DescriptionGenerator { // Elevation gain writeElevation(stats.getTotalElevationGain(), builder, R.string.description_elevation_gain, lineBreak); - // Max grade - writeGrade(stats.getMaxGrade(), builder, R.string.description_max_grade, lineBreak); - - // Min grade - writeGrade(stats.getMinGrade(), builder, R.string.description_min_grade, lineBreak); - // Recorded time builder.append(context.getString(R.string.description_recorded_time, StringUtils.formatDateTime(context, stats.getStartTime()))); builder.append(lineBreak); @@ -228,19 +222,4 @@ public class DescriptionGenerator { builder.append(context.getString(resId, elevationInM, elevationInFt)); builder.append(lineBreak); } - - /** - * Writes grade. - * - * @param grade grade in fraction - * @param builder StringBuilder to append grade - * @param resId resource id grade string - * @param lineBreak line break string - */ - @VisibleForTesting - void writeGrade(double grade, StringBuilder builder, int resId, String lineBreak) { - long gradeInPercent = Double.isNaN(grade) || Double.isInfinite(grade) ? 0L : Math.round(grade * 100); - builder.append(context.getString(resId, gradeInPercent)); - builder.append(lineBreak); - } } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java index db5de29d3..6a24018c5 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatsFragment.java @@ -147,8 +147,8 @@ public class StatsFragment extends Fragment implements TrackDataListener { private TextView speedMovingLabel; private TextView speedMovingValue; private TextView speedMovingUnit; - private View gradeElevationSeparator; - private View gradeElevationContainer; + private View elevationSeparator; + private View elevationContainer; private View speedContainer; private TextView speedLabel; private TextView speedValue; @@ -190,8 +190,8 @@ public class StatsFragment extends Fragment implements TrackDataListener { speedMovingValue = view.findViewById(R.id.stats_moving_speed_value); speedMovingUnit = view.findViewById(R.id.stats_moving_speed_unit); - gradeElevationSeparator = view.findViewById(R.id.stats_elevation_separator); - gradeElevationContainer = view.findViewById(R.id.stats_elevation_container); + elevationSeparator = view.findViewById(R.id.stats_elevation_separator); + elevationContainer = view.findViewById(R.id.stats_elevation_container); speedContainer = view.findViewById(R.id.stats_speed); speedLabel = view.findViewById(R.id.stats_speed_label); @@ -297,8 +297,8 @@ public class StatsFragment extends Fragment implements TrackDataListener { speedMovingValue = null; speedMovingUnit = null; - gradeElevationSeparator = null; - gradeElevationContainer = null; + elevationSeparator = null; + elevationContainer = null; speedContainer = null; speedLabel = null; @@ -535,8 +535,8 @@ public class StatsFragment extends Fragment implements TrackDataListener { // Make elevation visible? { - boolean showElevation = PreferencesUtils.isShowStatsGradeElevation(getContext()); - gradeElevationSeparator.setVisibility(showElevation ? View.VISIBLE : View.GONE); + boolean showElevation = PreferencesUtils.isShowStatsElevation(getContext()); + elevationSeparator.setVisibility(showElevation ? View.VISIBLE : View.GONE); } } @@ -580,10 +580,10 @@ public class StatsFragment extends Fragment implements TrackDataListener { } // Set elevation - boolean showGradeElevation = isRecording && PreferencesUtils.isShowStatsGradeElevation(getContext()); - gradeElevationContainer.setVisibility(showGradeElevation ? View.VISIBLE : View.GONE); + boolean showElevation = isRecording && PreferencesUtils.isShowStatsElevation(getContext()); + elevationContainer.setVisibility(showElevation ? View.VISIBLE : View.GONE); - if (showGradeElevation) { + if (showElevation) { double altitude = lastTrackPoint != null && lastTrackPoint.hasAltitude() ? lastTrackPoint.getAltitude() : Double.NaN; Pair parts = StringUtils.formatElevation(getContext(), altitude, metricUnits); diff --git a/src/main/java/de/dennisguse/opentracks/stats/TripStatistics.java b/src/main/java/de/dennisguse/opentracks/stats/TripStatistics.java index 11e225bf6..2ba704146 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TripStatistics.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TripStatistics.java @@ -28,9 +28,6 @@ public class TripStatistics { // The min and max elevation (meters) seen on this trip. private final ExtremityMonitor elevationExtremities = new ExtremityMonitor(); - // The min and max grade seen on this trip. - @Deprecated //Remove grade min/max completely - private final ExtremityMonitor gradeExtremities = new ExtremityMonitor(); // The trip start time. This is the system time, might not match the GPs time. private long startTime = -1L; @@ -64,7 +61,6 @@ public class TripStatistics { maxSpeed_mps = other.maxSpeed_mps; elevationExtremities.set(other.elevationExtremities.getMin(), other.elevationExtremities.getMax()); totalElevationGain_m = other.totalElevationGain_m; - gradeExtremities.set(other.gradeExtremities.getMin(), other.gradeExtremities.getMax()); } /** @@ -85,10 +81,6 @@ public class TripStatistics { elevationExtremities.update(other.elevationExtremities.getMax()); } totalElevationGain_m += other.totalElevationGain_m; - if (other.gradeExtremities.hasData()) { - gradeExtremities.update(other.gradeExtremities.getMin()); - gradeExtremities.update(other.gradeExtremities.getMax()); - } } /** @@ -242,31 +234,6 @@ public class TripStatistics { totalElevationGain_m += gain_m; } - public double getMinGrade() { - return gradeExtremities.getMin(); - } - - public void setMinGrade(double grade) { - gradeExtremities.setMin(grade); - } - - public double getMaxGrade() { - return gradeExtremities.getMax(); - } - - /** - * Sets the maximum grade. - * - * @param grade the grade as a fraction (1.0 would mean vertical upwards) - */ - public void setMaxGrade(double grade) { - gradeExtremities.setMax(grade); - } - - public void updateGradeExtremities(double grade) { - gradeExtremities.update(grade); - } - @NonNull @Override public String toString() { @@ -274,7 +241,6 @@ public class TripStatistics { + "; Total Distance: " + getTotalDistance() + "; Total Time: " + getTotalTime() + "; Moving Time: " + getMovingTime() + "; Max Speed: " + getMaxSpeed() + "; Min Elevation: " + getMinElevation() + "; Max Elevation: " + getMaxElevation() - + "; Elevation Gain: " + getTotalElevationGain() + "; Min Grade: " + getMinGrade() - + "; Max Grade: " + getMaxGrade() + "}"; + + "; Elevation Gain: " + getTotalElevationGain() + "}"; } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/stats/TripStatisticsUpdater.java b/src/main/java/de/dennisguse/opentracks/stats/TripStatisticsUpdater.java index 12f51181c..b57b4e507 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/TripStatisticsUpdater.java +++ b/src/main/java/de/dennisguse/opentracks/stats/TripStatisticsUpdater.java @@ -38,21 +38,11 @@ import static de.dennisguse.opentracks.services.TrackRecordingService.MAX_NO_MOV public class TripStatisticsUpdater { /** - * The number of grade readings to smooth to get a somewhat accurate signal. - */ - public static final int GRADE_SMOOTHING_FACTOR = 5; - /** - * The number of elevation readings to smooth to get a somewhat accurate - * signal. + * The number of elevation readings to smooth to get a somewhat accurate signal. */ @VisibleForTesting private static final int ELEVATION_SMOOTHING_FACTOR = 25; - /** - * The number of run readings to smooth for calculating grade. - */ - @VisibleForTesting - private static final int RUN_SMOOTHING_FACTOR = 25; /** * The number of speed reading to smooth to get a somewhat accurate signal. */ @@ -72,10 +62,6 @@ public class TripStatisticsUpdater { // A buffer of the recent elevation readings (m) private final DoubleBuffer elevationBuffer = new DoubleBuffer(ELEVATION_SMOOTHING_FACTOR); - // A buffer of the recent run readings (m) for calculating grade - private final DoubleBuffer runBuffer = new DoubleBuffer(RUN_SMOOTHING_FACTOR); - // A buffer of the recent grade calculations (%) - private final DoubleBuffer gradeBuffer = new DoubleBuffer(GRADE_SMOOTHING_FACTOR); // A buffer of the recent speed readings (m/s) for calculating max speed private final DoubleBuffer speedBuffer = new DoubleBuffer(SPEED_SMOOTHING_FACTOR); @@ -143,8 +129,6 @@ public class TripStatisticsUpdater { lastTrackPoint = null; lastMovingTrackPoint = null; elevationBuffer.reset(); - runBuffer.reset(); - gradeBuffer.reset(); speedBuffer.reset(); return; } @@ -176,10 +160,6 @@ public class TripStatisticsUpdater { // Update moving time currentSegment.addMovingTime(movingTime); - // Update grade - double run = lastTrackPoint.distanceTo(trackPoint); - updateGrade(run, elevationDifference); - // Update max speed if (trackPoint.hasSpeed() && lastTrackPoint.hasSpeed()) { updateSpeed(trackPoint.getTime(), trackPoint.getSpeed(), lastTrackPoint.getTime(), lastTrackPoint.getSpeed()); @@ -250,26 +230,6 @@ public class TripStatisticsUpdater { return difference; } - /** - * Updates a grade reading. - * - * @param run the run - * @param rise the rise - */ - @VisibleForTesting - private void updateGrade(double run, double rise) { - runBuffer.setNext(run); - - double smoothedRun = runBuffer.getAverage(); - - // With the error in the altitude measurement, it is dangerous to divide by * anything less than 5. - if (smoothedRun < 5.0) { - return; - } - gradeBuffer.setNext(rise / smoothedRun); - currentSegment.updateGradeExtremities(gradeBuffer.getAverage()); - } - private TripStatistics init(long time) { TripStatistics stats = new TripStatistics(); stats.setStartTime(time); diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index e7583e282..3ac46856a 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -241,9 +241,9 @@ public class PreferencesUtils { return getBoolean(context, R.string.stats_keep_screen_on_while_recording_key, DEFAULT); } - public static boolean isShowStatsGradeElevation(Context context) { - final boolean STATS_SHOW_GRADE_ELEVATION = context.getResources().getBoolean(R.bool.stats_show_grade_elevation_default); - return getBoolean(context, R.string.stats_show_grade_elevation_key, STATS_SHOW_GRADE_ELEVATION); + public static boolean isShowStatsElevation(Context context) { + final boolean STATS_SHOW_ELEVATION = context.getResources().getBoolean(R.bool.stats_show_elevation_default); + return getBoolean(context, R.string.stats_show_grade_elevation_key, STATS_SHOW_ELEVATION); } public static boolean isStatsShowCoordinate(Context context) { diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml index dd7b38dcc..5c9693d6f 100644 --- a/src/main/res/values/settings.xml +++ b/src/main/res/values/settings.xml @@ -5,7 +5,7 @@ false statsShowGradeElevation - false + false trackdetail_show_on_lockscreen_while_recording false diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml index 53dc2e2de..d86b8dffe 100644 --- a/src/main/res/xml/settings.xml +++ b/src/main/res/xml/settings.xml @@ -44,7 +44,7 @@ limitations under the License.