我有一个小应用程序,可以播放顺序的声音(一个教学应用程序,播放一个单词的声音)
这可以通过在每个声音停止播放后立即触发事件来实现。类似于:
var sounds = new Array(new Audio("1.mp3"), new Audio("2.mp3"));
var i = -1;
playSnd();
function playSnd() {
i++;
if (i == sounds.length) return;
sounds[i].addEventListener('ended', playSnd);
sounds[i].play();
}然而,现在android chrome已经对如何播放声音实施了一些新的限制:声音事件都必须由用户操作触发。
所以,当我运行与上面类似的代码时,第一个声音播放,然后我得到
Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.如何在Android的Chrome上播放在运行时确定的一系列声音?
发布于 2017-11-15 16:22:42
首先,Google在安卓上一直有一个限制,即不允许应用程序在没有用户明确操作的情况下播放HTML音频。然而,在大多数情况下,它不同于股票浏览器处理它的方式。
正如Chromium 所说,其原因是,Autoplay在安卓系统上不受尊重,因为它将花费数据的使用成本。 您可能会在同一个这里上找到更多的细节。 除了这会导致带宽的浪费之外,这也有一定的道理,因为移动设备被用于公共场合和房屋中,在这些地方,来自随机网站的未经请求的声音可能会成为讨厌的。
然而,在后来的版本中,这一想法被否决了,Android上的Chrome开始允许自动播放HTML音频和视频。在经过一系列的评论和讨论之后,将恢复到原来的状态,使用户必须在Chrome上调用HTML和视频。
这里是我在同一个网站上发现的更多的东西。正如上面所说的,原因是“我们将收集一些关于用户对自动播放视频的反应的数据,以决定是否保留这一限制”。因此,在没有用户操作的情况下,播放选项被恢复。 您还可以在_autoplay和维格上找到更多关于音频和视频的阻塞的信息。
然而,这是我可以建议你尝试的东西,这将帮助你实现你的意愿。你所要做的就是复制这段代码并粘贴到你的Chrome for Android中。这有助于您重置默认设置为的标志,不允许在没有用户交互的情况下播放HTML音频和视频。
chrome://flags/#disable-gesture-requirement-for-media-playback或about:flags/#disable-gesture-requirement-for-media-playback
如果上面的过程对您没有帮助/工作,您可以这样做:
进入
chrome://flags或about:flags(这将指向chrome://flags)和Enable“禁用媒体播放手势要求”选项(实际上与上面指定的URL相同)。
https://stackoverflow.com/questions/47143562
复制相似问题