Что означает android.местоположение.LocationManager.ПАССИВНЫЙ ПРОВАЙДЕР?

Я понимаю значение GPS_PROVIDER (местоположения поступают из сигналов GPS) и сервис network_provider (местоположения определяются из сотовых вышек и точек беспроводного доступа), но я не понимаю значения PASSIVE_PROVIDER, несмотря на определение в API:

специальный поставщик местоположения для мест приема без запуск исправления местоположения. Этот провайдера можно использовать пассивно получить расположение обновляется, когда другие приложения или службы запрашивают их без запроса сами локации. Этот провайдер будет возвращаемые местоположения, созданные другими услуги поставщиков. Можно запросить метод getProvider () для определения источник обновления местоположения. Требует разрешения андроид.разрешение.Функция, хотя если GPS не включен этот поставщик может возвращать только грубый зафиксировать.

Почему бы использовать это вместо одного из других поставщиков? Сохранить время работы от батарей? Возвращает ли пассивный поставщик полезную информацию, только если какое-либо другое приложение явно запрашивает данные у реальных поставщиков, или всегда безопасно запрашивать местоположения из этого?

2 ответов


этот поставщик полезен для служб, которые работают с местоположением пользователей, но не хотят тратить время автономной работы, как вы указали.

например, Google Latitude отправляет ваше текущее местоположение в веб-службу, чтобы ваши друзья знали, где вы находитесь. Если эта служба запросит исправление GPS каждые 5 минут, батарея устройства будет очень быстро разряжена. Если служба запрашивает поставщика пассивного местоположения, местоположение отправляется каждый раз при запуске Google maps и получении исправления или некоторые другие приложения инициируют обновление поставщика местоположения, и служба может работать с данными о местоположении, не тратя дополнительную мощность на обновления местоположения.

Если вам нужны правильные данные о местоположении в данный момент, используя этот провайдер не поможет. Для большинства вещей, которые не работают в фоновой службе, этот поставщик местоположения бесполезен, потому что он будет отправлять обновления только в том случае, если другие приложения запускают обновление местоположения пользователя.


чтобы добавить в @Janusz, когда вы получаете исправление из - за кого-то другого поставщика, и вы хотите знать, от какого поставщика Это исправление (сеть или GPS), вы можете вызвать getProvider (), чтобы найти это.