From 0c4694a2cfa16389323a4b53177f457f24ee27ad Mon Sep 17 00:00:00 2001 From: kavi khalique <120750626+kavikhalique@users.noreply.github.com> Date: Wed, 11 Jun 2025 01:33:50 +0530 Subject: [PATCH] [android] Fix jump of current location point (#10658) * Remove check bypass for fused location updates Signed-off-by: kavikhalique * discard close co-ord updates from different providers Signed-off-by: kavikhalique * reject older timestamps Signed-off-by: kavikhalique --------- Signed-off-by: kavikhalique --- .../src/main/java/app/organicmaps/location/LocationHelper.java | 2 +- .../app/src/main/java/app/organicmaps/util/LocationUtils.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/app/organicmaps/location/LocationHelper.java b/android/app/src/main/java/app/organicmaps/location/LocationHelper.java index 9c0fbac83..844957bb4 100644 --- a/android/app/src/main/java/app/organicmaps/location/LocationHelper.java +++ b/android/app/src/main/java/app/organicmaps/location/LocationHelper.java @@ -213,7 +213,7 @@ public class LocationHelper implements BaseLocationProvider.Listener if (mSavedLocation != null) { - if (!LocationUtils.isFromFusedProvider(location) && !LocationUtils.isLocationBetterThanLast(location, mSavedLocation)) + if (!LocationUtils.isLocationBetterThanLast(location, mSavedLocation)) { Logger.d(TAG, "The new " + location + " is worse than the last " + mSavedLocation); return; diff --git a/android/app/src/main/java/app/organicmaps/util/LocationUtils.java b/android/app/src/main/java/app/organicmaps/util/LocationUtils.java index e8c257151..735b427ef 100644 --- a/android/app/src/main/java/app/organicmaps/util/LocationUtils.java +++ b/android/app/src/main/java/app/organicmaps/util/LocationUtils.java @@ -84,6 +84,9 @@ public class LocationUtils public static boolean isLocationBetterThanLast(@NonNull Location newLocation, @NonNull Location lastLocation) { + if (newLocation.getElapsedRealtimeNanos() < lastLocation.getElapsedRealtimeNanos()) + return false; + // As described in isAccuracySatisfied, GPS may have zero accuracy "for some reasons". if (isFromGpsProvider(lastLocation) && lastLocation.getAccuracy() == 0.0f) return true;