用媒体实现电台功能

电台界面以独立应用的形式实现。如需了解有关如何将电台界面集成到电台硬件的说明,请参阅实现电台

以下部分介绍了如何将电台界面与媒体集成,以便为用户提供无缝体验,让用户能够与媒体来源和电台互动,就像它们是单个应用一样。

媒体来源切换用户流

下图说明了电台和媒体的参考实现如何实现应用切换用户流。

媒体来源切换用户流

图 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 并实现其所有政策。