Automotive Location Bypass API

借助此功能,您可以通过“使用位置信息提供驾驶辅助功能”开关,单独控制已列入许可名单且与 Android 绑定的驾驶辅助应用的位置信息访问权限。这样一来,即使“使用位置信息”开关处于关闭状态,这些应用也能获取位置信息。

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

使用 Driver Assistance Location Bypass API

以下部分介绍了如何使用 Driver Assistance Location Bypass 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 版本就能添加新软件包。如需了解详情,请参阅 Complete Automotive Tests in a Box