From 96e6d492b35ed0b9ff6117266bb9916cdcf668ed Mon Sep 17 00:00:00 2001 From: DaVinci9196 Date: Tue, 25 Aug 2026 19:52:41 +0800 Subject: [PATCH] Location: Fix speed calculation for sub-second updates --- .../location/manager/LastLocationCapsule.kt | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/play-services-location/core/src/main/kotlin/org/microg/gms/location/manager/LastLocationCapsule.kt b/play-services-location/core/src/main/kotlin/org/microg/gms/location/manager/LastLocationCapsule.kt index 7a882c3863..754341e7f3 100644 --- a/play-services-location/core/src/main/kotlin/org/microg/gms/location/manager/LastLocationCapsule.kt +++ b/play-services-location/core/src/main/kotlin/org/microg/gms/location/manager/LastLocationCapsule.kt @@ -66,14 +66,21 @@ class LastLocationCapsule(private val context: Context) { fun updateCoarseLocation(location: Location) { location.elapsedRealtimeNanos = min(location.elapsedRealtimeNanos, SystemClock.elapsedRealtimeNanos()) location.time = min(location.time, System.currentTimeMillis()) - if (lastCoarseLocation != null && lastCoarseLocation!!.elapsedMillis + EXTENSION_CLIFF > location.elapsedMillis) { - if (!location.hasSpeed()) { - location.speed = lastCoarseLocation!!.distanceTo(location) / ((location.elapsedMillis - lastCoarseLocation!!.elapsedMillis) / 1000) - LocationCompat.setSpeedAccuracyMetersPerSecond(location, location.speed) - } - if (!location.hasBearing() && location.speed > 0.5f) { - location.bearing = lastCoarseLocation!!.bearingTo(location) - LocationCompat.setBearingAccuracyDegrees(location, 180.0f) + val previousLocation = lastCoarseLocation + if (previousLocation != null) { + val elapsedMillis = location.elapsedMillis - previousLocation.elapsedMillis + if (elapsedMillis in 1.. 0.5f) { + location.bearing = previousLocation.bearingTo(location) + LocationCompat.setBearingAccuracyDegrees(location, 180.0f) + } } } lastCoarseLocation = newest(lastCoarseLocation, location) @@ -159,4 +166,4 @@ class LastLocationCapsule(private val context: Context) { } } } -} \ No newline at end of file +}