Android 在数据连接时检测移动chrome上HTML音频的播放

Android 在数据连接时检测移动chrome上HTML音频的播放,android,html,google-chrome,events,audio,Android,Html,Google Chrome,Events,Audio,我创建了一个使用音频文件作为音效和背景音乐的小型web应用程序,我注意到当我在Wifi连接下在chrome上运行它时,它工作得非常好,但当我切换到数据时,一些事件根本不会及时触发。。。他们最终会开火,但在一些交互或调用“play”方法之后 我观看的事件 loadstart 悬 持续时间改变 加载元数据 加载数据 能玩 canplaythrough 在Wifi上,他们会按顺序立即开火 然而,在数据连接上,前两个启动,然后什么也不会发生,直到我在路上调用“播放”。在这之后,正常事件被触发,除了我注意

我创建了一个使用音频文件作为音效和背景音乐的小型web应用程序,我注意到当我在Wifi连接下在chrome上运行它时,它工作得非常好,但当我切换到数据时,一些事件根本不会及时触发。。。他们最终会开火,但在一些交互或调用“play”方法之后

我观看的事件

loadstart
悬
持续时间改变
加载元数据
加载数据
能玩
canplaythrough

在Wifi上,他们会按顺序立即开火

然而,在数据连接上,前两个启动,然后什么也不会发生,直到我在路上调用“播放”。在这之后,正常事件被触发,除了我注意到暂停仅对数据触发之外

这是预期的行为吗


我的问题是,在移动数据连接中,我如何检测“canplaythrough”或“canplay”甚至“loadeddata”呢?

显然,当连接到数据时,Android会阻止音乐和视频的自动播放canplaythrough需要预加载音频,或者至少预加载元数据,因为元数据被阻止

如果仅加载元数据,
canplaythrough
将不会触发。来自MDN:当用户代理可以播放媒体时,会触发
canplaythrough
事件,并估计已经加载了足够的数据来播放媒体直到结束,而无需停止以进一步缓冲内容。这个问题很老,我不知道它是否发生了更改,但如果您的手机使用数据,即使是巫术也无法让它负载播放。
let v = new Audio();
v.preload = "auto";
v.src = "some mp3 file";