自定义参考应用

本部分详细介绍了如何自定义控制中心参考应用和界面。

用户流和界面

本部分介绍了用户流程以及如何启动控制中心。

启动控制中心

您可以通过应用启动器系统界面导航栏上的图标启动控制中心。该图标仅显示在已启用后台可见用户的 build 中(如需了解详情,请参阅 UserHandleAware)。

您可以随时查看控制中心。控制中心由半透明窗口和透明背景组合而成,因此可以显示在任何其他应用之上,包括正在播放的视频和媒体内容。在应用的着陆页上:

  • 屏幕排列以及本地远程屏幕的使用。
  • 填充了媒体和媒体控件的屏幕。
  • 每个界面如何详细介绍媒体(及其他)控件。

屏幕的排列方式表示车辆中屏幕的布局。每个界面都是一个 DevicePickerScreen。如需自定义每个屏幕的位置和大小,请使用运行时资源叠加层 (RRO)。如需了解详情,请参阅在运行时更改应用资源的值

对于打开控制中心的每个显示屏,系统会显示一个带有醒目突出显示边框的不同屏幕。这是本地屏幕,即正在使用的显示屏。

其他每个屏幕都是一个远程屏幕,用于表示汽车中的不同显示屏,您可以根据 Fragment 中屏幕的排列方式来识别这些显示屏。如需计算车辆中配置的乘员区域总数,请使用 CarOccupantZoneManager#getAllOccupantZones

每个屏幕都定义了一个自定义属性 controlcenter:occupantZoneId,用于将数据与相应的乘员区域相关联。当媒体应用在特定显示屏上播放时,相应屏幕会显示媒体专辑封面。屏幕下方会显示播放(或暂停)按钮。

如果活跃的媒体应用是可见的任务(在控制中心后面打开),则位于播放按钮旁边的分享按钮会处于启用状态,以便打开镜像页面共享可让您共享媒体应用显示内容,对于包含视频的媒体应用最为有用。

屏幕元素

点按屏幕会显示显示屏上播放的媒体的详细视图。 这称为详情界面。该视图显示媒体元数据,例如标题、播放进度和艺术家。这些按钮可提供对乘员区域的额外控制。

  • 音频输出会显示正在播放媒体的音频输出设备,例如车内扬声器或耳机。音频输出:打开一个对话框,用于更改音频输出和媒体音量。

  • 显示输入锁定会锁定屏幕输入。此操作无法应用于驾驶员屏幕。

  • 显示屏电源会关闭屏幕电源。此操作无法应用于驾驶员屏幕。

当媒体是控制中心应用后面的可见任务时,“详细信息”视图会显示一个“分享”按钮,供用户点按。点按“分享”按钮会打开“镜像”页面:

发件人(顶部)和收件人(底部)之间的镜像和同步观看流程
图 2. 发送者(顶部)和接收者(底部)之间的镜像页面和共同观看历程。

开始“一起看”会话

镜像页面与使用 RRO 的着陆页类似。

如需添加屏幕以进行同步观看,请点按相应屏幕,然后点按完成

这样做会打开一个 Mirroring Activity,其中托管着共享应用,并提供浮动式临时控件,以便您退出同步观看会话或重新进入镜像页面来添加或移除参与者。

镜像活动,显示带有浮动控件的共享应用,以管理共同观看会话。
图 3. 具有临时浮动控件的镜像活动。

摘要

下面总结了控制中心内的各个页面。

流程图:显示控制中心应用中的不同页面和过渡。
图 4. 控制中心页面。

自定义准则

控制中心使用车载设备界面库进行自定义并提供基本主题和结构,可以按原样采用,也可以按照以下限制条件对其进行修改。

自定义 说明
应当

通过 RRO 调整整体主题背景和样式,例如:

  • 调色板
  • 大小
  • 文本外观
  • 对话框外观
  • 可绘制对象
  • 配置值
可以 修改控制中心的高级界面结构。

控制中心是系统应用套件的一部分,该套件包括媒体、通知中心和应用启动器。这些应用共享在 AOSP 结构的不同级别定义的样式和资源:

framework/base/core
此处定义了所有 Android 基本样式。具体来说,所有系统应用主题都基于 Theme.DeviceDefault,即专为供 OEM 用于自定义设备默认外观而设计的主题。

packages/services/Car/car_product/overlay
此文件夹中包含 Theme.DeviceDefault 的替换项,用于为 Android Automotive 生成 AOSP 式的外观和风格。OEM 可能会选择排除此叠加层,改用自己的叠加层。

packages/apps/Car/libs/car-ui-lib
此库定义了系统应用和未捆绑应用(专用于自定义)中常见的 AAOS 组件和资源。如需了解详情,请参阅车载设备界面库集成指南

packages/apps/Car/libs/car-apps-common
AOSP 提供的系统应用之间共用的常见颜色和样式。您可以使用叠加层自定义这些元素(类似于 packages/services/Car/car_product/overlay)。

packages/apps/Car/MultiDisplay/ControlCenter
所有系统应用都有一个扩展自 Theme.CarUi 的主题,该主题在 car-ui-lib 中定义。ControlCenterActivity 使用扩展 Theme.CarUi 的自定义 Theme.Transparent

为了支持某个流程(例如需要显示镜像任务的共同观看),控制中心会结合使用半透明窗口和透明背景,这样不会将应用发送到后台或发送 Lifecycle events

<style name="Theme.Transparent" parent="@style/Theme.CarUi.NoToolbar">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@color/transparent</item>
</style>