Only update geocode sensor if accuracy and time are valid, like location updates (#2802)

This commit is contained in:
Daniel Shokouhi 2022-08-19 17:34:33 -07:00 committed by GitHub
parent 06fe9569cc
commit da8263dc9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -76,10 +76,20 @@ class GeocodeSensorManager : SensorManager {
?: DEFAULT_MINIMUM_ACCURACY
sensorDao.add(SensorSetting(geocodedLocation.id, SETTING_ACCURACY, minAccuracy.toString(), SensorSettingType.NUMBER))
if (location.accuracy <= minAccuracy)
if (location.accuracy <= minAccuracy) {
address = Geocoder(context)
.getFromLocation(location.latitude, location.longitude, 1)
.firstOrNull()
} else {
Log.w(TAG, "Skipping geocoded update as accuracy was not met: ${location.accuracy}")
return@addOnSuccessListener
}
val now = System.currentTimeMillis()
if (now - location.time > 300000) {
Log.w(TAG, "Skipping geocoded update due to old timestamp ${location.time} compared to $now")
return@addOnSuccessListener
}
} catch (e: Exception) {
Log.e(TAG, "Failed to get geocoded location", e)
}
@ -99,7 +109,7 @@ class GeocodeSensorManager : SensorManager {
)
}.orEmpty()
var prettyAddress = address?.getAddressLine(0)
val prettyAddress = address?.getAddressLine(0)
HighAccuracyLocationService.updateNotificationAddress(context, location, if (!prettyAddress.isNullOrEmpty()) prettyAddress else context.getString(commonR.string.unknown_address))