2010-12-14 157 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; 
};