diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java index 2daf4007d..232b7f620 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/DescriptionGeneratorTest.java @@ -88,6 +88,40 @@ public class DescriptionGeneratorTest { Assert.assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true)); } + @Test + public void testGenerateTrackDescriptionWithoutMaxMinElevation() { + Track track = new Track(); + TrackStatistics stats = new TrackStatistics(); + stats.setTotalDistance(20000); + stats.setTotalTime(600000); + stats.setMovingTime(300000); + stats.setMaxSpeed(100); + stats.setMaxElevation(Double.POSITIVE_INFINITY); + stats.setMinElevation(Double.NEGATIVE_INFINITY); + stats.setTotalElevationGain(6000); + stats.setStartTime_ms(START_TIME); + track.setTrackStatistics(stats); + track.setCategory("hiking"); + String expected = //"Created by" + "OpenTracks
"
+ + "Name: -
"
+ + "Activity type: hiking
"
+ + "Description: -
"
+ + "Total distance: 20.00 km (12.4 mi)
"
+ + "Total time: 10:00
"
+ + "Moving time: 05:00
"
+ + "Average speed: 120.00 km/h (74.6 mi/h)
"
+ + "Average moving speed: 240.00 km/h (149.1 mi/h)
"
+ + "Max speed: 360.00 km/h (223.7 mi/h)
"
+ + "Average pace: 0:30 min/km (0:48 min/mi)
"
+ + "Average moving pace: 0:15 min/km (0:24 min/mi)
"
+ + "Fastest pace: 0:10 min/km (0:16 min/mi)
"
+ + "Elevation gain: 6000 m (19685 ft)
"
+ + "Recorded: " + StringUtils.formatDateTime(context, START_TIME) + "
";
+
+ Assert.assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true));
+ }
+
/**
* Tests {@link DescriptionGenerator#writeDistance(double, StringBuilder, int, String)}.
diff --git a/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java b/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java
index e4933e6f2..be850d530 100644
--- a/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java
+++ b/src/main/java/de/dennisguse/opentracks/content/DescriptionGenerator.java
@@ -126,10 +126,14 @@ public class DescriptionGenerator {
writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace_in_minute, lineBreak);
// Max elevation
- writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak);
+ if (stats.hasElevationMax()) {
+ writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak);
+ }
// Min elevation
- writeElevation(stats.getMinElevation(), builder, R.string.description_min_elevation, lineBreak);
+ if (stats.hasElevationMin()) {
+ writeElevation(stats.getMinElevation(), builder, R.string.description_min_elevation, lineBreak);
+ }
// Elevation gain
writeElevation(stats.getTotalElevationGain(), builder, R.string.description_elevation_gain, lineBreak);
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java
index 726a6ed00..3446e5873 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java
@@ -313,6 +313,9 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
*/
protected TrackPoint getTrackPoint() throws SAXException {
TrackPoint trackPoint = createTrackPoint();
+ if (trackPoint == null) {
+ throw new SAXException(createErrorMessage("Invalid location detected: " + trackPoint));
+ }
// Calculate derived attributes from the previous point
if (trackData.lastLocationInCurrentSegment != null && trackData.lastLocationInCurrentSegment.getTime() != 0) {
diff --git a/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java b/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java
index 37cd6b273..fa4fb271d 100644
--- a/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java
+++ b/src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java
@@ -176,6 +176,10 @@ public class TrackStatistics {
this.maxSpeed_mps = maxSpeed;
}
+ public boolean hasElevationMin() {
+ return !Double.isInfinite(getMinElevation());
+ }
+
/**
* Gets the minimum elevation.
* This is calculated from the smoothed elevation, so this can actually be more than the current elevation.
@@ -193,6 +197,10 @@ public class TrackStatistics {
elevationExtremities.setMin(elevation);
}
+ public boolean hasElevationMax() {
+ return !Double.isInfinite(getMaxElevation());
+ }
+
/**
* Gets the maximum elevation.
* This is calculated from the smoothed elevation, so this can actually be less than the current elevation.