diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Distance.java b/src/main/java/de/dennisguse/opentracks/data/models/Distance.java index ae2daf4a8..fb0d41564 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Distance.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Distance.java @@ -1,6 +1,7 @@ package de.dennisguse.opentracks.data.models; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import java.util.Objects; @@ -14,6 +15,14 @@ public class Distance { return of(Float.parseFloat(distance_m)); } + @Nullable + public static Distance ofOrNull(Double distance_m) { + if (distance_m == null) { + return null; + } + return of(distance_m); + } + public static Distance ofMile(double distance_mile) { return of(distance_mile * UnitConversions.MI_TO_M); } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java index 15ef7124e..cb83bce78 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java @@ -34,10 +34,10 @@ import java.util.stream.Stream; import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.data.TrackPointIterator; +import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Marker; import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.TrackPoint; -import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.util.StringUtils; @@ -358,7 +358,7 @@ public class GPXTrackExporter implements TrackExporter { trackPointExtensionContent += ("" + ALTITUDE_FORMAT.format(cumulativeLoss) + "\n"); } - cumulativeDistance = Distance.of(cumulateSensorData(trackPoint, sensorPoints, (tp) -> tp.hasSensorDistance() ? tp.getSensorDistance().toM() : null)); + cumulativeDistance = Distance.ofOrNull(cumulateSensorData(trackPoint, sensorPoints, (tp) -> tp.hasSensorDistance() ? tp.getSensorDistance().toM() : null)); if (cumulativeDistance != null) { trackPointExtensionContent += ("" + DISTANCE_FORMAT.format(cumulativeDistance.toM()) + "\n"); trackPointExtensionContent += ("" + DISTANCE_FORMAT.format(trackDistance.plus(cumulativeDistance).toM()) + "\n");