下一代汽车支持多个屏幕,其中一些屏幕可能由 Android 操作系统驱动,以提供丰富的内容。本页介绍了将仪表盘和其他显示器集成到 Android Automotive IVI 系统的关键要素。
Android 中的外部显示器
Android 10 使用 android.app.Presentation API 来支持外部显示器的使用。presentation 是一种独特的对话框,其目的是在辅助显示器上呈现内容。presentation 在创建时与目标 Display 相关联,并根据显示指标配置其上下文和资源配置。
仪表盘显示器
Presentation API 对于典型的仪表盘显示器来说已经足够了,它具有以下允许的功能

Presentation API 不需要
- 单独的音频焦点。
- 运行整个 Activity 或应用。
- 考虑并发用户输入。
- 处理触摸事件。
要了解有关多显示器使用的更多信息,请参阅多显示器概述。
前提条件:熟悉 Android WindowManager 的先前开发会有所帮助。
支持的内容类型
有些车辆可能不希望 Android 直接绘制仪表盘图形,但仍然希望显示诸如逐向导航或音乐标题之类的信息。Android 可以通过多种方式发送此类数据。Android 设备可以将仪表盘内容作为以下形式发送:
- 基于元数据,例如通过
CarVendorExtensionManager
或VehicleNetworkService
通过 CAN 发送消息。仪表盘系统必须基于元数据创建适当的图形。 - 基于图形,发送到物理或虚拟显示器。显示器可以是仪表盘内的专用显示器,也可以是完全图形化的仪表盘显示器的一部分。
基于图形的仪表盘显示器的硬件架构示例
图 2. Android Automotive 基于图形的仪表盘显示器示例。
安全关键型(负责渲染仪表盘)和 Android 操作系统可能驻留在同一个多核 SoC 上(例如,将 Cortex-R 专用于实时操作系统,将 Cortex-A 专用于 Android)。接口可以是以太网 AVB(音视频桥接)、LVDS 或 HDMI。在 Android 中,图形仪表盘可以作为虚拟显示器连接,将硬件架构隐藏在 Display HAL 实现之后。
后座限制
对于后座娱乐,presentation API 具有以下限制
- 无法投影整个 Activity(presentation 是一个对话框)。
- 只有一个音频焦点可用。
- 没有并发用户。
- 外部显示器没有直接的触摸事件(需要单独的注入流程)。