汽车定位绕过 API

此功能允许通过“为驾驶辅助功能使用位置信息”开关单独控制许可名单中的 Android 捆绑驾驶员辅助应用的定位信息访问权限。这样即使在“使用位置信息”开关关闭时,这些应用也可以访问位置信息。

  • Android 12 没有为此功能提供公共 API。驾驶员辅助应用应照常请求位置信息更新。
  • Android 13 及更高版本必须发出位置信息请求才能使用 LocationManager.requestLocationUpdates(),并传入配置了 LocationRequest.setAdasGnssBypass(true)LocationRequest 对象。

使用驾驶员辅助定位绕过 API

以下部分介绍了如何使用驾驶员辅助定位绕过 API。要详细了解使用政策,请参阅定位绕过许可名单政策

检查驾驶员辅助开关状态

在 Android 13 及更高版本中,您可以在请求位置信息更新之前检查驾驶员辅助开关状态。

// Returns the current status of "Use location for driver assistance".
locationManager.isAdasGnssLocationEnabled();

运行 Android 调试桥 (ADB) 命令

对于开发和测试,您可以快速检查或更改驾驶员辅助切换开关的状态,而无需使用“位置信息设置”。

  1. 要使用 ADB 命令检查或更改状态
    // Gets the status of ADAS location.
    adb shell cmd location is-adas-gnss-location-enabled
    
    // Enables ADAS location.
    adb shell cmd location set-adas-gnss-location-enabled true
    
    // Disables ADAS location.
    adb shell cmd location set-adas-gnss-location-enabled false

设置权限

请参阅以下内容,了解特定于版本的 Android 版本

  1. 在 Android 12 中,驾驶员辅助应用必须具有 WRITE_SECURE_SETTINGS 权限。
  2. 在 Android 13 及更高版本中,需要 LOCATION_BYPASS 权限。

在您的设备上将应用添加到许可名单

etc/sysconfig 目录中

  1. 在系统配置 XML 文件中添加应用的软件包名称
  2. <!-- In a xml file under etc/sysconfig>
    <config>
    
    <allow-adas-location-settings package="PACKAGE-NAME" />
    
    </config>

要确保您的软件包显示在“位置信息设置”界面中,请将您的软件包名称添加到 config_locationDriverAssistancePackageNames

将应用的隐私权政策披露网址添加到 AndroidManifest.xml。元数据的名称应为 privacy_policy

<meta-data android:name="privacy_policy" android:value= privacy policy URL/>

移除“为驾驶辅助功能使用位置信息开关”

如果您没有由位置信息驱动的驾驶员辅助应用来请求 Android 的位置信息,您可以注释掉代码块以移除“位置信息设置”的开关。

  1. 打开 packages/apps/Car/Settings/res/xml/location_settings_fragment.xml,然后注释掉以下代码。
    <com.android.car.ui.preference.CarUiTwoActionSwitchPreference
    
        android:fragment="com.android.car.settings.location.AdasLocationFragment"
    
        android:key="@string/pk_location_driver_assistance_state_switch"
    
        android:title="@string/location_driver_assistance_toggle_title"
    
        android:summary="@string/location_driver_assistance_toggle_summary"
    
    
    settings:controller="com.android.car.settings.location.AdasLocationSwitchPreferenceController"
    
        settings:searchable="true"/>
    
      <com.android.car.settings.common.DividerPreference/>
  2. 移除开关后,将 config_defaultAdasGnssLocationEnabled 设置为 false

运行汽车测试套件

Google 提供汽车测试套件 (ATS) 测试,以确保设备上的所有驾驶员辅助软件包都已在 Google 的许可名单中。该测试是远程配置的。您无需等到下一个 ATS 版本发布即可添加新软件包。您可以在完整汽车测试套件中了解更多信息。

此页面上的内容和代码示例均受内容许可中所述许可的约束。Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。

上次更新时间:2025-02-05 UTC。