混合应用:音频无法在Android上播放

时间:2014-04-23 15:00:54

标签: javascript android angularjs audio monaca

我正在使用Monaca.mobi构建混合应用程序。当我为IOS构建应用程序时,一切都很好;然而,当我为Android设备(Nexus 7)构建它时,音频确实会通过。在Monaca调试器中;但是,音频工作正常。有没有关于Android设备的东西,我不知道,也许应用程序的一些权限?

通过某些按钮点击调用的angularJS函数播放声音。我知道这段代码是正确的,只是想我可能会分享它:

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

感谢您的任何见解。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您的上述代码仅适用于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();
}