如何解决使用 MediaButton 控制前台应用程序无音频,后台有音频
我想使用媒体按钮来控制前台应用程序,但不用于音频用途。 因此,目标是检测按钮点击以在应用中执行某些操作。
我可以通过使用 MediaSession
和 MediaButtonReceiver
来实现这一点。 see here
问题是应用在使用的时候,经常会在后台播放音乐,所以后台应用的音频焦点接管了MediaSession,我无法再控制我的应用了。
有没有办法做到这一点?使用 onKeyDown
直接监听按钮点击似乎不起作用。
解决方法
遗憾的是,无法同时使用两个活动的 MediaSession
。如果另一个应用程序正在播放音乐并运行 MediaSession
,那么您的应用程序没有焦点且未处于活动状态......这是为了更好的用户体验而设计的 - 只有一个“播放器”应用程序可以播放音乐(或视频) .如果这不起作用,并且您可以同时通过几个应用程序播放音乐,那么应该如何使用媒体按钮,例如耳机?暂停/恢复所有玩家?这只是对用户不友好,因此 Android 团队引入了 MediaSession
模式,可以选择通过任何应用调用“现在关注我”,但随后另一个应用/MediaSession
暂停并且没有任何输入(此活动会话确实如此)
如果您需要按下物理按钮,那么 onKeyDown
应该可以工作(在 Activity
内或最终使用 AccessibilityService
,这将在整个系统中“全局”工作)。如果您需要按下一些屏幕通知按钮,那么只需将 custom layout for your notification 设置为您喜欢的按钮数量,甚至可以设置为播放器的样式
请注意,在 Android 11 中,当您下拉状态栏时,活动 MediaSession
的通知会粘在通知部分的顶部。您的自定义通知将位于所有其他通知之间(您可以使用通知/通道的优先级参数稍微操纵位置)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。