如何摆脱 Chrome 在 Android 上显示的“媒体播放”通知?

Posted

技术标签:

【中文标题】如何摆脱 Chrome 在 Android 上显示的“媒体播放”通知?【英文标题】:How to get rid of "media playing" notification shown by Chrome on Android? 【发布时间】:2019-09-07 16:40:13 【问题描述】:

我的 html5 游戏有一些在“html5”模式下使用 Howler.js 的背景音乐,这显然会触发 Chrome for android 的 media playback notifications。这意味着当用户在任何选项卡中打开我的游戏时会显示一条通知:

游戏是一个好公民,当标签不在焦点时会暂停音乐,所以不需要这个通知。它甚至令人困惑,因为用户可以在不进入游戏的情况下暂停和恢复游戏的背景音乐。但我找不到摆脱通知的方法。

我尝试在音乐对象上调用stop() 而不是pause()mute(),但这不会删除通知。

再深入一点,我发现了实验性的MediaSession API (W3C draft),据说可以用来控制通知。但是,如果我理解正确,它无法完全禁用它!

我在我的应用程序开始时尝试过这个:

if (typeof navigator.mediaSession == 'object') 
  navigator.mediaSession.playbackState = 'none'

但是,这只会设置声明的播放状态(在规范术语中)。并将其设置为 'none' 无效:

实际播放状态按以下方式计算:

如果声明的播放状态是“正在播放”,则返回“正在播放”。 否则,返回猜测的播放状态

猜测的播放状态是我无法控制的;它是由浏览器根据页面上<audio> 元素的状态导出的。

是否有可能我忽略了,或者这只是当前 MediaSession 规范中的疏忽?

【问题讨论】:

【参考方案1】:

This 可能就是您要找的。​​p>

如果您可以在 5 秒内循环播放音乐(如 NES 天),通知将不会显示。

否则,请使用不带“audio”元素的 Web Audio API。所以,使用流。

否则,“使用 audio.src = '' 关闭媒体通知。” reference

【讨论】:

link 已经在我的原始帖子中了。甚至 NES 上的音乐也超过 5 秒。使用 Web Audio 的缺点是您必须先下载并解码整个文件才能开始播放,这就是我指示 Howler 使用 audio 元素的原因。最后,audio.src=''(不是“.”)会停止播放,不是吗?

以上是关于如何摆脱 Chrome 在 Android 上显示的“媒体播放”通知?的主要内容,如果未能解决你的问题,请参考以下文章

无法完全摆脱 Android 4.1.2 上 Phonegap 3.0 应用程序中的点击突出显示颜色

如何摆脱Android应用栏中的后退按钮

如何在Android上导出Highstock / Highcharts图表?

Android webview周围有白色边框,我该如何摆脱它?

我怎样才能摆脱 chrome 或其他浏览器中的录音符号?

网站背景在 Android 上显示不正确。 Chrome DevTools 没有反映这一点