【问题标题】:Hybrid App: Audio not playing on Android混合应用程序:音频无法在 Android 上播放
【发布时间】:2014-04-23 15:00:54
【问题描述】:

我正在使用 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();
}}

感谢您的任何见解。

【问题讨论】:

    标签: javascript android angularjs audio monaca


    【解决方案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();
    }
    

    【讨论】:

    • 嗨,我已经实现了这个,但它似乎仍然只适用于 iPhone。在 Android 中调用该函数会在 Monaca 调试器中出现错误,这是正常的,因为我假设 getPhoneGapPath() 是未定义的,但是在构建应用程序时没有声音出现。你能和我分享你成功的实施吗?谢谢,本
    • Here 是一个函数的样子。我不相信这个功能有问题,因为它在 iPhone 上运行良好
    • 嗨,再次。我认为您可能忘记在答案中添加函数 getPhoneGapPath() ,因为它似乎不是内置函数。这是正确的函数吗:stated in the answer to this question
    • 玩了之后,我让它工作了。不过感谢这个伟大的学习过程。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2014-09-19
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多