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 应包含界面
功能,以支持应用内导航,从而满足 AN-1 质量
指南。
系统栏布局
与其他设备规格一样,Android Automotive OS 也包含 系统栏 例如状态栏和导航栏。在汽车中,这些栏的大小和位置可能与其他设备规格不同。例如,导航栏可以位于屏幕的左侧、右侧或底部。即使状态栏位于顶部,导航栏位于底部(就像大多数手机和平板电脑一样),这些元素在汽车中的大小也可能会大得多。
此外,虽然移动设备上的刘海屏通常包含在系统栏的边界内,但在汽车中并非如此。
如需详细 指导,请参阅使用窗口边衬区和刘海屏。
沉浸模式
Android Automotive OS 允许原始设备制造商 (OEM) 控制应用是否可以 显示或 隐藏系统栏以进入和退出沉浸模式。通过阻止应用隐藏系统栏,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 以 应用为单位将移动网络流量路由到不同的网络。
大多数应用仅使用分配给它们的默认网络,并且仅能从这项功能中 受益,例如,即使用户没有自己的流量套餐,OEM 也可以为您的应用的网络流量 付费。如果您的应用(或其依赖项之一)依赖于默认网络以外的网络,则可能无法从 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文件中包含 <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.hardware.wifiandroid.hardware.screen.portraitandroid.hardware.screen.landscapeandroid.hardware.camera
对于使用 android:required="true" 明确声明的功能,您可以执行
以下操作之一:
- 如果该功能没有其他
隐含要求,请删除
<uses-feature>元素。 - 使用
android:required="false"明确声明该功能。
对于隐含要求的功能,您可以执行以下操作之一:
- 使用
android:required="false"明确声明该功能。 - 移除或更新清单值,这些值会对该功能引入隐含要求。
更改清单中的功能声明不会影响应用的实际功能,因此请检查您的应用在没有这些功能的情况下是否仍能正常运行。
常见问题解答
哪些车辆含 Google 预装?
如需查看预装了 Google 产品的车型列表,请参阅搭载 Google 产品的汽车网站。您可以使用 Play 管理中心的设备目录获取硬件规格和其他设备详细信息。