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