У меня есть код, который запускается несколько раз в секунду в моем приложении. Я пытаюсь получить свое местоположение в каждом цикле. Я использую следующее:
Location myLastPos = LocationServices.FusedLocationApi.getLastLocation(googleApiClient)
Мое приложение также работает в фоновом режиме с использованием PARTIAL_WAKE_LOCK. С включенным экраном вроде все ОК. Когда я выключаю экран, мое приложение по-прежнему работает нормально, но я больше не получаю постоянно обновления местоположения. Похоже, я получаю обновления намного реже (часто минуты между обновлениями). Я проверяю временную метку местоположения, используя:
myLastPos.getElapsedRealtimeNanos()
Я также обнаружил, что даже при включенном экране я получаю странные результаты. Иногда я получаю несколько миллисекунд между обновлениями, иногда я получаю несколько секунд. Все это очень настораживает. Может ли кто-нибудь помочь мне правильно использовать FusedLocationApi или предложить альтернативу. Все, что я действительно хочу, это опрашивать GPS напрямую для широты / долготы несколько раз в секунду, не мешая библиотекам Google.
getLastLocation()
просто получает последнее известное местоположение, известное устройству. Устройство не определяет свое местоположение само по себе, а только тогда, когда какое-либо приложение запрашивает местоположение. Таким образом, ваше приложение теперь зависит от других приложений, запрашивающих обновления местоположения. Если вам нужны обновления каждые несколько секунд, запросите регулярные обновления местоположения самостоятельно. В разделе документации есть примеры кода. - person Markus Kauppinen   schedule 12.10.2016null
местоположения. - person Markus Kauppinen   schedule 14.10.2016