0

phoneGapを使用してサンプルオーディオを録音しようとしていますが、成功しません。

ドキュメントによると、私が行うことは非常に簡単です。

<script>
var media = null;

function record(){
   media = new Media("audio.wav");
   media.startRecord();
}
</script>

「audio.wav」は私の「www」フォルダにあり、空のwavファイルです。このコードブロックが実行されるたびに、次のコンソールエラーが発生します。

 - ERROR: Method 'create:withDict:' not defined in Plugin 'Media'

 - FAILED pluginJSON = {"className":"Media","methodName":"create","arguments":["INVALID","952d1fe0-5ec7-5e48-d68a-74cc979878b5","audio.wav"]}

そのエラーがあっても、録音は続くと思われます。しかし、録音を再生しようとすると、デバッガーでメディアオブジェクトを見ると、「_ duration:-1」が表示されます。

実際のiPhoneデバイスでアプリケーションをデバッグしようとすると、別のエラーが表示されます。

4

2 に答える 2

1

実際、問題は、あなたが描いたようにルートディレクトリにファイルを正しく作成したにもかかわらず、URIを取得したにもかかわらず、後でアクセスできないことでした(ファイルが何らかの理由で見つかりませんでした。同じディレクトリにファイルがあります) 1秒前に作成されました!!!!)。だから私は(簡単な方法ではありませんが..)経由でアクセスする必要があることを知りました"documents://"。したがって、新しいメディアを作成するときは、次のようなことを行います。

var mediaFile = new Media ("documents://"+audioFileName).

もし私が「var mediaFile = new Media(fileURI_I_Just_Created)ファイルが存在しないと言うでしょう!!!!(phoneGapが大好きです!)

于 2012-05-28T07:26:42.003 に答える
0

wwwフォルダではなく、ルートディレクトリに空のwavファイルを作成する必要があります。ルートディレクトリのURIを取得する方法の1つは、メソッドtoURI()を使用することです。

URIは次のようになります。

file:///data/some/com.stack.overflow/

以下は、ルートディレクトリに空のwavファイルを作成する方法の例です。

function onDeviceReady() {
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
  fileSystem.root.getFile("blank.wav", {create: true, exclusive: false}, gotFileEntry, fail);
}

ノート:

create: Used to indicate that the file or directory should be created, if it does not exist. (boolean)
exclusive: By itself, exclusive has no effect. Used with create, it causes the file or directory creation to fail if the target path

もう存在している。(ブール値)

于 2012-05-27T05:26:59.393 に答える