Как на самом деле работает LocationManager.NETWORK_PROVIDER?

Я вижу, что LocationManager.NETWORK_PROVIDER.getLastKnownLocation() возвращает последнее местоположение, но как обновляется местоположение? Если GPS отключен, будет ли он полностью полагаться на BSSID, обнаруженные WiFi? Что делать, если WiFi также отключен? Учитывает ли он данные вышек мобильной связи?


person John M.    schedule 04.03.2017    source источник


Ответы (1)


Да, служба определения местоположения имеет в основном три уровня: GPS, WiFi, вышка сотовой связи.

GPS используется с GPS_PROVIDER, а Wi-Fi и вышка сотовой связи идут в корзину NETWORK_PROVIDER.

Процитируем NETWORK_PROVIDER описание:

Этот провайдер определяет местоположение на основе наличия вышки сотовой связи и точки доступа Wi-Fi. Результаты извлекаются посредством поиска в сети.

person Floern    schedule 04.03.2017
comment
Как это на самом деле работает внутри? Отправляет ли он запрос в Google (Map API?) для каждого getLastKnownLocation() вызова? Если это API Карты, стоит ли каждый вызов? - person John M.; 05.03.2017
comment
getLastKnownLocation() не делает никаких запросов, так как позиция уже известна. Но если вы хотите получить новое актуальное местоположение, он отправляет MAC-адрес WiFi или мобильный идентификатор соты в Google, чтобы определить ее местоположение. - person Floern; 05.03.2017
comment
Я понимаю. В этом случае нужно ли вызывать requestLocationUpdates(), а затем getLastKnownLocation()? - person John M.; 05.03.2017
comment
Ну, если вы используете requestLocationUpdates(), вы все равно получите новое местоположение из LocationListener, поэтому нет необходимости использовать getLastKnownLocation() сразу после этого (он просто снова вернет то же местоположение). - person Floern; 05.03.2017