Android 在phonegap中播放本地声音

Android 在phonegap中播放本地声音,android,jquery,ios,cordova,Android,Jquery,Ios,Cordova,我的www文件夹中有一个.wav文件。我将jQuery与以下代码一起使用。警报会熄灭,但声音不会播放。我做错什么了吗 <script type="text/javascript" charset="utf-8" src="phonegap-0.9.2.js"></script> <script type="text/javascript" charset="utf-8" src="jquery.js"></script> <scrip

我的
www
文件夹中有一个
.wav
文件。我将jQuery与以下代码一起使用。警报会熄灭,但声音不会播放。我做错什么了吗

<script type="text/javascript" charset="utf-8" src="phonegap-0.9.2.js"></script> 
<script type="text/javascript" charset="utf-8" src="jquery.js"></script> 


<script type="text/javascript" charset="utf-8">

$(document).ready(function () {
    window.alert("READY!");
    document.addEventListener("deviceready", onDeviceReady, true);

    function onDeviceReady(){
        window.alert("OK@!");
        var snd = new Media("test.wav");
        snd.play();
    }
});

</script> 

$(文档).ready(函数(){
窗口。警报(“准备就绪!”);
文件。添加的监听器(“deviceready”,onDeviceReady,true);
函数ondevicerady(){
window.alert(“OK@!”);
var snd=新媒体(“test.wav”);
snd.play();
}
});

声音无法播放。

尝试给出一个绝对本地路径。例如

新媒体(“/android_asset/www/test.wav”)


这在安卓系统上应该行得通。希望他们能在PhoneGap中解决这个问题,因为这是跨设备支持中的一个bug。

您可以使用
window.location.pathname
在任何PhoneGap应用程序中获取应用程序的路径。这样你就不必为Android硬编码了。它在iPhone上看起来像这样:

/var/mobile/Applications/{GUID}/{appname}.app/www/index.html

在Android上:

/android_资产/www/index.html

去掉
/index.html
,在
文件前面加上前缀://
,然后附加文件
test.wav

演示:

代码:

函数getPhoneGapPath(){ var path=window.location.pathname; path=path.substr(path,path.length-10); 返回'file://'+路径; }; var snd=新媒体(getPhoneGapPath()+'test.wav');
我有另一个版本的getPhonegapPath,它可以在您使用Android时检测到:

function getPhoneGapPath() {
   var path = window.location.pathname;
   path = path.substr( path, path.length - 10 );
   var devicePlatform = device.platform;
   if(devicePlatform=="Android"){
    path = 'file://'+path;
   }
   return path;
};

谢谢你提供的这些信息。直到我看到那条路,我才明白为什么它不起作用。我在写“/android_asset/polka.mp3”之类的东西。iPhone呢?有iphone_资产文件夹吗?如果我使用Phone Gap Build,它会成为一个difrence?谢谢,谢谢!PhoneGap3.0刚刚发布,但在所有官方网站上都没有记录。这个答案结束了两天的痛苦。非常感谢。我尝试使用上面的getPhoneGapPath()函数在ios中获取本地文件音频路径。但仍然没有成功。请告诉我如何在ios中指定本地音频文件路径。当使用
phonegap-service
而不是在本地安装应用程序时,有没有办法让本地声音文件工作?@Sathiyaraj如果从非“index.html”的文件调用,获取路径的函数将无法工作,因此您必须裁剪10个以上或以下的文件返回的路径中的字符。尝试以下操作:
//获取设备上的绝对文件路径。函数getPhoneGapPath(){var path=window.location.pathname;var sizefilename=path.length-(path.lastIndexOf(“/”)+1);path=path.substr(path,path.length-sizefilename);返回path;}