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

时间:2019-04-17 12:21:49

标签: android html5 google-chrome audio mediasession

我的HTML5游戏包含一些在“ html5”模式下使用Howler.js的背景音乐,显然触发了Android media playback notifications的Chrome浏览器。这意味着当用户在任何选项卡中打开我的游戏时会出现一条通知:

游戏是一个很好的公民,在选项卡不清晰时暂停音乐,因此不需要此通知。这甚至使用户感到困惑,因为用户可以暂停和继续游戏的背景音乐,而无需进入游戏。但是我找不到摆脱通知的方法。

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

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

我在应用程序开始时尝试了此操作

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

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

  

实际播放状态是通过以下方式计算的:

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

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

我是否有可能被忽视,或者这仅仅是当前MediaSession规范中的疏忽?

1 个答案:

答案 0 :(得分:2)

This可能就是您想要的。

如果您可以在5秒钟内使音乐循环播放(例如在NES日内),则不会显示通知。

否则,请使用不带“音频”元素的Web音频API。因此,使用流。

否则,“使用audio.src =消除媒体通知”。 reference