2011-04-13 19 views
8

我明白GPS_PROVIDER(位置來自GPS信號)和NETWORK_PROVIDER(位置由小區塔和無線接入點確定)的含義,但我不明白PASSIVE_PROVIDER的含義,儘管在API中有定義:android.location.LocationManager.PASSIVE_PROVIDER是什麼意思?

的一個特殊位置提供程序接收位置實際上沒有 啓動位置修復程序。這 供應商可以被動地使用 接收位置更新時,其他 應用程序或服務請求他們 沒有實際請求自己 位置。此提供商將返回 由其他 提供商返回的地點。您可以查詢 getProvider()方法以確定位置更新的起始位置 。 需要權限 android.permission.ACCESS_FINE_LOCATION, 雖然如果GPS未啓用 此提供程序可能只會返回粗修 修復程序。

爲什麼要用這個而不是其他提供者之一?爲了節省電池壽命?被動提供商是否只在某些其他應用明確向實際提供商請求數據時才返回有用信息,或者從此請求位置總是安全的?

回答

18

此提供程序適用於與用戶位置一起工作的服務,但不希望像您指出的那樣浪費電池壽命。

例如,谷歌縱橫發送您的當前位置到一個網絡服務,讓你的朋友知道你在哪裏。如果此服務每5分鐘要求一次GPS定位,則設備電池將非常快速地變空。如果服務請求被動位置提供商,則每次啓動Google地圖時,都會發送一個位置,並且修復服務或某些其他應用啓動位置提供商更新,並且該服務可以在位置數據上採取行動,而無需在位置更新上花費額外的電源。

如果您在某個確切的時刻需要正確的位置數據,使用此提供程序將無濟於事。對於大部分未在後臺服務中運行的內容,此位置提供程序無用,因爲只有其他應用程序觸發用戶位置更新時纔會發送更新。

+0

偉大的洞察力!所以,總結說,如果某人需要至少最近的可能位置,他們不應該使用'passive_provider'! – sud007 2016-10-19 06:22:45

3

要添加到@Janusz,當您收到由於其他人的提供商提供的修復程序,並且想要從(NETWORK或GPS)獲知此修復程序的提供者時,可以調用getProvider()來查找此修復程序。