В Oreo 8.0 getFusedLocationProviderClient lastLocation всегда возвращает ноль, даже в состоянии переднего плана? - Котлин
Я работал с провайдером Fused Location с 7.0 Nougat только на переднем плане. Он работал нормально с ним и предоставил мне обновление местоположения на переднем плане. Тот же код в Android 8.0 Oreo не предоставляет мне обновление местоположения один раз с соответствующими разрешениями и должным образом активированными службами определения местоположения.
Код для определения последнего местоположения выглядит следующим образом:
LocationServices.getFusedLocationProviderClient(mContext).lastLocation
.addOnSuccessListener { location: Location? ->
mLocationChanged(location)
stopLocationUpdates()
}
Я всегда получаю ноль здесь. Как только я получаю обновление местоположения от поставщика, я прекращаю обновление местоположения, чтобы гарантировать меньшее использование батареи. Запрос местоположения инициализируется следующим образом:
private fun createLocationRequest() {
mLocationRequest = LocationRequest.create()
mLocationRequest.interval = INTERVAL
mLocationRequest.fastestInterval = FASTEST_INTERVAL
mLocationRequest.maxWaitTime = INTERVAL
mLocationRequest.priority = LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY
}
Через некоторое время, это дает мне этот журнал:
Location permission exists but GoogleApiClient timed out. Maybe related to mismatch google-play aar versions.
Я использую com.google.android.gms:play-services-location:12.0.0 для Google Location. Это работает в нуге, почему не в Oreo тогда?
Как я могу получить правильные обновления местоположения в Oreo, когда пользователь находится в состоянии переднего плана?