如何摆脱 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上导出Highstock / Highcharts图表?