取得概略位置

為尊重使用者隱私,建議應用程式開發人員只要求概略位置資訊權限。需要概略位置資訊的應用程式通常會使用網路位置資訊 (FLP),因為這種方式速度快且耗電量較低。

相較於 Android 行動裝置,車輛應用程式的網路位置資訊可能更難取得。您可以使用兩種 Android API:

許多車輛應用程式會使用 Google Play 服務 (GPS) API 中的 FLP,而不是 LM。FLP 會根據車輛所需的位置資訊要求條件和政策 (電力和準確度),選取最佳位置資訊提供者。

您可以選擇明確要求並使用 LM 中的 NETWORK_PROVIDER,以及用於精確位置的 GPS_PROVIDER,這會使用 android.permission.ACCESS_FINE_LOCATION 權限。在 API 31 中,FUSED_PROVIDER 先前只能透過 GPS API 存取,現在可做為 LM 的位置資訊供應器。您可以在 FusedLocationProvider.java 中查看更簡單的 FLP 實作方式。

雖然可以只使用概略權限權利搭配 GPS_PROVIDER,但架構會人為降低準確度以符合預期,因此對於以 Android 手機為目標的開發人員來說,這項做法意義不大,因為整體可用性不佳,且通常需要較長時間才能取得概略位置。

車輛中的網路位置

Android 手機 (搭載 Google 行動服務) 上的 NETWORK_PROVIDER 已變更,現在除了根據附近的行動通信基地台判斷位置,還會使用 Wi-Fi 存取點,甚至是藍牙 (BT) 信標。使用 NETWORK_PROVIDER 可能需要連上網路。

車輛應用程式的裝置限制不同。由於 GNSS 通常會開啟,因此不會因耗電量和電池用量增加而受到處罰。因此 IVI 運作時間不會受到影響。我們盡量減少與伺服器交換的資料。

因此,許多應用程式會使用 Play API 中的 FLP,而非直接使用 LM,因為 FLP 會在幕後自動「聰明地」使用最能滿足位置資訊要求條件/政策 (即電力和準確度) 的位置資訊供應器。

與行動裝置不同,車輛很少會從一個地點「跳」到另一個地點。車輛位置通常會在幕後得知。

網路位置資訊供應商

大多數車輛不會實作必要的電話 API,以取得 Cell ID (和訊號強度) 的必要資訊。因此,我們不會提供其他 NLP 功能實作項目,因為我們會盡量減少資料用量。

整合式位置資訊提供者

除了適當使用網路和 GPS 供應商,行動 FLP 還會融合其他感應器的資訊,進一步提升位置資訊品質。另一方面,目前 Automotive 的 FLP 實作方式會利用上述假設,並一律使用 GPS_PROVIDER 做為基礎來源。這項功能會模糊 GNSS 提供的定位資訊,視需要加入一些誤差,讓定位結果更不準確。舉例來說,向用戶端提供概略位置資訊時。

因此,在極少數情況下,第一個位置可能需要比平常更長的時間才能開放。舉例來說,車輛或更精確地說,車輛的位置資訊子系統首次使用時,或是在車輛遭拖吊後。

設計應用程式,鎖定行動裝置和車輛用途

如果應用程式的目標是行動裝置車用裝置,且android.permission.ACCESS_COARSE_LOCATION 不需要更高品質的精確度要求,建議您只使用 FLP,並在可用時回頭使用 FLP。或者,您也可以直接使用 GPS_PROVIDER,並授予相同權限。架構會降低基礎 GNSS 位置的精確度,以符合 API 預期。詳情請參閱「準確度」一文。

此外,這些應用程式必須在資訊清單中明確宣告 android.hardware.location.network 功能為選用。例如:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

這個做法可確保與各產業的裝置達到最高相容性,因此可讓應用程式盡可能支援各種裝置,且在需要取得位置資訊時,不必變更任何程式碼。