取得概略位置

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

與 Android 行動裝置相比,汽車應用程式中的網路位置資訊更難處理。您可以使用兩個 Android API:

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

您可以改為在 LM 中明確要求及使用 NETWORK_PROVIDER,以及 GPS_PROVIDER 來取得精確位置,這兩者都會使用 android.permission.ACCESS_FINE_LOCATION 權限。在 API 31 中,先前只能透過 GPS API 存取的 FUSED_PROVIDER,現在可做為 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 功能實作。

整合式位置預測提供工具

行動版 FLP 除了可視需要聰明地使用網路和 GPS 供應商,還能整合其他感應器的資訊,進一步提升位置品質。另一方面,Automotive 的 FLP 目前實作方式會利用上述假設,並一律使用 GPS_PROVIDER 做為基礎來源。它會偽造來自 GNSS 的位置,在必要時加入一些錯誤,使位置資訊更不準確。例如,向用戶端提供粗略位置。

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

設計行動裝置和車輛用途的應用程式

我們建議,如果應用程式指定的目標是行動汽車裝置,且不需要更高品質的精確要求,就android.permission.ACCESS_COARSE_LOCATION 使用 FLP,並在 FLP 可用時改用 FLP。或者,您也可以在最後一項方法中,直接使用 GPS_PROVIDER 並要求相同的權限。該架構會降低基礎 GNSS 位置的精確度,以符合 API 預期。詳情請參閱「準確度」。

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

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

這個方法可確保與各垂直產業的裝置相容性達到最高,因此可讓應用程式在需要時取得位置時,不會出現程式碼差異,進而提高應用程式的可用性。