Используйте GPS и сетевой провайдер одновременно в Android - PullRequest
21 голосов
/ 04 января 2011

В моем приложении реализован локализатор, использующий сетевой провайдер.

Все это прекрасно работает, потому что я хочу быстро найти местоположение, а с провайдером 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 местоположение?

Спасибо

Ответы [ 2 ]

27 голосов
/ 04 января 2011

Конечно, вы можете использовать один и тот же слушатель для нескольких провайдеров.Может быть лучше использовать locationmanager.getProviders с объектом Criteria, а затем сортировать по точности или просто прослушивать их все.Тем не менее, нет большой практической разницы.

Обратный вызов onLocationChanged дает вам объект Location, у которого есть метод getProvider(), который вы можете использовать для определения его происхождения.Он также имеет метод getAccuracy(), поэтому вы также можете отсортировать последние исправления по точности.

2 голосов
/ 13 декабря 2012

В идеале, если вас не беспокоит использование батареи, тогда вполне нормально использовать обоих провайдеров.Как объяснил Дарен, вы можете фильтровать координаты с помощью getProvider () и getAccuracy ().

http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...