取得概略位置

為了尊重用戶隱私,鼓勵應用程式開發人員僅請求粗略的位置權限。需要近似粗略位置的應用程式通常使用網路位置 (FLP),因為它速度快且功耗較少。

與基於 Android 的行動裝置相比,汽車應用程式中的網路定位可能更具挑戰性。您可以使用兩個 Android API:

許多汽車應用程式使用 Google Play Services (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 提供者之外,還融合來自其他感測器的信息,以進一步提高位置品質。另一方面,目前汽車 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" />

這種方法可確保與跨行業設備的最大相容性,從而確保最大的應用程式可用性,並且在需要時獲取位置時沒有程式碼差異。