.wav
ファイルをwww
フォルダに入れます。次のコードで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>
音が出ない。
絶対ローカルパスを指定してください。例えば。
新しいメディア( "/Android_asset/www/test.wav");
Androidで動作するはずです。うまくいけば、クロスデバイスサポートのバグのようなものとして、PhoneGapでこれを修正するでしょう。
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' );
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;
};