获取粗略位置

为了尊重用户隐私,建议应用开发者仅请求粗略位置信息权限。通常需要大致粗略位置的应用 使用一体化网络位置 (FLP),因为它速度快且耗电量低。 与基于 Android 的移动设备相比,汽车应用中的网络位置信息可能更具挑战性。您可以使用以下两个 Android API:

许多汽车应用都使用 Google Play Services API 中的 FLP,而不是 LocationManager。FLP 根据位置选择最佳位置信息提供程序 请求标准和政策(功率和精确度)。

您可以改为选择明确请求并使用 NETWORK_PROVIDER 以及 GPS_PROVIDER: 精确位置 android.permission.ACCESS_FINE_LOCATION 权限。在 Android 12(API 级别 31)及更高版本中, FUSED_PROVIDER、 以前只能通过 Google Play Services API 进行访问, 作为位置信息提供程序提供给LocationManager。您可以在 FusedLocationProvider.java

虽然您可以在只拥有粗略权限的情况下使用“GPS_PROVIDER”,但 该框架人为降低准确性以符合预期, 对以 Android 手机为目标平台的开发者来说意义不大,因为 通常很难获得粗略位置。

汽车中的网络位置信息

Android 手机(安装了 Google 移动服务)的 NETWORK_PROVIDER 根据附近的手机基站、Wi-Fi 接入点和 蓝牙 (BT) 信标。因此,NETWORK_PROVIDER可能需要数据 连接。

对于汽车应用,设备约束条件各不相同。因为全局导航 卫星系统 (GNSS) 通常处于开启状态,不会因 电量和电池用量增加。因此,IVI 的正常运行时间不会受到影响。 我们会尽量减少与服务器之间的数据交换。

因此,许多应用通过 Play API 而不是 LocationManager 使用 FLP 因为 FLP 会使用在 YAML 文件中使用的 最能满足位置信息请求标准/政策的提供程序(即 和准确性)。

与移动设备不同,车辆极少会出现从一个位置“跳”到另一个位置的情况。车辆位置大部分时间在系统内部都是可以追踪的。

网络位置提供程序 (NLP)

大多数车辆都未实现所需的电话 API 来获取关于基站 ID(和信号强度)的所需信息。因此,由于我们会最大限度地减少数据 而无需提供 NLP 的其他功能实现。

一体化位置信息提供方

移动设备 FLP 除了根据需要智能地使用网络和 GPS 提供程序之外,还会融合其他传感器的信息,进一步提高位置信息的质量。Automotive FLP 当前在 另一方面则采用了上述假设,并使用 始终将 GPS_PROVIDER 作为底层来源。它会更改来自 GNSS 的位置信息,在需要时增加一些错误,使其变得更加不准确。例如,在向客户端提供粗略位置时。

因此,在极少数情况下,可能比平常更长的时间 才能显示在第 1 个位置例如,首次使用车辆时(更确切地说是使用位置信息子系统时),或车辆被拖走后。

针对移动设备和汽车用途设计应用

对于定位到移动设备车载设备(不 需要更高的精确度, 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" />

这种方法可以确保最大限度地提升与各行业设备的兼容性,从而尽可能提升应用可用性(没有任何代码差异),以便在需要时获取位置信息。