2010-12-14 114 views
27

我在我的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("[email protected]!"); 
     var snd = new Media("test.wav"); 
     snd.play(); 
    } 
}); 

</script> 

声音不起作用。

回答

31

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

new Media(“/ android_asset/www/test.wav”);

这应该适用于Android。希望他们能够在PhoneGap中解决这个问题,因为这是跨设备支持中的一个错误。

+0

感谢您该位信息的。直到我看到路径时,我无法弄清楚为什么它不能工作。我正在写“/android_asset/polka.mp3”和类似的东西。 – wavyGravy 2011-09-22 06:04:03

+0

iPhone怎么办?有没有iphone_asset文件夹? – Mark 2012-06-06 00:15:16

+0

如果我使用手机差距构建,使它有所不同? – 2013-03-02 15:06:26

48

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

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

这在Android:

/android_asset/www/index.html

脱光/index.html,前置file://,并添加您的文件test.wav

演示:http://jsfiddle.net/ThinkingStiff/r7eay/

代码:

function getPhoneGapPath() { 

    var path = window.location.pathname; 
    path = path.substr(path, path.length - 10); 
    return 'file://' + path; 

}; 

var snd = new Media(getPhoneGapPath() + 'test.wav'); 
+1

谢谢你为此感谢! Phonegap 3.0刚刚发布,这在所有官方地方仍然没有记录。 – c0bra 2013-07-23 17:33:17

+2

这个答案结束了2天的痛苦。非常感谢。 – tomwoods 2014-03-05 00:53:27

+2

我尝试通过使用上面的getPhoneGapPath()函数来获取ios中的本地文件音频路径。但它仍然没有解决。请给我一个关于如何在ios中指定本地音频文件路径的想法。 – Sathiyaraj 2014-07-11 16:12:33

0

我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; 
};