使用 Android 相机服务

Android 相机服务包含在汽车设备以及手机、平板电脑和电视等其他外形规格的设备中使用的相机堆栈。如需查看整体相机架构,请参阅相机。本页重点介绍了特定于汽车设备的主题,以及如何使用 Android Camera API

启用 Android 相机服务

如需在汽车平台上启用 Android 相机服务,产品的 makefile 必须将 ENABLE_CAMERA_SERVICE 指定为 true

特定于汽车的相机特性

对于车载设备来说,相机 HAL 必须包含两个特定于车载设备外形规格的独特特性:

名称 说明
android.automotive.location 指定相机相对于车身框架的位置。
android.automotive.lens.facing 指示相机镜头相对于车身框架和乘客座椅的朝向。

如果摄像头未与特定位置或镜头方向精确对齐(由 android.automotive.locationandroid.automotive.lens.facing 特性中的 *_OTHER 的存在情况指示),或者多个摄像头共用同一位置和方向,摄像头 HAL 应提供其他特性,以便应用能够准确确定摄像头的位置。这些特性包括:

向无头系统用户授予访问权限

某些系统应用和第一方 (1P) 应用可以以无头系统用户(也称为用户 0)的身份访问摄像头。此功能可确保无论前台用户如何切换,安全至关重要的应用(例如后视摄像头)都可以不间断地继续流式传输摄像头画面。只有进行平台签名且拥有新权限 android.permission.CAMERA_HEADLESS_SYSTEM_USER 的应用才能以用户 0 的身份访问摄像头。

对于以用户 0 身份访问摄像头的应用,摄像头数据必须在本地使用,不得传输到设备之外,包括从摄像头数据派生出的任何数据。这些应用需要预先授予 android.permission.CAMERA 权限,并且必须遵守 Design for Driving 中针对 GAS 要求列出的预授权政策。

配置相机隐私许可名单

原始设备制造商 (OEM) 现在可以将特定相机应用配置为包含在许可名单中,无论相机隐私切换开关的状态如何,该名单都会授予相机访问权限。借助此功能,用户可以为社交媒体和视频会议等娱乐应用停用相机访问权限,同时允许某些列入许可名单的应用使用相机。

只有被授予 android.permission.CAMERA_PRIVACY_ALLOWLIST 权限的系统应用和特权应用才能使用此功能。Google 汽车服务 (GAS) 合作伙伴必须提交其已列入许可名单的应用以供审核,并遵守隐私许可名单政策。如需了解详情,请参阅 Android for Cars

将应用添加到许可名单

etc/sysconfig 目录中执行以下操作:

  1. 将应用的软件包名称添加到系统配置 XML 文件中:

    <!-- In an xml file under etc/sysconfig —>
    
    <!--
    Allowlisted packages for the camera privacy toggle. Users will not be able to turn the privacy on for these packages as OEM requires camera access for these packages to preserve user safety.
    -->
    
    <config>
        <camera-privacy-allowlisted-app package="package_name" />
    </config>
    
  2. 将应用的隐私权政策披露网址添加到 AndroidManifest.xmlmeta-data 的名称应为 privacy_policy

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

默认情况下,列入许可名单的应用或必需应用的相机隐私切换开关会隐藏在隐私设置界面中。不过,OEM 可以通过将以下标志设置为 TRUE 来替换此行为。这样,OEM 就可以根据自己的偏好,自定义必需应用的相机隐私切换开关的显示设置。

<!-- Whether to show the toggle to turn on the camera privacy for required apps -->

<bool name="config_show_camera_required_apps_toggle">false</bool>

提前访问摄像头

特定的时间敏感型和安全型应用可以在 Android 启动过程完成之前访问摄像头。不过,此访问权限仅授予具有 UID AID_AUTOMOTIVE_EVS 的特权客户。如需详细了解如何向原生应用分配特定 UID,请参阅酌情访问控制 (DAC)。对摄像头的这种提前访问仅限于位于车身外部的系统摄像头。