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

jos*_*lvo 5 html audio android google-chrome

我有一个小的应用程序,播放顺序声音(教学应用程序播放一个单词的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();
}
Run Code Online (Sandbox Code Playgroud)

(资源)

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

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

Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.
Run Code Online (Sandbox Code Playgroud)

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

Zac*_*Zac 2

首先,Android 上的 Google Chrome一直存在限制,不允许应用程序在没有用户明确操作的情况下播放HTML 音频。然而,在大多数情况下,它与普通浏览器的处理方式不同。

正如Chromium Org所说,原因是Android 上不支持自动播放,因为它会消耗数据使用量

您可以在此处找到更多详细信息。

除了这会导致带宽浪费这一事实之外,这也是有一定道理的,因为移动设备是在公共场所和家庭中使用的,在这些地方,来自随机网站的未经请求的声音可能会造成滋扰

然而,在后来的版本中,这个想法被推翻了,Android 上的 Chrome开始允许自动播放HTML 音频视频。经过一系列审查和讨论后,此功能再次恢复到原来的状态,强制用户操作在 Android 版 Chrome 上调用 HTML 音频和视频

是我在同一方面发现的更多内容。正如其所说,原因是“我们将收集一些有关用户对自动播放视频的反应的数据,以便决定是否保留此限制”。因此,无需用户操作的播放选项就被恢复了。

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

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

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

或者

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

如果上述过程对您没有帮助/不起作用,您可以执行以下操作:

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