首页 文章

音频无法在Android上使用phonegap播放,但在iOS上运行正常

提问于
浏览
6

It works fine on iOS.

我看了很多答案,包括这两个:

Play sound on Phonegap app for Android

HTML5 audio not playing in PhoneGap App (Possible to use Media?)

我尝试了所有的解决方案:

  • 将路径更改为 /android_asset/www/ for Android

  • 使用.ogg文件

  • 使用播放()/暂停()预加载音频 .

  • 使用Cordova / Phonegap提供的Media插件

这是我目前的代码:

if(device.platform === "Android")   //DIFFERENT PATH FOR ANDROID
{
    url = "/android_asset/www/sound.ogg";
}else{
    url = "sound.mp3";
}
alert(url);
sound = new Media(url);
sound.play();

有人有想法?感觉就像我一直绕圈子一样

3 回答

  • 1

    我有类似的,这个解决方案适合我使用 window.location.pathname 获取应用程序的完整路径,这样你不需要担心设备类型,它会给你完整的路径,包括 index.html ,并通过使用下面的功能简单地剥离 index.html 从字符串并附加您的媒体文件 .

    function getPhoneGapPath() {
    
    var path = window.location.pathname;
    path = path.substr( path, path.length - 10 ); //strip off index.html
    return 'file://' + path;
    
    };
    

    然后

    url = getPhoneGapPath()+'sound.ogg';  //OR MP3 
    
    alert(url);
    sound = new Media(url);
    sound.play();
    

    希望这可以帮助

  • 2

    这给Android带来了很多麻烦,但我终于解决了 . 您可以在此处找到所描述的解决方案:Solution

  • 0

    我终于成功了!

    我首先使用上面的@Sarim Sidd帮助找到完整的Android路径然后预加载音频文件来初始化音频文件:

    //INITIALISE SOUND
    if(device.platform === "Android")   //DIFFERENT PATH FOR ANDROID
    {
        //navigator.notification.beep(1);
        var path = window.location.pathname;
        path = path.substr( path, path.length - 10 ); //strip off index.html
        url = 'file://'+path+"sound.ogg";
    }else{
        url = "sound.mp3";
    }
    //sound = new Media(url);
    sound = new Media(url);
    sound.play();
    sound.pause();
    

    然后,当播放音频时,我在调用播放方法之前将音量强制为满(1.0) . 出于某种原因,我注意到每次启动应用程序时音频都会重置为静音:

    //PLAY BELL SOUND THROUGH APP
    sound.setVolume(1.0);
    sound.play();
    

相关问题