PhoneGap (Cordova 2.2.0) で一種のメディア プレーヤーを開発し、Adobe のPhonegap Buildを他のプラットフォームに使用したいと考えています。これは、ほとんどすべてが相対的でなければならないことを意味します;) 私のアプリの開発は Android 2.3 (最小ターゲット) です。
これが私の問題です:
ファイルへのパスは、ネットからの場合 ( http://...
)、または以下に示すように明確なパスが指定されている場合( ) に適切に機能します/android_asset/www/media/song.mp3
。ただし、相対的に実行しようとすると ( media/song.mp3
)、曲の再生が開始されず、エラー コードが表示されます。
MediaPlayer: エラー (1、-2147483648)
もう一度再生を押すと、さらにいくつかのエラーが表示されます。
MediaPlayer: 状態 0 で呼び出された開始 //ファイルがないことを意味します
MediaPlayer: エラー (-38, 0)
MediaPlayer: エラー (-38,0)
以下を必要とせずに、相対的に機能させる方法はありますか?
if(Android){
src=...
}
if(iOS){
src=...;
}...
上記のオプションは時間がかかり、いずれかのプラットフォームのパスが変更されるとエラーが発生しやすくなります。
縮小された Javascript コードは次のとおりです。
var song;
var app = {
initialize : function() {
this.bindEvents();
},
bindEvents : function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady : function() {
app.receivedEvent('deviceready');
song = new Media("/android_asset/www/media/song.mp3");
console.log("The song is: " + (song.mediaStatus!=0?"okay":"none"));
$('#play').click(function() {
song.play();
console.log("Song started");
});
$('#pause').click(function() {
song.pause();
console.log("Song paused");
});
$('#stop').click(function() {
song.stop();
console.log("Song stopped");
});
},
receivedEvent : function(id) {
console.log('Received Event: ' + id);
}
};
さらに何か言う必要がある場合は、教えてください。