mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Garmin: ignore Null Island for ActivitySummaryData.setHasGps
Some indoor tracks, like Edge1030's Cycling / Virtual Activity, record all points with fake Null Island (0°N 0°E) position.
This commit is contained in:
committed by
José Rebelo
parent
9344940260
commit
4da08f7968
+17
-2
@@ -44,6 +44,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityPoint;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryData;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryParser;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.GPSCoordinate;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.workout.Workout;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.workout.WorkoutChart;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.FitFile;
|
||||
@@ -761,8 +762,8 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
}
|
||||
|
||||
summaryData.setHasGps(
|
||||
activityPoints.stream().anyMatch(p -> p.getLocation() != null) ||
|
||||
sessionActivityPoints.stream().anyMatch(p -> p.getLocation() != null)
|
||||
activityPoints.stream().anyMatch(GarminWorkoutParser::hasNonNullIslandLocation) ||
|
||||
sessionActivityPoints.stream().anyMatch(GarminWorkoutParser::hasNonNullIslandLocation)
|
||||
);
|
||||
|
||||
summary.setSummaryData(summaryData.toString());
|
||||
@@ -770,6 +771,20 @@ public class GarminWorkoutParser implements ActivitySummaryParser {
|
||||
return summaryData;
|
||||
}
|
||||
|
||||
// Some indoor activities record all points with fake Null Island (0°N 0°E) position.
|
||||
private static boolean hasNonNullIslandLocation(final ActivityPoint point) {
|
||||
if (point != null) {
|
||||
final GPSCoordinate location = point.getLocation();
|
||||
if (location != null) {
|
||||
final double lat = location.getLatitude();
|
||||
final double lon = location.getLongitude();
|
||||
// test for any value other than NaN and 0.0
|
||||
return (lat == lat && lat != 0.0) || (lon == lon && lon != 0.0);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public Number safeRound(final Number number) {
|
||||
if (number == null) {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user