使用媒体控制器测试应用

在 Android 手机、汽车、电视和头戴式耳机上通过语音与 Google 助理互动的媒体应用由 Android 媒体会话 API 提供支持,并使用媒体操作。媒体操作生命周期可能很难遵循。即使是通过搜索请求进行简单的播放,也会有许多可能出现问题的中间步骤,如简化的时间轴所示:

媒体操作生命周期

图 1. 媒体操作生命周期

媒体控制器测试 (MCT) 应用可让您在 Android 上测试媒体播放的复杂性,并帮助验证您的媒体会话实现。

MCT 会显示与应用 MediaController 有关的信息(例如其 PlaybackState 和元数据),并可用于测试应用间媒体控件。MCT 还包含验证测试框架,可让您自动执行质量检查测试。

为了使用 MCT,您的应用必须具有媒体浏览器服务,并且您必须允许 MCT 连接到该服务。如需了解详情,请参阅构建媒体浏览器服务

启动 MCT

MCT 发布页面
图 2. MCT 发布页面

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

  • Active MediaSessions - 启动 MCT 时,此列表最初为空,您会看到消息“No media apps found. 需要通知监听器权限才能扫描活跃媒体会话。”点击设置以转到权限屏幕,为 MCT 启用权限。
  • MediaBrowserService 实现 - 此列表显示了已实现媒体浏览器服务的应用。如果您已实现媒体浏览器服务,您的应用会显示在此列表中,但只有在将应用配置为接受所有连接或将 MCT 列入许可名单后,才能使用 MCT。如需了解详情,请参阅使用 onGetRoot() 控制客户端连接

手动测试手机应用

如果您已允许 MCT 连接到应用的媒体浏览器服务,您的应用就会显示在媒体浏览器服务列表实现列表中。只需找到相应组件,然后点击 Control 即可在后台启动您的应用。

否则,您必须先在后台自行启动应用,然后在活动媒体会话列表中显示 Control 后,点击它。

测试准备和游戏体验

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

控制页
图 3. 控制页

MCT 控件页面顶部包含一个下拉菜单,您可在其中选择搜索URI媒体 ID;此外,如果您选择其中一个选项,则还有一个文本字段以指定与搜索、URI 或媒体 ID 相关联的输入数据。

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

测试音频焦点

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

如需测试音频焦点,请按以下步骤操作:

  1. 使用 Audio Focus(音频焦点)下拉菜单从三个时长提示(AUDIOFOCUS_GAINAUDIOFOCUS_GAIN_TRANSIENTAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)中选择一个。
  2. 按下按钮即可请求焦点。
  3. 再次按下该按钮释放焦点。

测试传输控件

测试传输控件
图 4. 测试传输控件

向左滑动,以显示 MCT 的界面视图。该视图包含标准的媒体控制器传输按钮,并显示会话的节目图片和数据。已停用的传输按钮会用橙色圈出。所有其他广告系列均已启用。

使用传输按钮测试播放器。传输按钮的状态应按预期发生变化。例如,当您按下“播放”按钮时,该按钮应变为停用状态,“暂停”和“停止”按钮会变为启用状态。

再次向左滑动即可找到显示可选操作的视图。每个操作都有一个控件,用于显示操作是否处于活动状态。如果按钮处于活跃状态,您可以通过点击来执行操作。

如果您是从具有媒体浏览器服务的应用列表中建立关联的,可以再向左滑动两次,以进入可让您针对应用的内容层次结构上下移动的视图,或搜索内容树。

手动测试视频应用

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

运行验证测试

验证测试框架提供一键式测试,可用于确保您的媒体应用正确响应播放请求。

测试手机应用

测试按钮
图 5. 测试按钮

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

MCT 状态

媒体控件状态
图 6. 媒体控件状态

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

选择测试

测试选择页面
图 7.测试选择页面

向左滑动会进入“验证测试”视图,您可以在其中查看可用测试的可滚动列表。如果测试使用查询(如图 7 所示的从搜索后播放测试),则会有一个文本字段来输入查询字符串。

MCT 包含针对以下媒体操作的测试,并且持续向项目中添加更多测试:

  • 播放
  • 从搜索结果中播放
  • 从媒体 ID 播放
  • 通过 URI 播放
  • 暂停
  • 停止
  • 跳到下一个
  • 跳到上一个
  • 跳到队列项
  • 跳转至

测试结果

测试结果成功
图 8.测试结果成功

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

测试 Android TV 应用

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

电视上的 MCT 发布页

图 9. 电视上的 MCT 发布页面

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

电视上的“验证测试”页面

图 10. TV 上的“验证测试”页面

运行测试时,屏幕左侧会显示所选 MediaController 的相关信息。如需了解详情,请查看 Logcat 中的 MCT 日志。

电视上的测试信息页面

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

需要查询的测试标有键盘图标。点击其中一个测试即可打开查询的输入字段。点击 Enter 以运行测试。

如需简化文本输入,您还可以使用 adb 命令:

adb shell input text your-query

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

adb shell input text hello%sworld

构建测试

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

请查看捐赠说明

其他资源

MCT 旨在与实现媒体 API 的应用结合使用。有关此类应用的示例,请参阅 Universal Android Music Player

我们欢迎您随时提供问题修复和改进服务。请参阅贡献说明