Android 提供丰富的用户体验,并针对在高清电视等大屏设备上运行的应用进行了优化。您可以为 Android TV 开发应用,从而扩展应用的受众群体。本文档提供了有关如何有效完成此操作的指导。
构建 TV 应用
TV 应用使用与手机和平板电脑应用相同的结构。这意味着您可以根据已有的 Android 应用开发知识来创建新的 TV 应用,或者扩展现有应用以使其也能在 TV 设备上运行。
但是,TV 的用户交互模式与手机和平板设备截然不同。为了让您的应用在 TV 设备上获得成功,您必须设计新的布局,使其在 10 英尺外也能清晰理解,并提供仅使用方向键和选择按钮即可操作的导航。
如需详细了解如何处理 TV 硬件控制器、构建 TV 布局和创建 TV 导航等注意事项,请参阅构建 TV 应用。
使用 Media3 ExoPlayer
Jetpack Media3 提供了一个 Player 接口,该接口定义了播放、暂停、seek 和显示曲目信息等基本功能。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
,用户可以使用语音命令 seek 和跳过歌曲或剧集。
更多注意事项
当您将媒体应用扩展到 Android for TV 时,您需要考虑无障碍功能问题、如何提高参与度、如何帮助用户找到内容,以及如何构建游戏和 TV 输入服务。
TV 无障碍功能
尽管辅助技术可以而且确实有助于弱视用户,但在 TV 应用的内容发现过程中支持无障碍功能仍然很重要。
例如,要特别注意提供导航指导并正确标记元素,并确保 TV 应用与 TalkBack 等无障碍功能良好协作。这些步骤可以显著改善视力障碍用户的体验。
改善无障碍功能的第一步是提高意识。如需详细了解文本缩放、键盘布局和音频说明,请参阅无障碍功能资源。
在 Google TV 上提高参与度的最佳实践
为 Android TV 构建的所有应用都可以在运行 Google TV 的设备上运行。为了在 Google TV 上提供最佳用户体验,我们建议您遵循以下最佳实践。
您需要使用 MediaSession
,以便提供一种通用方式与音频或视频播放器交互。如需详细了解如何实现此功能,请参阅使用 Media3 MediaSession。
作为基本要求,您的应用需要支持 Google Cast。它可以让您扩展 Android、iOS 和 Chrome 应用,以便将音频和视频流式传输到 Android TV、Chromecast 设备和 Assistant 设备。如需了解详情,请参阅Google Cast 文档。
您还可以帮助用户
通过提供媒体操作 feed 或集成“下一观看”,在不同界面上发现内容。
通过支持账号关联和权益同步、提供语音投射以及启用 Cast Connect,利用语音和互动功能。
通过集成 Google Play 结算并提供流畅的订阅体验,更轻松地付款。
构建 TV 输入框架
观看直播电视节目以及其他基于频道的连续内容是电视体验的重要组成部分。用户习惯通过浏览频道在电视上选择和观看节目。TV Input Framework 创建频道,用于在电视节目指南中发布视频或音乐内容。
TV Input Framework 提供了一种统一的方法,用于接收和播放来自硬件源(如 HDMI 端口和内置调谐器)以及软件源(如通过互联网流式传输的视频)的直播视频内容。如需了解详情,请参阅构建 TV 输入服务。