
Android Automotive OS 是一个 Android 版本,专为车载使用场景而优化,它基于核心 Android 平台进行扩展。内置 Google 服务的汽车运行 Android Automotive OS,并附带 Google 应用和服务,包括 Google Play、Google 助理和 Google 地图。
了解 Android Automotive OS 硬件
如需详细了解 Android Automotive OS 设备的最低硬件规格,请参阅应用支持的 Android 版本对应的 Android 兼容性定义文档 (CDD) 中的“车载要求”部分。
显示屏开孔
与其他 Android 外形规格一样,Android Automotive OS 设备支持非矩形显示屏的显示屏开孔。不过,汽车中发现的开孔尺寸和形状可能与在其他外形规格中发现的截然不同。如需详细指导,请参阅使用窗口内边距和显示屏开孔。
音频
Android Automotive OS 设备通常是固定音量设备。如需详细了解这可能会如何影响您的应用,请参阅使用固定音量设备。
了解 Android Automotive OS 软件
虽然 Android Automotive OS 基于与其他外形规格相同的核心操作系统,但它也有一些独特功能,可能会影响应用的开发和使用方式。
系统界面
您应该注意这些系统界面元素在汽车中功能方面的一些差异。
导航
与其他外形规格不同,Android Automotive OS 设备不要求具备硬件或软件返回功能。在未以兼容模式运行的情况下,您的应用所实现的 activity 应包含界面功能,以实现应用内导航,从而满足 AN-1
质量指南。
系统栏布局
与其他外形规格一样,Android Automotive OS 包含系统栏,例如状态栏和导航栏。在汽车中,这些栏的大小和位置可能与其他外形规格不同。例如,导航栏可能位于屏幕的左侧、右侧或底部。即使顶部有状态栏、底部有导航栏(大多数手机和平板电脑都是如此),这些元素在汽车中的尺寸也可能大得多。
此外,虽然移动设备上的显示屏开孔通常包含在系统栏的边界内,但汽车并非如此。
如需详细指导,请参阅使用窗口内边距和显示屏开孔。
沉浸模式
Android Automotive OS 允许原始设备制造商 (OEM) 控制应用能否显示或隐藏系统栏以进入和退出沉浸模式。通过阻止应用隐藏系统栏,原始设备制造商可以确保车辆控件(例如气候控制)始终在屏幕上可供访问。
用户体验限制
用户体验 (UX) 限制是 Android Automotive OS 内置的功能,用于处理驾驶员分心问题。UX 限制负责自动阻止使用未针对驾驶时使用进行优化的应用。

确定 UX 限制何时以何种方式生效的具体规则由汽车制造商确定。这些规则可能因地理位置而异,例如,在欧洲销售的同一辆车可能与在美国销售的车辆具有不同的规则。
UX 限制规则也可能因车辆内显示屏的不同而异。例如,在车辆行驶时,驾驶员视线范围内的中央显示屏可能会受到限制,而乘客显示屏则不受限制。
如果您的应用需要适应 UX 限制,请直接引用它们,不要尝试逆向工程其实现。例如,如果您假设当档位不在驻车档时 UX 限制处于活动状态,您可能会不必要地限制在乘客显示屏上运行的应用。
防干扰优化
默认情况下,当 UX 限制处于活动状态时,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 对无障碍功能的支持不如其他外形规格那样广泛。Android Automotive OS 设备上不提供 TalkBack、随航功能和语音访问。
Android Automotive OS 设备支持字幕偏好设置。如需了解集成详情,请参阅采用系统字幕设置。
网络选择
Android Automotive OS 支持按应用选择网络 (PANS),这允许原始设备制造商 (OEM) 按应用将移动网络流量路由到不同的网络。
大多数应用只使用分配给它们的默认网络,并且只从这项功能中受益 – 例如,即使用户没有自己的数据流量套餐,原始设备制造商也可能为您的应用产生的网络流量付费。如果您的应用(或其某个依赖项)依赖于默认网络以外的其他网络,则可能无法受益于原始设备制造商设置的偏好设置。如需详细了解如何使用非默认网络,请参阅读取网络状态。
系统功能
您可以使用 PackageManager::hasSystemFeature
检测给定功能是否可用,并相应地调整应用的行为。
硬件功能
与其他非移动外形规格一样,汽车中提供的硬件功能可能与移动设备上的有所不同。
屏幕方向
与电视一样,汽车是固定方向设备。但与电视不同的是,它们同时支持纵向和横向。为确保针对 Android Automotive OS 构建的应用可以分发到所有车辆,应用必须确保它们对 android.hardware.screen.landscape
或 android.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
文件中包含一个用于 android.hardware.type.automotive
功能的 <uses-feature>
元素。
<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.hardware.wifi
android.hardware.screen.portrait
android.hardware.screen.landscape
android.hardware.camera
对于使用 android:required="true"
显式声明的功能,您可以执行以下任一操作:
- 如果此功能未通过其他方式隐式要求,请删除
<uses-feature>
元素。 - 使用
android:required="false"
显式声明此功能。
对于隐式要求的功能,您可以执行以下任一操作:
- 使用
android:required="false"
显式声明此功能。 - 移除或更新导致对该功能产生隐式要求的清单值。
更改清单中的功能声明不会影响应用的实际功能,因此请检查您的应用在没有这些功能的情况下是否仍能正常运行。
常见问题解答
哪些车辆内置了 Google 服务?
请访问内置 Google 服务的汽车网站,查看拥有内置 Google 服务车型的原始设备制造商列表。硬件规格和其他设备详情可使用 Play 管理中心的设备目录获取。