音频元素拒绝触发“播放”事件

Audio element refuses to fire "play" event on Android

本文关键字:播放 事件 元素 拒绝 音频      更新时间:2023-09-26

我正在开发一个从服务器播放mp3的webview应用程序。

我有以下javascript在iOS上工作,但在Android上失败(在新的LG-D160上测试,Android 4.4.2)。

在Android上,"play"事件永远不会被触发,尽管"canplay"事件确实会被触发,并且音频应该通过"canplay"事件中的AudioEl1的play()方法开始播放。

我应该采取哪些额外步骤才能让它在Android上运行?

下面是PlayAudio()函数:
function PlayAudio()
{    
    var AudioEl1 = new Audio();
    AudioEl1.addEventListener('loadedmetadata', function () {
        alert("loadedmetadata");
    });
    AudioEl1.addEventListener("canplay", function () {
        alert("going to play");
        AudioEl1.play();
    });
    AudioEl1.addEventListener("durationchange", function () {
        alert("durationchange");
    });
    AudioEl1.addEventListener("loadeddata", function () {
        alert("loadeddata");
    });
    AudioEl1.addEventListener("progress", function () {
        alert("progress");
    });
    AudioEl1.addEventListener('loadstart', function () {
        alert("started loading");
    });
    AudioEl1.addEventListener('play', function () {
        alert("playing");                                                                      
    });
    AudioEl1.src = "http://streams.greenhost.nl/cz/cz/rod/20140815-1600.mp3";
}        

似乎Android不允许程序员触发play事件。它应该是用户发起的。所以我不得不等待用户点击按钮。至少我是这么解决的。