私はhtml5/JSアプリケーションを構築するためにCordovaを使用しています。ios9のコルドバ録音オーディオが動作しません
オーディオを録音して再生する必要があるので、Media &ファイルプラグインを使用しますが、iOSで動作させるには問題があります。
マイ手順:
1)
私はプラットフォーム(AndroidまたはiOS)を検出します。
Androidの場合、何も設定する必要はありませんが、動作します。
イオスが、私は(Raymond Camden articleを読んだ後) '../Library/NoCloud/' にファイルURIを設定した場合、
その後、私は録音する前に、ファイルを作成します。
var mediaBaseUrl = '';
if(app.isIOS){
mediaBaseUrl ='../Library/NoCloud/';
createFileSystem();
}
私のCreateFile関数であります:
createFileSystem : function(){
var fileName= mediaBaseUrl+[myFileName];
//asking for a new space
window.requestFileSystem(
LocalFileSystem.PERSISTENT,
0,
//success
function(fileSystem){
fileSystem.root.getFile(
fileName,
{ create: true, exclusive: false },
//success callback
function(){
console.log('ok file created');
},
null
);
},
// error
function() {
console.log("***log: failed in creating media file in requestFileSystem");
}
);
},
2)ファイルが作成されたら、私はメディアのコンストラクタで記録されたファイルを作成:
をvar recordedFile = new Media(
mediaBaseUrl + [myFileName],
// success callback
function() {},
// error callback
function (err) {
console.log("recorded file error ");
console.log(err)
}
);
3)設定XMLでは、私はクラウドで保存iOSのライブラリフォルダに記録するには、このラインを持っている、そして無:
<preference name="iosPersistentFileLocation" value="Library" />
<preference name="BackupWebStorage" value="none" />
私の問題:Androidデバイス上で
、すべての罰金です私はその後、オーディオファイルを聞くことができます。
しかし、iOSデバイス上(のipad2)、いくつかのものは奇妙です:私のファイル名 "../Library/NoCloud/myFileName" と
、私はfileSystem.root.getFile機能のための成功コールバックを持っていません、しかし私はファイルが空であることを除いて、私のipadライブラリ/ NoCloudフォルダ、の良い名前と良い場所でファイルを見ることができます。したがって、Mediaコンストラクタはファイルを再生できず、エラーを返します。
i「がmyFileName」としてmyFileNameを設定した場合、私は、ファイルの作成(「作成OKファイル」)のコールバックを持っていますが、メディアのコンストラクタは、ファイルにアクセスし、エラーを返すことができません。
message: "Cannot use audio file from resource 'test.wav'", code: 1
私はipadのマイクをチェックしました、このアプリのために有効になっています。私はそれがipadのiOSアップデート(今のiOS 9.3.2)の前に働いたと信じています。 私は間違っていたことがあるのですか、それとも新しい処理方法がありますか?
ありがとうございました!
あなたがcdvfileを含める必要が
後、私は混乱している
を次の - あなたがファイルを作成しない理由*前*録音?まったく逆のはずはありませんか? –
でも、私は混乱しています:)私は、プロセスについて考える方法が全く間違っていたと思います。私は、iOSが記録されたデータを "書き込む"前にファイルの場所を書き込む必要があると思っていました。しかし目に見えることにそうではありません。だから私は今理解している:システムがオーディオデータを記録した、私は私の記録データを保存するためにfileSystem関数を要求する必要がありますか?ありがとう! –
実際には、コードを書く前にいくつかの記事を読んでいます。たとえば、この記事のようにhttp://stackoverflow.com/questions/9241157/using-phonegap-to-record-audio-to-documents-folder-on-iosそれはメディアファイルの作成の前にファイル参照を作成すると言われています。すでに存在するsrcが必要です...そのため、私はそのコードを書いたのです... –