无线广播 UI 以独立应用的形式实现。有关如何将无线广播 UI 集成到无线广播硬件的说明,请参阅实现无线广播。
以下部分介绍了如何将无线广播 UI 与 Media 集成,从而为用户提供无缝体验,使用户能够像使用单个应用一样与媒体来源和无线广播互动。
媒体来源切换用户流程
下图说明了无线广播和 Media 的参考实现如何实现应用切换用户流程。
图 1. 媒体来源切换用户流程
为了在无线广播和 Media 中的其他应用之间提供无缝过渡,car-media-common
库定义了可用于启动媒体来源选择器的 Android intent。在 AOSP 中,此选择器在应用启动器中实现,呈现用于启动应用的相同 UI,但已过滤为仅显示媒体来源。
OEM 可以选择按原样采用当前的应用启动器实现,或实现自定义媒体来源选择器。
选择器可以在两种模式下运行
- 正常流程。使用选择器后,所选来源将显示在 Media 中,以便用户可以浏览其内容。
- 作为开关。选择器用于切换来源,但媒体不会显示给用户。主页上的“选择器”图标就是这种情况。选择来源后,系统会向用户显示最近的上一个屏幕(在本例中为主页)。
用于在媒体来源之间切换的 intent 可以从 MediaSource#getSourceSelectorIntent()
方法中获取,该方法接受一个 popup
布尔值,该布尔值返回一个 intent,用于启动上述每个流程。
实际 intent 在 packages/apps/Car/libs/car-media-common/res/values/config.xml
中定义。要自定义此配置,请使用构建时叠加层。
替换无线广播应用
鉴于无线广播应用实现了 Media Browse 和 Media Session,无线广播会显示在应用启动器中。为了防止用户点击图标时启动 Media,需要两个元素。无线广播必须
- 具有启动器 activity。
- 声明为自定义来源。为此,请将组件名称添加到
car-media-common/res/values/config.xml
中的custom_media_packages
键。
UX 驾驶限制
Media 必须遵守所有 UX 驾驶分心限制。为此,Media 必须监听 CarUXRestrictionManager 并实施其所有政策。
- Media 必须连接到 Car 库,并获取 CarUxRestrictionsManager 的实例。
- Media 必须订阅 CarUxRestrictions 列表中的更新,并按照文档记录实施这些更新。
- 对 Media 而言尤其重要的是
UX_RESTRICTIONS_NO_SETUP
。在这种情况下,必须停用登录流程。UX_RESTRICTIONS_LIMIT_STRING_LENGTH
。媒体应用提供的错误消息和其他文本必须限制为给定长度。