使用媒体控制器测试应用

在 Android 手机上通过语音与 Google 助理互动的媒体应用; 汽车、电视和头戴式耳机由 Android 媒体会话 API 提供支持,并使用媒体操作。 媒体操作生命周期可能难以跟踪。即使是简单的搜索结果 请求中包含许多可能会出现问题的中间步骤, 简化的时间轴:

媒体操作生命周期

图 1. 媒体操作生命周期

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

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

为了使用 MCT,您的应用必须提供媒体浏览器服务 并且您必须允许 MCT 连接至该平台。请参阅 构建媒体浏览器服务

启动 MCT

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

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

  • Active MediaSessions - 当您启动 MCT 时,此列表最初为空 系统会显示“未找到任何媒体应用。通知 需要监听器权限才能扫描活跃的媒体会话。”点击设置 请转到权限屏幕,然后为 MCT 启用该权限。
  • MediaBrowserService 实现 - 此列表显示了已实现媒体浏览器服务的应用。 如果您实现了媒体浏览器服务,您的应用将出现在此列表中。 但只有在将应用配置为接受所有 或将 MCT 列入许可名单。请参阅使用 调用 onGetRoot()

手动测试手机应用

如果您允许 MCT 连接到您应用的媒体浏览器服务,您的应用 出现在媒体浏览器服务列表实现列表中。查找 然后点击 Control 以在后台启动应用。

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

测试准备和播放

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

控制页
图 3. “对照组”页面

MCT 控件页面的顶部包含一个下拉菜单,您可以从中选择 SearchURIMedia IDNone,以及文本字段 指定与搜索、URI 或媒体 ID 相关联的输入数据, 请选择其中一项

文本字段正下方的 Prepare(准备)和 Play(播放)按钮用于执行 适当的调用(onPrepare()onPrepareFromSearch()onPrepareFromUri()onPrepareFromMediaId()onPlay()onPlayFromSearch()onPlayFromUri()onPlayFromMediaId())。

测试音频焦点

行为良好的媒体应用应该能够处理音频 焦点。您可以通过以下方式测试音频焦点 将另一个音频应用与您的应用一起运行。MCT 控件页面包含一个 用于请求和释放音频焦点的按钮。

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

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

测试传输控件

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

向左滑动以显示 MCT 的界面视图。此视图 包含标准媒体控制器传输按钮,并显示会话的 程序图片和数据已停用的传输按钮用圆圈圈出 橙色。所有其他项都有效。

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

再次向左滑动可查看显示可选操作的视图。每项操作 有一个控件,显示其是否处于有效状态。如果已启用,您可以 即可执行相应操作

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

手动测试视频应用

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

运行验证测试

验证测试框架提供了一键式测试,供您运行 确保您的媒体应用能够正确响应播放请求。

测试手机应用

测试按钮
图 5. “测试”按钮

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

MCT 状态

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

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

选择测试

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

向左滑动即可进入验证测试视图 查看可用测试的可滚动列表。如果测试使用查询(如 从搜索测试中播放(如图 7 所示), 用于输入查询字符串的文本字段。

MCT 包括针对以下媒体操作的测试,更多测试包括 :

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

测试结果

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

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

测试 Android TV 应用

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

电视上的 MCT 启动页面

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

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

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

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

运行测试时,屏幕左侧会显示 已选定 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 的应用结合使用。 请参阅 通用 Android 音乐播放器 获取此类应用的示例。

我们随时欢迎问题修复和改进。请参阅 投稿说明