В 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, когда пользователь находится в состоянии переднего плана?

0 ответов

Другие вопросы по тегам