取得概略位置

為尊重使用者隱私,我們建議應用程式開發人員僅要求概略的位置存取權。需要概略位置的應用程式通常會使用整合式網路位置 (FLP),因為速度較快且耗電量較低。與 Android 行動裝置相比,汽車應用程式中的網路位置資訊可能較為困難。您可以使用兩個 Android API:

許多汽車應用程式使用 Google Play Services API 中的 FLP,而不是 LocationManager。FLP 會根據車輛所需的位置資訊要求條件和政策 (電源和精確度),選取最合適的位置提供者。

您可改為選擇明確要求,並使用 NETWORK_PROVIDERGPS_PROVIDER 處理前端位置,這些位置會使用 android.permission.ACCESS_FINE_LOCATION 權限。在 Android 12 (API 級別 31) 以上版本中,FUSED_PROVIDER 先前只能透過 Google Play Services API 存取,做為 LocationManager 的定位提供者。您可以在 FusedLocationProvider.java 中查看 FLP 的實作。

雖然 GPS_PROVIDER 可以只搭配粗略的權限使用 (這個架構會人為降低準確度,使其符合預期),但以 Android 手機為目標的開發人員不太合理,因為整體可用性較低,且通常較慢才能取得粗略的位置。

汽車中的網路位置資訊

Android 手機 (搭配 Google 行動服務) 使用的 NETWORK_PROVIDER 會根據附近的行動通信基地台、Wi-Fi 存取點和藍牙 (BT) 信標判斷位置。因此,NETWORK_PROVIDER 可能需要數據連線。

如果是汽車應用程式,裝置限制有所不同。由於 GNSS 通常開啟了全域導航衛星系統 (GNSS),因此不會因為耗電量和電池用量增加而產生任何處分。因此,IVI 運作時間不會受到任何影響。我們致力於降低與伺服器交換的資料量。

因此,許多應用程式都會使用 Play API 的 FLP (而不是 LocationManager),因為 FLP 會自動使用位置供應程式來滿足位置資訊要求條件/政策 (也就是電力和準確度) 的「聰明」

與行動裝置不同的是,車輛很少出現從某個位置「跳動」。系統大部分的時間都知道車輛位置。

網路位置供應商 (NLP)

大多數車輛都不會實作必要的電話通訊 API,以便取得必要的基地台 ID 資訊 (以及訊號強度)。因此,由於我們盡量減少資料用量,因此不提供額外的 NLP 功能實作。

整合式位置預測提供工具

行動 FLP 會適當地使用網路和 GPS 供應商,並融合其他感應器的資訊,進一步提升地點品質。目前實作 Automotive 的 FLP 時,也會運用上述假設,並一律使用 GPS_PROVIDER 做為基礎來源。這樣可抵觸 GNSS 的位置,並視需要加入一些錯誤以使其不正確。例如,為用戶端提供概略位置時。

因此,在極少數情況下,第一個位置可供使用的時間可能會比平常更久。例如,在車輛第一次,或為了更精確時,就會使用其位置子系統,或是拖到凹陷後的位置子系統。

針對行動裝置和汽車用途設計應用程式

如果應用程式指定行動裝置「和」汽車裝置,且需要更高的精確度,請「只」要求 android.permission.ACCESS_COARSE_LOCATION,並在可用時改回使用 FLP。或者,您也可以在相同的權限直接使用 GPS_PROVIDER。這個架構會降低基礎 GNSS 位置的精確度,以便符合 API 期望。詳情請參閱「要求位置存取權」中的「準確度」一節。

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

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

這種做法可確保與各產業的裝置與裝置相容達到最高相容性,因此應用程式可用性最大,不需要有差異取得位置所需的程式碼差異。