В Android есть 3 провайдера местоположения.
Они есть:
gps -> (GPS, AGPS): имя поставщика местоположения GPS. Этот провайдер определяет местоположение по спутникам. В зависимости от условий этому поставщику может потребоваться время, чтобы вернуть исправление местоположения. Требуется разрешение android.permission.ACCESS_FINE_LOCATION.
сеть -> (AGPS, CellID, WiFi MACID): имя провайдера сетевого местоположения. Этот провайдер определяет местоположение в зависимости от наличия вышек сотовой связи и точек доступа Wi-Fi. Результаты извлекаются посредством поиска в сети. Требуется одно из разрешений android.permission.ACCESS_COARSE_LOCATION или android.permission.ACCESS_FINE_LOCATION.
пассивный -> (CellID, WiFi MACID): специальный провайдер местоположения для получения местоположений без фактического запуска исправления местоположения. Этот поставщик может использоваться для пассивного получения обновлений местоположения, когда их запрашивают другие приложения или службы, без фактического запроса местоположения самостоятельно. Этот провайдер будет возвращать местоположения, созданные другими провайдерами. Требуется разрешение android.permission.ACCESS_FINE_LOCATION, хотя, если GPS не включен, этот провайдер может возвращать только грубые исправления. Это то, что Android называет этими поставщиками местоположения, однако базовые технологии, обеспечивающие работу этого материала, сопоставляются с конкретным набором аппаратных средств и возможностей, предоставляемых телекоммуникационной компанией (сетевой сервис).
Лучше всего использовать сначала «сетевой» или «пассивный» провайдер, а затем откатиться на «gps» и, в зависимости от задачи, переключаться между провайдерами. Это покрывает все случаи и обеспечивает обслуживание с наименьшим общим знаменателем (в худшем случае) и отличное обслуживание (в лучшем случае).
Ссылка на статью: Провайдеры местоположения Android - GPS, сети, пассивные Авторы Назмул Идрис
Ссылка на код: https://stackoverflow.com/a/3145655/28557
-----------------------Обновить-----------------------
Теперь у Android есть провайдер местоположения Fused
Fused Location Provider интеллектуально управляет базовой технологией определения местоположения и предоставляет вам наилучшее местоположение в соответствии с вашими потребностями. Это упрощает для приложений способы определения текущего местоположения пользователя с повышенной точностью и меньшим энергопотреблением.
Провайдер Fused Location предоставляет три способа получения местоположения
- Последнее местоположение: используйте, если вы хотите узнать текущее местоположение один раз.
- Запрос местоположения с помощью прослушивателя: используйте, когда приложение находится на экране / во внешнем интерфейсе и требует продолжения определения местоположения.
- Запрос местоположения с использованием ожидающего намерения: используется, когда приложение работает в фоновом режиме и требует продолжения определения местоположения.
Ссылки :
Официальный сайт: 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
-------------------------------------------------- ------