2010-12-14 3 views
27

.wavというファイルがあります。私は次のコードでjQueryを使用しています。アラートは消えますが、サウンドは再生されません。私は何か間違っているのですか?phonegapでローカルサウンドを再生する

<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

絶対ローカルパスを指定してください。例えば。

新しいメディア( "/ android_asset/www/test.wav");

Androidで動作するはずです。うまくいけば、彼らはPhoneGapでこれを修正するだろう。それはクロスデバイスサポートのバグのようなものだからだ。

+0

は情報のこのビットをありがとうございました。私はその道を見てしまうまで、それがなぜ機能していないのか理解できませんでした。私は "/android_asset/polka.mp3"と書いていました。 – wavyGravy

+0

iPhoneはどうですか? iphone_assetフォルダはありますか? – Mark

+0

私はPhone Gap Buildを使用するのは難しいですか? –

48

window.location.pathnameを使用すると、PhoneGapアプリでアプリケーションのパスを取得できます。そうすれば、Android用にハードコードする必要はありません。 Android上で

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

そして、この:それはiPhone上でこのようになります

/index.htmlオフ

/android_asset/www/index.html

ストリップ、先頭に追加file://、そしてあなたのファイルを追加test.wav

デモ:http://jsfiddle.net/ThinkingStiff/r7eay/

コード:you'rはAndroidの使用時に

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

+2

この回答は2日間の悲惨さに終わります。どうもありがとうございます。 – tomwoods

+2

私は上記のgetPhoneGapPath()関数を使って、iosのローカルファイルのオーディオパスを取得しようとしました。しかし、それでもうまくいきませんでした。 iosでローカルオーディオファイルのパスを指定する方法のアイデアを教えてください。 – Sathiyaraj

0

私はgetPhonegapPathの別のバージョンを持っている、それがの検出:

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; 
}; 
関連する問題