在 Android 手机、汽车、电视和头戴式耳机上通过语音与 Google 助理互动的媒体应用由 Android 媒体会话 API 提供支持,并使用媒体操作。媒体操作生命周期可能很难遵循。即使是通过搜索请求进行简单的播放,也会有许多可能出现问题的中间步骤,如简化的时间轴所示:
媒体控制器测试 (MCT) 应用可让您在 Android 上测试媒体播放的复杂性,并帮助验证您的媒体会话实现。
MCT 会显示与应用 MediaController
有关的信息(例如其 PlaybackState
和元数据),并可用于测试应用间媒体控件。MCT 还包含验证测试框架,可让您自动执行质量检查测试。
为了使用 MCT,您的应用必须具有媒体浏览器服务,并且您必须允许 MCT 连接到该服务。如需了解详情,请参阅构建媒体浏览器服务。
启动 MCT
![MCT 发布页面](https://developer.android.google.cn/static/media/images/MCT/MCT-Launch-Screen.png?authuser=9&hl=hi)
启动 MCT 后,您会看到两个列表:
- Active MediaSessions - 启动 MCT 时,此列表最初为空,您会看到消息“No media apps found. 需要通知监听器权限才能扫描活跃媒体会话。”点击设置以转到权限屏幕,为 MCT 启用权限。
- MediaBrowserService 实现 - 此列表显示了已实现媒体浏览器服务的应用。如果您已实现媒体浏览器服务,您的应用会显示在此列表中,但只有在将应用配置为接受所有连接或将 MCT 列入许可名单后,才能使用 MCT。如需了解详情,请参阅使用 onGetRoot() 控制客户端连接。
手动测试手机应用
如果您已允许 MCT 连接到应用的媒体浏览器服务,您的应用就会显示在媒体浏览器服务列表实现列表中。只需找到相应组件,然后点击 Control 即可在后台启动您的应用。
否则,您必须先在后台自行启动应用,然后在活动媒体会话列表中显示 Control 后,点击它。
测试准备和游戏体验
当 MCT 开始控制您的应用时,它会显示应用当前的会话元数据:当前选定的媒体以及会话准备处理的操作。
![控制页](https://developer.android.google.cn/static/media/images/MCT/audio-focus.png?authuser=9&hl=hi)
MCT 控件页面顶部包含一个下拉菜单,您可在其中选择搜索、URI、媒体 ID 或无;此外,如果您选择其中一个选项,则还有一个文本字段以指定与搜索、URI 或媒体 ID 相关联的输入数据。
文本字段正下方的 Prepare 和 Play 按钮会执行相应的调用(onPrepare()
、onPrepareFromSearch()
、onPrepareFromUri()
、onPrepareFromMediaId()
、onPlay()
、onPlayFromSearch()
、onPlayFromUri()
、onPlayFromMediaId()
),具体取决于您选择的操作。
测试音频焦点
正常运行的媒体应用应能够处理音频焦点。您可以通过在应用旁边运行另一个音频应用来测试音频焦点。MCT 控件页面包含一个用于请求和释放音频焦点的按钮。
如需测试音频焦点,请按以下步骤操作:
- 使用 Audio Focus(音频焦点)下拉菜单从三个时长提示(
AUDIOFOCUS_GAIN
、AUDIOFOCUS_GAIN_TRANSIENT
或AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
)中选择一个。 - 按下按钮即可请求焦点。
- 再次按下该按钮释放焦点。
测试传输控件
![测试传输控件](https://developer.android.google.cn/static/media/images/MCT/MCT-Controller-Screen.png?authuser=9&hl=hi)
向左滑动,以显示 MCT 的界面视图。该视图包含标准的媒体控制器传输按钮,并显示会话的节目图片和数据。已停用的传输按钮会用橙色圈出。所有其他广告系列均已启用。
使用传输按钮测试播放器。传输按钮的状态应按预期发生变化。例如,当您按下“播放”按钮时,该按钮应变为停用状态,“暂停”和“停止”按钮会变为启用状态。
再次向左滑动即可找到显示可选操作的视图。每个操作都有一个控件,用于显示操作是否处于活动状态。如果按钮处于活跃状态,您可以通过点击来执行操作。
如果您是从具有媒体浏览器服务的应用列表中建立关联的,可以再向左滑动两次,以进入可让您针对应用的内容层次结构上下移动的视图,或搜索内容树。
手动测试视频应用
使用分屏模式测试视频应用控制器。首先,在一个窗口中打开您的视频应用,然后在分屏模式下打开 MCT。
运行验证测试
验证测试框架提供一键式测试,可用于确保您的媒体应用正确响应播放请求。
测试手机应用
![测试按钮](https://developer.android.google.cn/static/media/images/MCT/MCT-Test-Button.png?authuser=9&hl=hi)
如需访问验证测试,请点击媒体应用旁边的测试按钮。
MCT 状态
![媒体控件状态](https://developer.android.google.cn/static/media/images/MCT/MCT-Testing-Info-Screen.png?authuser=9&hl=hi)
下一个视图会显示有关 MCT 的 MediaController
的详细信息,例如 PlaybackState
、元数据和队列。工具栏右上角有两个按钮。左侧的按钮可以在可解析的日志和格式化的日志之间切换。右侧的按钮可刷新视图,以显示最新信息。
选择测试
![测试选择页面](https://developer.android.google.cn/static/media/images/MCT/MCT-Testing-Verification-Screen.png?authuser=9&hl=hi)
向左滑动会进入“验证测试”视图,您可以在其中查看可用测试的可滚动列表。如果测试使用查询(如图 7 所示的从搜索后播放测试),则会有一个文本字段来输入查询字符串。
MCT 包含针对以下媒体操作的测试,并且持续向项目中添加更多测试:
- 播放
- 从搜索结果中播放
- 从媒体 ID 播放
- 通过 URI 播放
- 暂停
- 停止
- 跳到下一个
- 跳到上一个
- 跳到队列项
- 跳转至
测试结果
![测试结果成功](https://developer.android.google.cn/static/media/images/MCT/MCT-Testing-Success-Screen.png?authuser=9&hl=hi)
视图底部的结果区域最初为空。系统会在您运行测试时显示结果。例如,如需运行“搜索播放”测试,请在文本字段中输入搜索查询,然后点击运行测试。以下屏幕截图显示了成功的测试结果。
测试 Android TV 应用
在 Android TV 上启动 MCT 时,您会看到已安装媒体应用的列表。 请注意,应用只有在实现媒体浏览器服务时,才会显示在此列表中。
选择应用后,您将进入测试屏幕,该屏幕右侧会显示验证测试列表。
运行测试时,屏幕左侧会显示所选 MediaController 的相关信息。如需了解详情,请查看 Logcat 中的 MCT 日志。
需要查询的测试标有键盘图标。点击其中一个测试即可打开查询的输入字段。点击 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。
我们欢迎您随时提供问题修复和改进服务。请参阅贡献说明。