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 +}