【问题标题】:How to get rid of "media playing" notification shown by Chrome on Android?如何摆脱 Chrome 在 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 规范中的疏忽?

【问题讨论】:

    标签: android html google-chrome audio mediasession


    【解决方案1】:

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

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

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

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

    【讨论】:

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