Есть ли альтернатива Location Client (API Google Play)?

Я работаю над приложением, которое использует данные о местоположении, и оно должно работать в Китае. Android-устройства, продаваемые здесь, в основном вообще не имеют установленного API Google Play, и единственный способ — получить root права на телефон, чтобы установить его. Поэтому я застрял с LocationManager, который работает намного хуже, чем LocationClient (часть API Google Play).

Моя проблема заключается в том, что LocationManager при чтении из GPS_PROVIDER часто не может подключиться к достаточному количеству спутников (в Китае), и между исправлениями иногда возникают значительные временные промежутки. При чтении из NETWORK_PROVIDER я могу получать более частые исправления, однако точность колеблется от 30 до 500. Далеко от качества LocationClient API.

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

Если я использую API Google Play и LocationClient, он действительно работает хорошо. Но это только на Nexus4 или каком-нибудь некитайском Android-устройстве.

Я спрашиваю, знает ли кто-нибудь библиотеку, которая может дать лучшие результаты, чем прямое использование LocationManager, или решение, как использовать LocationManager для улучшения результатов?


person Sinisa    schedule 04.04.2014    source источник
comment
github.com/novoda/Novocation   -  person bGorle    schedule 04.04.2014
comment
Почему бы не написать собственную реализацию с помощью Location Manager developer.android.com/guide/topics /location/strategies.html   -  person Muhammad Babar    schedule 04.04.2014
comment
Также android-developers.blogspot.com/2011/06 /   -  person Muhammad Babar    schedule 04.04.2014
comment
@MuhammadBabar это точно так же, как пример Google в SDK. Даже их пример с картой имеет ту же проблему (в Китае).   -  person Sinisa    schedule 04.04.2014


Ответы (1)


GPS не работает должным образом, вероятно, из-за отсутствия необходимых метаданных GPS (данные эфемерид и альманаха) или из-за медленного получения этих метаданных. В последнем случае в большинстве стран данные об эфемеридах и альманахах GPS доступны через сетевые источники. Если нет, чип GPS должен загрузить его со спутников, что может занять 5-20 минут (самое быстрое время, когда исходный поток данных предоставил достаточно информации для чипа GPS, чтобы получить блокировку). Я не знаком с доступностью этих данных в Китае через сетевые источники, но, судя по тому, что вы испытываете, похоже, что они не широко доступны. (Ключевые слова в гугле для получения дополнительной информации: СУПЛ, эфемериды, аламанах).

Когда GPS недоступен или медленно блокируется, сетевая геолокация является запасным вариантом, который использует точки Wi-Fi и вышки сотовой связи для триангуляции местоположения. Для этого требуется интернет-служба, чтобы устройство отправляло точки доступа и башни, которые оно видит, а служба отправляет обратно местоположение. Уровни точности от 30 до 500 метров вполне подходят для этого.

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

Сетевая геолокация на Android обычно предоставляется веб-службой Google, но операторы связи могут настроить телефон на использование других провайдеров.

Вы можете не использовать Google (Google Play или сетевой сервер геолокации Google) или встроенную службу сетевого определения местоположения, попробовав бесплатную службу сетевой геолокации Mozilla: https://location.services.mozilla.com/

Вам необходимо запросить ключ API: https://location.services.mozilla.com/api Для примера кода: это приложение одновременно предоставляет данные и является клиентом службы: https://github.com/mozilla/MozStumbler

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

person Garvan Keeley    schedule 04.01.2017
comment
Спасибо за Ваш ответ! Я не знал, что у Mozilla есть API геолокации, попробую посмотреть, как это работает в Китае. - person Sinisa; 05.01.2017
comment
Остерегайтесь Mozilla Geolocation API: The service is currently provided as-is, free of charge, without any guarantee on availability, accuracy of results or continued existence. We don't offer any commercial plans for the service and have no plans to provide such. - person Manuel; 14.04.2019