Android 提供丰富的用户体验,该体验针对在大屏幕设备(如高清电视)上运行的应用进行了优化。您可以通过为 Android TV 开发应用来扩展您的应用受众。本文档提供了有效执行此操作的指南。
构建电视应用
电视应用与手机和平板应用采用相同的架构。这意味着您可以基于您已知的Android应用开发知识创建新的电视应用,或者将您现有的应用扩展到电视设备上运行。
但是,电视的用户交互模型与手机和平板设备大相径庭。为了使您的应用在电视设备上获得成功,您必须设计出在10英尺外也能清晰理解的新布局,并提供仅使用方向键和选择键即可进行导航的功能。
有关如何处理电视硬件控制器、构建电视布局和创建电视导航等方面的更多信息,请参阅构建电视应用。
使用Media3 ExoPlayer
Jetpack Media3提供了一个Player接口,该接口定义了基本功能,例如播放、暂停、搜索和显示曲目信息的能力。ExoPlayer是Media3中该接口的默认实现。
与Android的MediaPlayer API相比,它增加了额外的便利功能,例如对多种流协议的支持、默认音频和视频渲染器以及处理媒体缓冲的组件。
您可以自定义和扩展ExoPlayer,并且可以通过Play商店应用更新进行更新。更多信息,请参阅Media3 ExoPlayer。
使用Media3 MediaSession
媒体会话为系统与您的应用的音频或视频播放器进行交互提供了一种通用方法。Media3与以前的媒体API的主要区别之一是,组件之间不再需要连接器。
新的MediaSession
类接受实现Player接口的任何类。ExoPlayer和MediaController都是实现该接口的类。这简化了组件之间的交互。更多信息,请参阅Player接口。
有关创建媒体播放应用的更多信息,请参阅使用ExoPlayer创建基本的媒体播放器。
为了为您的媒体应用的最终用户创造最佳体验,您需要实现MediaSession
。为此,请初始化一个Player
并将其提供给MediaSession.Builder
,如下所示
Kotlin
val player = ExoPlayer.Builder(context).build() val mediaSession = MediaSession.Builder(context, player).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build(); MediaSession mediaSession = new MediaSession.Builder(context, player).build();
自动状态处理
Media3库使用播放器的状态自动更新媒体会话。因此,您无需手动处理从播放器到会话的映射。这有助于确保您的用户始终在播放媒体上看到最新的信息,包括在正在播放卡片中。
控制和宣传播放
在Media3中,默认播放器是ExoPlayer类,它实现了Player接口。将媒体会话连接到播放器允许应用在外部宣传媒体播放并接收来自外部来源的播放命令。媒体会话将这些命令委托给媒体应用的播放器。
媒体会话是控制播放的关键。它允许您将来自外部来源的命令路由到执行媒体播放工作的播放器。外部客户端可以使用媒体控制器向您的媒体应用发出播放命令。这些命令由您的媒体会话接收,媒体会话最终将命令委托给媒体播放器。
有关播放的更多信息,例如如何自定义播放命令行为,请参阅使用MediaSession控制和宣传播放。
避免应用中断
使用MediaSession
可以避免不必要的中断,例如
意外和持续播放在关闭电视或切换电视输入时。这还会导致电视硬件的高能耗。
MediaSession
允许您的应用告知平台它正在播放媒体,平台能够告知应用可以停止播放。音乐播放意外停止在切换出应用或关闭电视显示器时。使用
MediaSession
API可以在后台服务中继续播放。与内容的交互受限这会阻止用户控制播放。例如,如果您的应用正在后台播放音乐,则返回您的应用,或支持语音命令。在您的应用中使用
MediaSession
,用户可以使用语音命令来搜索和跳过歌曲或剧集。
其他注意事项
当您将媒体应用扩展到Android TV时,您需要考虑可访问性问题、如何提高用户参与度、如何使用户能够找到内容,以及如何构建游戏和电视输入服务。
电视可访问性
尽管辅助技术可以帮助视力低下的用户,但在电视应用的内容发现过程中支持可访问性非常重要。
例如,特别注意提供导航指导和正确标记元素,并帮助确保电视应用能够很好地与TalkBack等辅助功能配合使用。这些步骤可以显著改善视力障碍用户的体验。
改善可访问性的第一步是提高认识。有关文本缩放、键盘布局和音频描述的更多信息,请参阅可访问性资源。
在Google TV上提高用户参与度的最佳实践
所有为Android TV构建的应用都可以在运行Google TV的设备上运行。为了在Google TV上提供最佳用户体验,我们建议您应用以下最佳实践。
您需要使用MediaSession
,以提供与音频或视频播放器交互的通用方法。有关如何实现此功能的更多信息,请参阅使用Media3 MediaSession。
作为基线,您的应用需要支持Google Cast。它允许您扩展您的Android、iOS和Chrome应用,以支持将音频和视频流传输到Android电视以及Chromecast设备和Assistant设备。更多信息,请参阅Google Cast文档。
您还可以帮助用户
跨界面发现内容通过提供媒体操作Feed或集成“接下来观看”。
利用语音和参与度通过支持帐户链接和授权同步、提供语音投射和启用Cast Connect。
更轻松地付费通过集成Google Play结算并提供无摩擦的订阅服务。
构建电视输入框架
观看直播电视节目和其他连续的、基于频道的內容是电视体验的重要组成部分。用户习惯于通过频道浏览来选择和观看电视节目。电视输入框架创建频道,用于在电视节目指南中发布视频或音乐内容。
电视输入框架提供了一种统一的方法来接收和播放来自硬件来源(如HDMI端口和内置调谐器)和软件来源(如通过互联网流式传输的视频)的直播视频内容。更多信息,请参阅构建电视输入服务。