Хобрук: Ваш путь к мастерству в программировании

API плавного определения местоположения дает очень неточное местоположение после закрытия карт Google.

Наше приложение использует API местоположения Google Fused для получения обновлений местоположения каждые 3 минуты. Настройки запроса местоположения следующие:

  • Интервал – 3min
  • Самый быстрый интервал – 1 min
  • Приоритет - PRIORITY_BALANCED_POWER_ACCURACY

В обычном рабочем сценарии обновления местоположения принимаются правильно, а точность определения местоположения довольно хорошая (около 20-25 м).

Когда приложение «Карты» открыто, оно получает местоположение GPS, и поэтому наше приложение также начинает получать обновления местоположения, которые в основном поступают от приемопередатчика GPS (я знаю это, поскольку последующие обновления местоположения также имеют значение скорости и высоты).

Проблема возникает, когда приложение «Карты» закрыто. Наше приложение получает обновления местоположения, но координаты местоположения не меняются, и каждое последующее полученное обновление имеет более высокое значение точности. Обновления могут достигать точности даже 1000 м, и точное местоположение не получено. Повторное открытие приложения карт заставит наше приложение снова получать точные и обновленные местоположения.

Эта проблема также может быть связана с конкретным устройством, поскольку я видел эту проблему на Motorola Moto G, а не на других моих телефонах Samsung или Karbonn.



Ответы:


1

По моему опыту, установка приоритета на PRIORITY_BALANCED_POWER_ACCURACY никогда не получает позиции от GPS, если только его не использует другое приложение. Это то же самое поведение, которое вы находите в своем приложении (в вашем случае вы получаете позиционирование GPS только тогда, когда Карты открыты), и это, похоже, общее поведение (см. Исключает ли PRIORITY_BALANCED_POWER_ACCURACY провайдера GPS?).

Я не нашел официальной документации, подтверждающей это, поэтому я думаю, что это может зависеть от устройства. В моих тестах всякий раз, когда мне нужно GPS-позиционирование, мне нужно изменить приоритет на PRIORITY_HIGH_ACCURACY.

В любом случае, существует известная проблема (57707), которая отображается на некоторых устройствах, из-за чего провайдер местоположения перестает получать обновления местоположения, если он установлен в PRIORITY_BALANCED_POWER_ACCURACY, до тех пор, пока устройство не будет перезапущено.

25.05.2015
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..