Что означает значение android.location.LocationManager.PASSIVE_PROVIDER? - PullRequest
8 голосов
/ 14 апреля 2011

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

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

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

Ответы [ 2 ]

18 голосов
/ 14 апреля 2011

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

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

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

4 голосов
/ 14 апреля 2011

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

...