From b9940c510b5f2960c00c42cd41c4c1a5ec3af0ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sat, 17 Aug 2024 19:47:34 +0100 Subject: [PATCH] Garmin: Fix crash on decoding null gps coordinates --- .../fit/fieldDefinitions/FieldDefinitionCoordinate.java | 6 +++++- .../service/devices/garmin/fit/messages/FitRecord.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/fieldDefinitions/FieldDefinitionCoordinate.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/fieldDefinitions/FieldDefinitionCoordinate.java index dd2705f69..31d17871b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/fieldDefinitions/FieldDefinitionCoordinate.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/fieldDefinitions/FieldDefinitionCoordinate.java @@ -15,7 +15,11 @@ public class FieldDefinitionCoordinate extends FieldDefinition { @Override public Object decode(ByteBuffer byteBuffer) { - return ((long) baseType.decode(byteBuffer, 1, 0)) * conversionFactor; + final Object rawValue = baseType.decode(byteBuffer, 1, 0); + if (rawValue == null) { + return null; + } + return ((long) rawValue) * conversionFactor; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/messages/FitRecord.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/messages/FitRecord.java index 4a89bb250..a43038542 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/messages/FitRecord.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/fit/messages/FitRecord.java @@ -84,7 +84,7 @@ public class FitRecord extends RecordData { public ActivityPoint toActivityPoint() { final ActivityPoint activityPoint = new ActivityPoint(); - activityPoint.setTime(new Date(getComputedTimestamp())); + activityPoint.setTime(new Date(getComputedTimestamp() * 1000L)); if (getLatitude() != null && getLongitude() != null) { activityPoint.setLocation(new GPSCoordinate( getLongitude(),