我已经遵循了这个Google指南(https://developers.google.com/web/updates/2017/02/media-session),并且几乎一切正常。
但是有一种不希望有的行为:当我更改音频源时(当音频结束或用户单击“下一个曲目”时),通知消失,并在音频完成加载并开始播放时重新出现。
所需的行为是将媒体通知保持在轨道之间。有没有办法做到这一点?
我尝试将navigator.mediaSession.playbackState设置为“正在播放”,但不,对我而言没有甜甜圈。
最佳答案
它可能不再相关,但是我已经在自己的音乐播放器中修复了此问题。
这是我修复的提交,它可能会有所帮助:
https://github.com/RuurdBijlsma/VueMusic/commit/c9eff89a2a0bb3ccf360d54c771065d7ce119501
基本上,除了第一个audio
元素变量外,我添加了一个名为backupAudio
的第二个变量,该变量仅在音频源之间切换时才有意义。当我加载新轨道时,将交换backupAudio
和audio
内容(audio
变为backupAudio
而backupAudio
变为audio
),此后,我在audio
元素上设置了src并暂停了backupAudio
元素。
这样做可以确保通知按预期运行。但是,对于音频元素上的任何事件侦听器,您都应该小心。之前,我已经在另一个应用程序中实现了此功能,在该应用程序中,快速跳过曲目可能会导致同时播放两个曲目,我已经在当前的音乐播放器中修复了该问题。 (也不要忘记像我刚才那样更改两个音频元素的音量)