我有一个小型应用程序可以播放连续的声音(一个教学应用程序播放一个单词的sillables)
这可以通过在每个声音停止播放后立即发射事件来实现。类似的东西:
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上播放在运行时确定的一系列声音?
答案 0 :(得分:2)
首先, Android版Google Chrome 一直存在限制,即不允许应用程序播放 HTML音频而不执行显式操作 em>由用户。但是,它与股票浏览器在大多数情况下处理它的方式不同。
正如 Chromium Org 所说的那样, Autoplay在Android上不受尊重,因为它会花费数据使用费用。
您可以在同一here找到更多详细信息。
除了导致带宽浪费之外,这也有一定意义,因为移动设备在公共场所和家庭中使用,其中未经请求的声音来自随机网站可能是令人讨厌的。
但是,在更高版本中,这个想法已经过时了, Chrome on Android 开始允许在其上自动播放 HTML音频和视频 。在经过一系列评论和讨论之后,此功能再次还原,使用户操作在Android版Chrome浏览器上调用HTML音频和视频时必须
Here是我发现的更多内容。正如它所说,原因是“我们将收集一些关于用户如何对自动播放视频做出反应的数据,以决定是否保留此限制”。因此,没有用户操作的播放选项被还原。
但是,我可以建议你尝试一下,这将有助于你实现你想要的目标。您所要做的就是复制此代码并粘贴到 Chrome for Android 中。这有助于您重置默认设置为的标记,不允许在没有用户互动的情况下播放HTML音频和视频:
chrome://flags/#disable-gesture-requirement-for-media-playback
OR
about:flags/#disable-gesture-requirement-for-media-playback
如果上述步骤对您没有帮助/帮助,您可以这样做:
进入
chrome://flags
或about:flags
(这将引导您chrome://flags
)和启用“禁用媒体播放的手势要求”选项(这是实际上与上面指定的URL相同)。