本部分会一直用到这些术语和概念。
CarAppServiceCarAppService是一个抽象Service类,应用必须实现并导出该类,才能被主机发现并由主机进行管理。应用的CarAppService使用createHostValidator验证主机连接是否可以信任,随后使用onCreateSession为每个连接提供Session实例。- 主机
主机是一个后端组件,它会实现库的 API 提供的功能,以便您的应用在汽车中运行。主机提供一系列服务,从发现应用并管理其生命周期,到将模型转换为视图,再到将用户交互操作通知给应用。
在移动设备上,此主机由 Android Auto 实现。在 Android Automotive OS 上,此主机作为系统应用进行安装。
- 模型和模板
界面由模型对象的图来表示,您可以按照它们所属的模板允许的不同方式排列在一起。模板是模型的子集,它们可以在图中充当根。
模型包含要以文字和图片的形式显示给用户的信息,以及用于配置此类信息的视觉外观各个方面的属性。例如,文字颜色或图片大小。
主机会将模型转换为符合防止驾驶员分心标准的视图,并解决一些细节问题,例如存在各种车载显示屏类型和输入模式。
ScreenScreen是一个由库提供的类,应用实现该类来管理用户可见的界面。Screen具有生命周期,应用使用它来发送要在屏幕可见时显示的模板。此外,也可以将Screen实例推送到Screen堆栈以及将从该堆栈中弹出这些实例,以确认它们符合模板流限制。SessionSession是一个抽象类,应用必须使用CarAppService.onCreateSession实现并返回该类。Session充当在车载显示屏上显示信息的入口点。Session具有生命周期,可告知车载显示屏上应用的当前状态,例如当应用可见或隐藏时。当
Session开始时(例如当应用首次启动时),主机会使用onCreateScreen方法询问要显示的初始Screen。- 模板限制
不同的模板会对其模型的内容施加限制。例如,列表模板对可以呈现给用户的项数有限制。
模板对可以采用什么方式连接它们以形成任务流也有限制。例如,应用最多只能将 5 个模板推送到屏幕堆栈。如需了解详情,请参阅模板限制。