From 079d51f4af8a2ed0d2dd8029f6dd14169bbb49f2 Mon Sep 17 00:00:00 2001 From: David Gekeler Date: Sat, 7 Jun 2025 18:46:05 +0200 Subject: [PATCH] [android] Clarify speed average behaviour in absence of location updates Signed-off-by: David Gekeler --- .../app/organicmaps/sdk/location/LocationHelper.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationHelper.java b/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationHelper.java index 934b75998..c4e4b4fba 100644 --- a/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationHelper.java +++ b/android/sdk/src/main/java/app/organicmaps/sdk/location/LocationHelper.java @@ -509,15 +509,18 @@ public class LocationHelper implements BaseLocationProvider.Listener return Float.NaN; if (Double.isNaN(mTimeElapsedAtLastAverage)) updateSpeedHistory(); - if (mSavedLocation.getElapsedRealtimeNanos() * 1.0E-9 - mTimeElapsedAtLastAverage < SPEED_AVERAGING_TIME) + double timeDiff = mSavedLocation.getElapsedRealtimeNanos() * 1.0E-9 - mTimeElapsedAtLastAverage; + if (timeDiff < SPEED_AVERAGING_TIME) { if (!Float.isNaN(mLastAverageSpeed)) return mLastAverageSpeed; else return mSavedLocation.getSpeed(); } - else - { + else if (mSpeedHistory.isEmpty()) + // If no measurements since last average, return 0 + return 0.0F; + else { mLastAverageSpeed = mSpeedHistory.stream().reduce(0.0F, Float::sum); mLastAverageSpeed /= mSpeedHistory.size(); mSpeedHistory.clear();