javascript 如何让移动的浏览器在锁屏时不停地播放音频文件列表?

9o685dep  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(210)

我想有一个网页能够像一个音乐播放器。
用户将一列音频文件(托管在服务器上)排队,然后开始播放。当第一个音频结束时,第二个开始,等等,直到最后一个。
我可以使用<AUDIO>元素轻松实现此功能,并通过在ended事件上添加事件侦听器,用Javascript替换其src属性。
问题是,这在移动的上并不一致,因为一旦屏幕被锁定,Javascript就不会一直执行。它可能对一两首歌有效,但在某个时候它会停止“跳转”到下一首音轨
据我所知,这种行为是由于移动的浏览器在屏幕锁定时会在一段时间后停止Javascript事件循环以保存电池电量。我知道Screen Lock API,我认为保持屏幕始终打开会解决我的问题,但我不想保持屏幕始终打开。
我可以委托web worker播放音频文件,理论上它应该在后台运行,但我不确定它在屏幕锁定时是否会停止,最重要的是我不确定它是否能播放声音。
有没有类似于屏幕锁定API的东西,允许我请求权限,以保持脚本在屏幕锁定时也在执行?
如果不是这样,我如何克服这个问题?

wz3gfoph

wz3gfoph1#

经过一番研究,我发现终止javascript事件循环的行为是高度特定于浏览器的。
Chrome for Android似乎让播放无限运行。Firefox for Android更严格,并杀死了事件循环。
System Wake Lock看起来是解决上述问题的一个很有前途的API。目前,W3C仍在收集用例,以便能够定义一个新的标准:
https://github.com/w3c/system-wake-lock/issues/4

相关问题