Я вижу, что LocationManager.NETWORK_PROVIDER.getLastKnownLocation()
возвращает последнее местоположение, но как обновляется местоположение? Если GPS отключен, будет ли он полностью полагаться на BSSID, обнаруженные WiFi? Что делать, если WiFi также отключен? Учитывает ли он данные вышек мобильной связи?
Как на самом деле работает LocationManager.NETWORK_PROVIDER?
Ответы (1)
Да, служба определения местоположения имеет в основном три уровня: GPS, WiFi, вышка сотовой связи.
GPS используется с GPS_PROVIDER
, а Wi-Fi и вышка сотовой связи идут в корзину NETWORK_PROVIDER
.
Процитируем NETWORK_PROVIDER
описание:
Этот провайдер определяет местоположение на основе наличия вышки сотовой связи и точки доступа Wi-Fi. Результаты извлекаются посредством поиска в сети.
person
Floern
schedule
04.03.2017
Как это на самом деле работает внутри? Отправляет ли он запрос в Google (Map API?) для каждого
getLastKnownLocation()
вызова? Если это API Карты, стоит ли каждый вызов?
- person John M.; 05.03.2017
getLastKnownLocation()
не делает никаких запросов, так как позиция уже известна. Но если вы хотите получить новое актуальное местоположение, он отправляет MAC-адрес WiFi или мобильный идентификатор соты в Google, чтобы определить ее местоположение.
- person Floern; 05.03.2017
Я понимаю. В этом случае нужно ли вызывать
requestLocationUpdates()
, а затем getLastKnownLocation()
?
- person John M.; 05.03.2017
Ну, если вы используете
requestLocationUpdates()
, вы все равно получите новое местоположение из LocationListener, поэтому нет необходимости использовать getLastKnownLocation()
сразу после этого (он просто снова вернет то же местоположение).
- person Floern; 05.03.2017