在 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://flags
或about: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 上不起作用