#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
Похоже, я не могу делать то, что хочу. Если кто-нибудь знает способ, пожалуйста, дайте мне знать.