使用媒体控制器测试应用

通过语音与 Android 手机、汽车、电视和耳机上的 Google 助理进行交互的媒体应用由 Android 媒体会话 API 提供支持,并使用媒体操作。媒体操作生命周期可能难以跟踪。即使是简单的播放搜索请求也有许多中间步骤,其中任何步骤都可能出错,如简化的时序图所示

The Media Action Lifecycle

图 1. 媒体操作生命周期

媒体控制器测试 (MCT) 应用程序允许您测试 Android 上媒体播放的复杂细节,并帮助验证您的媒体会话实现。

MCT 显示有关您应用的 MediaController 的信息,例如其 PlaybackState 和元数据,并且可用于测试应用间媒体控件。MCT 还包括一个验证测试框架,允许您自动化您的质量保证测试。

为了使用 MCT,您的应用必须拥有媒体浏览器服务,并且您必须允许 MCT 连接到它。有关更多信息,请参阅构建媒体浏览器服务

启动 MCT

The MCT Launch Page
图 2. MCT 启动页面

启动 MCT 时,您会看到两个列表

  • 活动 MediaSessions - 此列表在您启动 MCT 时最初为空,您将看到消息“未找到媒体应用。扫描活动媒体会话需要通知监听器权限。”点击设置以转到权限屏幕并为 MCT 启用权限。
  • MediaBrowserService 实现 - 此列表显示已实现媒体浏览器服务的应用。如果您已实现媒体浏览器服务,则您的应用将显示在此列表中,但只有在您已将应用配置为接受所有连接或将 MCT 列入白名单的情况下,您才能使用 MCT。有关更多信息,请参阅使用 onGetRoot() 控制客户端连接

手动测试手机应用

如果您允许 MCT 连接到您应用的媒体浏览器服务,则您的应用会显示在媒体浏览器服务列表实现列表中。在列表中找到它,然后点击控制以在后台启动您的应用。

否则,您必须首先在后台自行启动您的应用,然后在它出现在活动媒体会话列表中时点击控制

测试准备和播放

当 MCT 开始控制您的应用时,它会显示应用的当前会话元数据:当前选定的媒体以及会话准备处理的操作。

The Control Page
图 3. 控制页面

MCT 控制页面顶部包含一个下拉菜单,您可以在其中选择搜索URI媒体 ID,以及一个文本字段,用于指定与搜索、URI 或媒体 ID 关联的输入数据(如果您选择其中一个选项)。

文本字段下方的准备播放按钮执行相应的调用(onPrepare()onPrepareFromSearch()onPrepareFromUri()onPrepareFromMediaId()onPlay()onPlayFromSearch()onPlayFromUri()onPlayFromMediaId()),具体取决于您选择的操作。

测试音频焦点

行为良好的媒体应用应该能够处理音频焦点。您可以通过在您的应用旁边运行另一个音频应用来测试音频焦点。MCT 控制页面包含一个请求和释放音频焦点的按钮。

要测试音频焦点,请按照以下步骤操作

  1. 使用音频焦点下拉菜单选择三个持续时间提示之一:AUDIOFOCUS_GAINAUDIOFOCUS_GAIN_TRANSIENTAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
  2. 按按钮请求焦点。
  3. 再次按按钮释放焦点。

测试传输控件

Testing Transport Controls
图 4. 测试传输控件

向左滑动以显示 MCT 的 UI 视图。此视图具有标准媒体控制器传输按钮,并显示会话的程序图像和数据。禁用的传输按钮用橙色圆圈标记。所有其他按钮都处于活动状态。

使用传输按钮测试您的播放器。传输按钮的状态应按预期更改。例如,当您按下播放按钮时,它应该被禁用,而暂停和停止按钮则启用。

再次向左滑动以查看显示可选操作的视图。每个操作都有一个控件,显示它是否处于活动状态。如果它处于活动状态,您可以通过点击它来执行该操作。

如果您从具有媒体浏览器服务的应用列表中连接,则可以再向左滑动两次以查看视图,这些视图允许您向上和向下遍历应用的内容层次结构或搜索内容树。

手动测试视频应用

使用分屏模式测试视频应用控制器。首先,在一个窗口中打开您的视频应用,然后在分屏模式下打开 MCT。

运行验证测试

验证测试框架提供一键式测试,您可以运行这些测试以确保您的媒体应用对播放请求做出正确的响应。

测试手机应用

The Test Button
图 5. 测试按钮

要访问验证测试,请点击媒体应用旁边的测试按钮。

MCT 状态

The Media Control State
图 6. 媒体控制状态

下一个视图向您显示有关 MCT 的 MediaController 的详细信息,例如 PlaybackState、元数据和队列。工具栏右上角有两个按钮。左侧的按钮在可解析日志和格式化日志之间切换。右侧的按钮刷新视图以显示最新信息。

选择测试

The Test Selection Page
图 7. 测试选择页面

向左滑动,您将到达验证测试视图,您可以在其中看到可滚动可用测试列表。如果测试使用查询(例如图 7 中显示的从搜索播放测试),则有一个文本字段用于输入查询字符串。

MCT 包括以下媒体操作的测试,并且项目中不断添加更多测试

  • 播放
  • 从搜索播放
  • 从媒体 ID 播放
  • 从 URI 播放
  • 暂停
  • 停止
  • 跳到下一首
  • 跳到上一首
  • 跳到队列项目
  • 跳转到

测试结果

A Successful Test Result
图 8. 测试成功的结果

视图底部的结果区域最初为空。运行测试时,它将显示结果。例如,要运行从搜索播放测试,请在文本字段中输入搜索查询,然后点击运行测试。以下屏幕截图显示了测试成功的结果。

测试 Android TV 应用

在 Android TV 上启动 MCT 时,您会看到已安装媒体应用的列表。请注意,只有在应用实现媒体浏览器服务的情况下,它才会显示在此列表中。

The MCT Launch Page on TV

图 9. 电视上的 MCT 启动页面

选择应用将带您进入测试屏幕,该屏幕在右侧显示验证测试列表。

The Verification Tests Page on TV

图 10. 电视上的验证测试页面

运行测试时,屏幕左侧将显示有关所选 MediaController 的信息。有关更多详细信息,请在 Logcat 中检查 MCT 日志。

The Test Information Page on TV

图 11. 电视上的测试信息页面

需要查询的测试用键盘图标标记。点击这些测试之一将打开查询的输入字段。点击Enter以运行测试。

为了使文本输入更容易,您还可以使用 adb 命令

adb shell input text your-query

您可以使用“%s”在单词之间添加空格。例如,以下命令将文本“hello world”添加到输入字段。

adb shell input text hello%sworld

构建测试

您可以提交包含您认为有用的更多测试的拉取请求。要了解如何构建新测试,请访问MCT GitHub Wiki并查看验证测试说明

请查看贡献说明

其他资源

MCT 旨在与实现媒体 API 的应用结合使用。有关此类应用的示例,请参阅通用 Android 音乐播放器

始终欢迎错误修复和改进。请参阅贡献说明