Одновременное использование GPS и сетевого провайдера в Android
Я применил функцию locationlistener в своем приложении, которая использует Network Provider.
Все это работает отлично, потому что я хочу местоположение быстро и с помощью GPS-провайдера требуется возраст.
Но я пришел к моменту своего приложения, где местоположение должно быть точным (макс. 5-10 метров).
Мне было интересно, можно ли одновременно использовать провайдера GPS вместе с сетевым провайдером, а затем получить лучший результат?
И также можно сообщить мне, когда поставщик GPS предоставил мне GPS-местоположение?
Итак, в основном:
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Будет ли это работать с тем же переопределенным onLocationChanged()?
И как я могу узнать, получил ли GPS местоположение?
Спасибо,
Ответы
Ответ 1
Вы можете использовать один и тот же прослушиватель для нескольких поставщиков. Лучше использовать locationmanager.getProviders
с объектом Criteria
, затем сортировать по точности или просто слушать все из них. Не так много практических различий.
Обратный вызов onLocationChanged
предоставляет объект Location, который имеет метод getProvider()
, который вы можете использовать, чтобы определить, откуда он пришел. Он также имеет метод getAccuracy()
, поэтому вы можете также сортировать последние исправления с точностью.
Ответ 2
В идеале, если вы не беспокоитесь об использовании аккумулятора, то это прекрасно подходит для использования обоих поставщиков. Как объяснил Дарен, вы можете фильтровать координаты с помощью getProvider() и getAccuracy().
http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/