Почему у Android такие проблемы с запоминанием последнего известного местоположения?

12

Я никогда не мог понять, каким образом Android запоминает свое последнее известное местоположение. Кажется, вы помните это место несколько часов назад, а не несколько секунд назад. Я думаю, что лучше всего привести пример того, что я имею в виду.

Я недавно был в районе залива. Я использовал карты Google на своем Android, и я оказался рядом с кампусом Google в Маунтин-Вью. Я использовал карты с включенным GPS, и через некоторое время я получил надлежащий GPS-замок, который я использовал для навигации по области.

Когда позже я вернулся в Сан-Франциско, я использовал его, чтобы передвигаться по городу. Каждый раз, когда я включал карты, мое местоположение возвращалось в Маунтин-Вью. Примерно через 10 секунд после того, как он получил блокировку GPS, я получил свое реальное местоположение. Если через несколько секунд я выключил и снова включил телефон, произошло то же самое - он подумал, что я где-то, где я был часами ранее, и затем укажет мое фактическое местоположение. Это происходит постоянно - вспоминая, где я был несколько часов назад, а не где я был несколько минут назад. После того, как я проработал какое-то время в определенном месте, теперь он становится новым «последним известным местом».

Почему, как только я получаю точную блокировку GPS, Android не регистрирует это как «последнее известное местоположение» вместо того, которое было ранее?

Тим
источник

Ответы:

3

Не полный ответ, но некоторая справочная информация:

  • У вашего устройства может быть более одного провайдера местоположения, например, один на основе GPS и один на основе того, какие мобильные телефоны могут видеть.
  • У Android нет ни одной последней известной позиции. Каждый поставщик местоположения имеет свою последнюю известную позицию.
  • Местоположение имеет дополнительные метрики, такие как точность, когда оно было записано, что было записано (например, имеет ли он компонент высоты и т. Д.)

Таким образом, это зависит от того, какой поставщик местоположения использует приложение, и это может зависеть или даже меняться в зависимости от динамических параметров. Например, при запуске он может запросить у Android самого быстрого провайдера определения местоположения, а затем переключиться на самого точного, чтобы постепенно получить лучшее решение.

user4188
источник
Это действительно хорошее, краткое объяснение. Спасибо.
Ник Диксон
Это также имеет смысл, так как, когда я вернулся в город, у меня не было Wi-Fi / мобильных данных. В кампусе Google был Wi-Fi. Таким образом, карты должны были первоначально использовать «грубое» (то есть, wifi) последнее известное местоположение (которое было в Google), а затем, когда GPS через несколько секунд включился, он обновляется. Я бы еще подумал, что местоположение lasknown GPS будет более свежим / лучшим для чтения.
Тим
этот ответ больше похож на комментарий. и если грубое расположение имеет меньший приоритет, это еще меньше объяснит, почему телефон вернул mnt view позже.
ГКБ
2

Насколько я понимаю, Android использует грубые и мелкозернистые обновления местоположения типа, и эти обновления также могут иметь различные показатели качества. Может случиться так, что в приложении Google Maps не было достаточно сигналов GPS и Wifi на новом месте, чтобы оно было достаточно высокого качества, чтобы быть последним известным местоположением.

Документы для разработчиков по адресу http://developer.android.com/guide/topics/location/obtainment-user-location.html приводят несколько примеров моделей для определения местоположения пользователей, которые могут дать некоторое представление о том, как это работает. Но я думаю, Google Maps и, возможно, другие карты делают свое дело.

Энди Шинн
источник