Исправлено ли в моем Android Location Manager с вышки сотовой связи или Wi-Fi

#android #geolocation #locationmanager

#Android #геолокация #locationmanager

Вопрос:

У меня есть приложение для Android, которое использует LocationManager для получения исправлений геолокации, используя точное (GPS) или грубое (сеть / wi-fi) местоположение, и мне нужно знать, откуда взялось какое-либо конкретное исправление местоположения.

Я могу использовать

если (LocationManager.GPS_PROVIDER.equals(location.getProvider())){…

чтобы определить, что исправление было от GPS и

если (LocationManager.NETWORK_PROVIDER.equals(location.getProvider())){…

чтобы определить, что это было либо из мобильной сети, либо из Wi-Fi, но я не знаю, из какой.

Моя проблема в том, что приложение предназначено для использования в поездах, а wi-fi в поездах не всегда дает правильное местоположение (однажды я путешествовал из Лондона в Париж на Eurostar, и на протяжении всей поездки геолокация говорила мне, что мы находимся на Северном вокзале Парижа, даже когда поезд был наЛондон Сент-Панкрас!)

Кто-нибудь знает способ сообщить LocationManager игнорировать Wi-Fi и предоставлять мне только местоположения из моей мобильной сети или GPS? Если это невозможно, есть ли хотя бы способ определить, поступило ли грубое местоположение из мобильной сети или из Wi-Fi?

Ответ №1:

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

Приложения не могут указать точные источники местоположения, такие как GPS, которые используются LocationClient. Фактически, в системе может быть запущено несколько источников местоположения (провайдеров), и они могут объединять результаты из нескольких источников в один объект местоположения.

здесь:

https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest

Похоже, я не могу делать то, что хочу. Если кто-нибудь знает способ, пожалуйста, дайте мне знать.