Android Automotive OS 概览

Android Automotive OS 界面
图 1:Android Automotive OS

Android Automotive OS 是针对车载使用而优化的 Android 版本,它在核心 Android 平台的基础上进行了扩展。内置 Google 产品的汽车搭载 Android Automotive OS,并随附 Google 应用和服务,包括 Google Play、Gemini、Google 助理和 Google 地图。

了解 Android Automotive OS 硬件

如需详细了解 Android Automotive OS 设备的最低硬件规格,请参阅 Android 兼容性定义文档 (CDD) 中适用于您的应用支持的 Android 版本的汽车要求部分。

刘海屏

与其他 Android 设备类型一样,Android Automotive OS 设备(如果配备非矩形显示屏)支持显示屏刘海。不过,汽车中的刘海屏尺寸和形状可能与其他设备中的刘海屏有很大不同。如需详细指导,请参阅使用窗口边衬区和显示屏刘海

音频

Android Automotive OS 设备通常是固定音量设备。如需详细了解这可能会对您的应用产生哪些影响,请参阅使用固定音量设备

了解 Android Automotive OS 软件

虽然 Android Automotive OS 基于与其他外形规格相同的核心操作系统,但它还具有一些独特的附加功能,这些功能可能会影响应用的开发和使用方式。

系统界面

这些系统界面元素在汽车中的运作方式存在一些差异,您应该了解这些差异。

与其他设备不同,Android Automotive OS 设备无需提供硬件或软件返回功能。如果应用未在兼容模式下运行,则应用实现的 activity 应包含界面可供性 (affordance),以支持应用内导航,从而满足 AN-1 质量指南。

系统栏布局

与其他设备规格一样,Android Automotive OS 包含系统栏,例如状态栏和导航栏。在汽车中,这些栏的大小和位置可能与其他设备类型不同。例如,导航栏可以位于屏幕的左侧、右侧或底部。即使在顶部有状态栏、底部有导航栏的情况下(大多数手机和平板电脑都是如此),这些元素在汽车中的尺寸也可能会大得多。

此外,虽然移动设备上的刘海屏通常包含在系统栏的边界内,但在汽车上并非如此。

如需详细指导,请参阅使用窗口边衬区和显示屏刘海

沉浸模式

Android Automotive OS 允许 OEM 控制应用是否可以显示或隐藏系统栏以进入和退出沉浸模式。通过阻止应用隐藏系统栏,OEM 可以确保车辆控件(例如空调控件)在屏幕上始终可用。

用户体验限制

用户体验 (UX) 限制是 Android Automotive OS 中内置的一项功能,用于处理驾驶员注意力分散问题。用户体验限制负责自动阻止使用未针对驾驶时使用进行优化的应用。

正在显示的 activity 屏蔽 activity 位于未标记为“经过防分心优化”的应用之上。
图 2:因用户体验限制而被屏蔽的应用

确定用户体验限制的启用方式和时间的具体规则集由车辆制造商确定。这些规则可能因地理位置而异,例如,在欧洲销售的同一款车辆可能与在美国销售的同一款车辆有不同的规则。

用户体验限制规则还可能因车辆内的显示屏而异。例如,当车辆行驶时,驾驶员视线范围内的中控显示屏可能会受到限制,而乘客显示屏则不受限制。

如果您的应用需要适应用户体验限制,请直接引用这些限制,而不要尝试对它们的实现进行逆向工程。例如,如果您假设当档位不是停车档时用户体验限制处于有效状态,则可能会不必要地限制在乘客显示屏上运行的应用。

防分心优化

默认情况下,当用户体验限制处于有效状态时,无法运行 activity,以限制驾驶员分心。如需向系统指明 activity 在车辆行驶时应继续运行,可在相应的 <activity> 元素内添加以下 <meta-data> 元素。

<activity ...>
  <meta-data android:name="distractionOptimized" android:value="true">
</activity>

在为 Android Automotive OS 开发应用时,只有在为使用汽车应用库构建的应用的 CarAppActivity 声明 <activity> 清单元素时,才应在清单中包含此元数据。不应将其他 activity 标记为经过防分心优化,否则当您将应用提交到 Google Play 商店时,该应用会被拒绝。

无障碍

Android Automotive OS 的无障碍功能支持不如其他设备规格那么广泛。TalkBack开关控制语音操控 在 Android Automotive OS 设备上不可用。

Android Automotive OS 设备支持字幕偏好设置。如需详细了解集成信息,请参阅采用系统字幕设置

网络选择

Android Automotive OS 支持按应用选择网络 (PANS),这使 OEM 能够以应用为单位将移动网络流量路由到不同的网络。

大多数应用仅使用分配给它们的默认网络,并且只会从此功能中受益。例如,即使用户没有自己的流量套餐,OEM 也可能会为应用产生的网络流量付费。如果您的应用(或其某个依赖项)依赖于默认网络以外的网络,则可能无法从 OEM 设置的偏好设置中受益。如需详细了解如何使用默认网络以外的网络,请参阅读取网络状态

系统功能

您可以使用 PackageManager::hasSystemFeature 检测指定功能是否可用,并相应地调整应用的行为。

硬件功能

与其他非移动设备一样,汽车中提供的硬件功能可能与移动设备上的不同。

屏幕方向

与电视一样,汽车是固定方向设备。与电视不同,平板电脑既可以竖屏显示,也可以横屏显示。为确保为 Android Automotive OS 构建的应用可以分发到所有车辆,应用必须确保它们对 android.hardware.screen.landscapeandroid.hardware.screen.portrait 功能没有任何显式或隐式功能要求。

网络位置

许多 Android Automotive OS 设备未实现用于提供网络位置信息的电话堆栈,因此不会报告 android.hardware.location.network 系统功能。虽然可能无法获取网络位置,但仍支持获取粗略位置 - 请参阅 Android Automotive OS 上的粗略位置

软件功能

其他设备类型上常见的一些软件功能可能不受 Android Automotive OS 设备支持。例如,许多 Android Automotive OS 车辆不支持以下功能:

满足 Google Play 功能要求

若要通过 Google Play 分发到汽车,为 Android Automotive OS 构建的应用必须在 AndroidManifest.xml 文件中包含 <uses-feature> 元素,以支持 android.hardware.type.automotive 功能:

<manifest ...>
  ...
  <!--
    See Choose a track for Android Automotive OS
    for details on how to choose which value to use for the android:required attribute.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]">
  ...
</manifest>

此外,如果您的应用针对以下任何功能具有显式功能声明 (android:required="true") 或隐式功能要求,您必须更新或移除这些声明/要求,以免应用的功能要求阻止其分发到其他兼容的车辆:

对于使用 android:required="true" 明确声明的功能,您可以执行以下任一操作:

  • 如果该功能并非以其他方式隐式必需,请删除 <uses-feature> 元素。
  • 使用 android:required="false" 明确声明该功能。

对于隐式必需功能,您可以执行以下任一操作:

  • 使用 android:required="false" 明确声明该功能。
  • 移除或更新清单值,这些值会为相应功能引入隐式要求。

更改清单中的功能声明不会影响应用的实际运行,因此请检查您的应用在没有这些功能的情况下是否仍能正常运行。

常见问题解答

哪些车辆含 Google 预装?

如需查看提供搭载 Google 产品的汽车的 OEM 列表,请访问搭载 Google 产品的汽车网站。您可以使用 Play 管理中心的设备目录获取硬件规格和其他设备详细信息。