如何从 Android 的 PIP 窗口中删除 SKIP_TO_NEXT 和 SKIP_TO_PREVIOUS 按钮?

问题描述

我正在使用这样的 exo-player 和媒体会话扩展。

mediaSessionCompat = new MediaSessionCompat(activity,activity.getPackageName());
MediaSessionConnector sessionConnector = new MediaSessionConnector(mediaSessionCompat);
sessionConnector.setPlayer(exoPlayer);
mediaSessionCompat.setActive(true);

当我进入 PIP 窗口时,它会显示 3 个控制按钮(播放/暂停、跳到下一首、跳到上一首)。我只想要播放/暂停按钮,并想删除跳到下一个和跳到上一个按钮。

我该怎么做?

解决方法

虽然我不太熟悉 PIP 显示支持的操作的方式,但您可能希望准确查看 MediaSession 报告的操作。

对于一些背景,我提供了 declaring supported actions in my MediaSession codelab 的片段。

在您的情况下,MediaSessionConnector 似乎已发现存在播放队列。您可能想要查看队列的内容是如何提供给 ExoPlayer 的媒体源的。

有两种方法可以验证 MediaSession 仅包含正确的操作:

  • Media Controller Test 是一款移动应用,可让您查看报告的操作并在漂亮的用户界面中对其进行测试。
  • 您可以改为检查 adb shell dumpsys media_session 的输出: Inspecting adb output
    请注意,在这个 YouTube 示例中,播放队列包含 5 个项目,因此操作 ACTION_SKIP_TO_NEXT 包含在位掩码中: Analysis of PlaybackState actions
    有关这些操作常量的详细信息,我建议您阅读有关 the actions as declared in PlaybackState 的更多信息。

一旦您确认 MediaSession 正在报告正确的操作,PIP 显示不应再显示跳过下一个和上一个。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...