在Android的谷歌浏览器上按顺序播放声音(考虑到播放声音的新限制)

时间:2017-11-06 18:39:51

标签: android html google-chrome audio

我有一个小型应用程序可以播放连续的声音(一个教学应用程序播放一个单词的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();
}

(source)

然而,现在android chrome已经对如何播放声音实施了一些新的限制:声音事件必须全部由用户操作触发。

所以,当我运行与上面非常类似的代码时,第一个声音播放,然后我得到

Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.

如何在Android的Chrome上播放在运行时确定的一系列声音?

1 个答案:

答案 0 :(得分:2)

首先, Android版Google Chrome 一直存在限制,即不允许应用程序播放 HTML音频而不执行显式操作 em>由用户。但是,它与股票浏览器在大多数情况下处理它的方式不同。

  

正如 Chromium Org 所说的那样, Autoplay在Android上不受尊重,因为它会花费数据使用费用

     

您可以在同一here找到更多详细信息。

     

除了导致带宽浪费之外,这也有一定意义,因为移动设备在公共场所和家庭中使用,其中未经请求的声音来自随机网站可能是令人讨厌的

但是,在更高版本中,这个想法已经过时了, Chrome on Android 开始允许在其上自动播放 HTML音频视频 。在经过一系列评论和讨论之后,此功能再次还原,使用户操作在Android版Chrome浏览器上调用HTML音频和视频时必须

  

Here是我发现的更多内容。正如它所说,原因是“我们将收集一些关于用户如何对自动播放视频做出反应的数据,以决定是否保留此限制”。因此,没有用户操作的播放选项被还原。

     

您还可以在ForbesThe Verge上找到有关阻止音频和视频的_autoplay的更多信息。

但是,我可以建议你尝试一下,这将有助于你实现你想要的目标。您所要做的就是复制此代码并粘贴到 Chrome for Android 中。这有助于您重置默认设置为的标记,不允许在没有用户互动的情况下播放HTML音频和视频

  

chrome://flags/#disable-gesture-requirement-for-media-playback

     

OR

     

about:flags/#disable-gesture-requirement-for-media-playback

如果上述步骤对您没有帮助/帮助,您可以这样做:

  

进入chrome://flagsabout:flags(这将引导您chrome://flags)和启用“禁用媒体播放的手势要求”选项(这是实际上与上面指定的URL相同)。