Javascript 混合应用程序:Android上无法播放音频

Javascript 混合应用程序:Android上无法播放音频,javascript,android,angularjs,audio,monaca,Javascript,Android,Angularjs,Audio,Monaca,我正在使用Monaca.mobi构建一个混合应用程序。当我为IOS构建应用程序时,一切都很好;然而,当我为android设备(Nexus7)构建它时,音频确实会通过。在Monaca调试器中;但是,音频工作正常。安卓设备是否有我不知道的地方,可能是应用程序的一些权限 声音通过angularJS函数播放,该函数在某些按钮单击时调用。我知道这段代码是正确的,只是想和大家分享一下: function DontAsk($scope){ $scope.play = function(){ var a

我正在使用Monaca.mobi构建一个混合应用程序。当我为IOS构建应用程序时,一切都很好;然而,当我为android设备(Nexus7)构建它时,音频确实会通过。在Monaca调试器中;但是,音频工作正常。安卓设备是否有我不知道的地方,可能是应用程序的一些权限

声音通过angularJS函数播放,该函数在某些按钮单击时调用。我知道这段代码是正确的,只是想和大家分享一下:

function DontAsk($scope){
$scope.play = function(){
    var audio = new Audio();
        audio.src = 'sounds/DontEventAsk.mp3';
    audio.play();
}}

感谢您的帮助。

这里的大问题是Monaca.mobi应用程序内部使用什么浏览器?默认Android浏览器因不支持需要HTML5的音频等较新编解码器而臭名昭著。您最好设置某种标志,让应用程序可以观看,然后使用应用程序播放声音,而不是依赖浏览器。

您上面的代码仅适用于iOS。对于Android,无法识别本地音频文件的路径。以下代码适用于两个操作系统。我也已经用内置的应用程序进行了测试

$scope.play= function(){
    var os = navigator.platform;
    if (os=='iPhone'){
        var url = "sounds/DontEventAsk.mp3";
    }
    else{
        var url = getPhoneGapPath() + "sounds/DontEventAsk.mp3";
    }
    var my_media = new Media(url,
        // success callback
        function() {
            console.log("playAudio():Audio Success");
        },
        // error callback
        function(err) {
            console.log("playAudio():Audio Error: "+JSON.stringify(err));
    });

    // Play audio
    my_media.play();
}

嗨,我已经实现了这个,但它似乎只适用于iPhone。在Android中,调用该函数会在Monaca调试器中出现错误,这是正常的,因为getPhoneGapPath()未定义,我假设,但当应用程序构建时,不会发出声音。你能和我分享一下你成功的实现吗?谢谢,Ben就是一个函数的样子。我不认为这个功能有问题,因为它在iPhoneHi上也可以正常工作。我认为您可能忘记在您的答案中添加函数getPhoneGapPath(),因为它似乎不是内置函数。这是正确的功能:在玩过之后,我让它工作。不过还是要感谢这个伟大的学习过程。