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");