在 android 的 google chrome 上按顺序播放声音(考虑到播放声音的新限制)

Posted

技术标签:

【中文标题】在 android 的 google chrome 上按顺序播放声音(考虑到播放声音的新限制)【英文标题】:Playing sounds sequentially on android's google chrome (given the new restrictions on playing sound) 【发布时间】:2018-04-19 00:09:34 【问题描述】:

我有一个播放顺序声音的小应用程序(一个播放单词音节的教学应用程序)

这可以通过在每个声音停止播放后立即触发一个事件来实现。比如:

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 对如何播放声音实施了一些新限制:声音事件必须全部由用户操作触发。

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

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

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

【问题讨论】:

我的 Google Chrome 版本是 62.0.3202.94...我使用了您的代码,它非常适合我... 可以分享一下浏览器版本和其他细节吗?注意:最近谷歌宣布将阻止自动播放视频。检查theverge.com/2017/9/15/16311310/… 【参考方案1】:

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

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

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

除了会导致带宽浪费之外,这也是有一定道理的,因为移动设备用于公共场所和家庭,不请自来的声音来自这些地方随机网站可能会造成麻烦

然而,在后来的版本中,这个想法被推翻了,Android 上的 Chrome 开始允许在其上自动播放 html 音频视频 .在经过一系列审查和讨论后,该功能恢复到原来的样子,用户必须在 Chrome for Android 上调用 HTML 音频和视频 .

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

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

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

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

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

如果上述过程对您没有帮助/工作,您可以这样做:

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

【讨论】:

设置标志似乎是为特定用户解决问题的一种方法,但网页设计师似乎无法为他们的用户设置标志,对吧? 不,他不能。此操作将由每个用户在他/她的手机上手动完成。原因是我已经列出的: 1.避免浪费带宽。 2. 避免从随机网站播放未经请求的/无意的声音。

以上是关于在 android 的 google chrome 上按顺序播放声音(考虑到播放声音的新限制)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Android 设备在 google chrome 中打开 URL

Android Chrome Webview 无法访问 Google Pay

正则表达式验证不适用于 Google Chrome Android 应用程序,但适用于 Chrome 浏览器 - PC

navigator.geolocation.getCurrentPosition 在 android google chrome 上不起作用

HTML 5 自动播放 Google Chrome Android 未播放

用于 Android 远程调试的 Google Chrome -“localhost:9222”不可用