- PhoneGap Media API を使用し、iOS の場合は File API を使用してオーディオを録音するアプリがあります。
- ユーザーがAccept & Uploadボタンをクリックすると、アプリは PhoneGap の File.FileTransfer() メソッドを使用して、そのファイルをサーバーに移動します。
- iOS ではうまく機能しますが、Android ではあまり機能しません。
- Android デバイスをコンピューターに接続し、ドライブとしてマウントすると、ファイルが本来あるべき場所であるルートに作成されていることがわかります。
- オーディオ ファイルが作成された後、グローバル変数
fullRecordPath
に保存されている場所からデバイスでファイルを再生できます。recording.wav
- File.FileTransfer() をそのパスに向けようとすると、エラーコード = 1 が表示されますが、これはFile Not Foundであると理解しています
Accept & Uploadタップ イベントを処理するコード:
$('#btnAcceptUpload').live('tap',function () {
if(isIOS){
thisFileToUpload = fullRecordPath;
} else {
// thisFileToUpload = './'+fullRecordPath; //doesn't work
// thisFileToUpload = 'file:///'+fullRecordPath; //doesn't work
thisFileToUpload = fullRecordPath; //doesn't work
}
var options = new FileUploadOptions();
msg = '';
options.fileKey="file";
msg += "options.fileKey = "+options.fileKey+"\n";
options.fileName=thisFileToUpload.substr(thisFileToUpload.lastIndexOf('/')+1);
msg += "options.fileName = "+options.fileName+"\n";
options.mimeType='audio/wav';
options.chunkedMode = false;
msg += "options.mimeType = "+options.mimeType+"\n";
msg += "thisFileToUpload = "+thisFileToUpload;
alert(msg);
var ft = new FileTransfer();
ft.upload(thisFileToUpload, "http://10.0.17.121/~email/ttmovefiles.php", fileUploadSuccess, fileUploadFailure, options);
});
成功のコールバック:
function fileUploadSuccess(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
alert(r.response);
}
失敗のコールバック:
function fileUploadFailure(error){
alert("An error has occurred: Code = " + error.code);
}
ご覧いただきありがとうございます。