Поставщики местоположения Android - GPS или сетевой провайдер?

В моем приложении я хотел бы определить текущее местоположение пользователя. Однако у меня есть несколько вопросов в этом отношении:

  • Существуют ли разные провайдеры, которые наиболее точны? Поставщик GPS или Сетевой поставщик?

  • Насколько далеко различаются эти поставщики? Как они функционируют?

  • Не могли бы вы предоставить мне некоторые фрагменты кода или учебники о том, как начать работу с функциями GPS в моем приложении?

Ответ 1

В Android есть 3 провайдера местоположения.

Они есть:

GPS → (GPS, AGPS): название провайдера местоположения GPS. Этот провайдер определяет местоположение, используя спутники. В зависимости от условий этому провайдеру может потребоваться некоторое время, чтобы вернуть исправление местоположения. Требуется разрешение android.permission.ACCESS_FINE_LOCATION.

сеть → (AGPS, CellID, WiFi MACID): имя поставщика сетевых расположений. Этот провайдер определяет местоположение на основе доступности вышки сотовой связи и точек доступа WiFi. Результаты извлекаются с помощью поиска в сети. Требуются либо разрешения android.permission.ACCESS_COARSE_LOCATION, либо android.permission.ACCESS_FINE_LOCATION.

пассивный → (CellID, WiFi MACID): специальный поставщик местоположения для получения местоположений без фактического инициирования исправления местоположения. Этот поставщик может использоваться для пассивного получения обновлений местоположения, когда другие приложения или службы запрашивают их, фактически не запрашивая местоположения самостоятельно. Этот провайдер возвращает местоположения, созданные другими провайдерами. Требуется разрешение android.permission.ACCESS_FINE_LOCATION, хотя, если GPS не включен, этот поставщик может возвращать только грубые исправления. Это то, что Android называет этими провайдерами определения местоположения, однако базовые технологии для обеспечения работы этого материала привязаны к определенному набору аппаратного обеспечения и предоставляемых телекоммуникационными компаниями возможностей (услуга сети).

Лучше всего сначала использовать "сетевой" или "пассивный" провайдер, а затем использовать "gps" и, в зависимости от задачи, переключаться между провайдерами. Это охватывает все случаи и обеспечивает наименьший общий знаменатель (в худшем случае) и отличный сервис (в лучшем случае).

enter image description here

Ссылка на статью: Android Location Providers - gps, сеть, пассив По Назмул Идрис

Ссылка на код: fooobar.com/questions/12461/...

-----------------------Обновить-----------------------

Теперь у Android есть провайдер локации

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

Объединенный провайдер местоположения предоставляет три способа получения местоположения

  1. Последнее местоположение: используйте, если вы хотите узнать текущее местоположение один раз.
  2. Запрос местоположения с помощью прослушивателя: используйте, когда приложение находится на экране/в интерфейсе и требует продолжения местоположения.
  3. Запрос местоположения с использованием ожидающего намерения: используйте, когда приложение находится в фоновом режиме и требует продолжения местоположения

Рекомендации :

Официальный сайт: http://developer.android.com/google/play-services/location.html

Пример провайдера объединенного местоположения: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

-------------------------------------------------- ------

Ответ 2

GPS, как правило, более точен, чем сеть, но иногда GPS недоступен, поэтому вам может потребоваться переключиться между ними.

Хорошим началом может быть просмотр сайта Android. У них был раздел, посвященный определению местоположения пользователя, и он содержит все необходимые вам образцы кода.

http://developer.android.com/guide/topics/location/obtaining-user-location.html

Ответ 3

Здесь есть несколько замечательных ответов. Другой подход, который вы могли бы предпринять, - использовать некоторые бесплатные SDK, доступные в Интернете, такие как Atooma, tranql и Neura, которые могут быть интегрированы с вашим Android-приложением (для интеграции требуется менее 20 минут). Наряду с предоставлением вам точного местоположения вашего пользователя, он также может дать вам хорошее представление о деятельности ваших пользователей. Кроме того, некоторые из них потребляют менее 1% вашего аккумулятора.