From 56fd2f843083803b046e4072dd53c2ef087f050e Mon Sep 17 00:00:00 2001 From: illis Date: Wed, 30 Aug 2023 21:33:07 +1200 Subject: [PATCH] Give a more accurate representation of gps speed when manually calculating. Dividing early makes us lose alot of precision. --- .../gadgetbridge/externalevents/gps/GBLocationListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/gps/GBLocationListener.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/gps/GBLocationListener.java index c77672057..790442d02 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/gps/GBLocationListener.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/gps/GBLocationListener.java @@ -54,9 +54,9 @@ public class GBLocationListener implements LocationListener { // Some devices report hasSpeed() as true, and yet only return a 0 value, so we have to check against a speed threshold boolean hasValidSpeed = location.hasSpeed() && (location.getSpeed() > SPEED_THRESHOLD); if (previousLocation != null && !hasValidSpeed) { - long timeInterval = (location.getTime() - previousLocation.getTime()) / 1000L; + long timeInterval = (location.getTime() - previousLocation.getTime()); float distanceInMeters = previousLocation.distanceTo(location); - location.setSpeed(distanceInMeters / timeInterval); + location.setSpeed(distanceInMeters / timeInterval * 1000L); } previousLocation = location;