2017-08-09 11 views
13

Ionicを使用しています。オーディオをファイルに記録してからファイルで何かしたいと思います。上で実行Ionic cordovaメディアレコードのユーザーオーディオが機能しません。

await this.file.createFile(this.getFileDirectory(), this.getFileName(), true); 

それは準備ができているとき、私は新しいMediaインスタンスを作成します:

this.currentRecording = this.media.create(this.getFilePath()); 

は、成功を取り付けギャラクシーS4

だから最初、私は、ファイルを作成しますエラーリスナー:

this.currentRecording.onSuccess.subscribe((e) => { 
    console.log(this.currentRecording.getDuration()); 
    this.file.readAsArrayBuffer(this.getFileDirectory(), this.getFileName()) 
      .then(file => console.warn(file)) 
}); 
this.currentRecording.onError.subscribe((err) => console.error(err)); 

それから私は録画開始:数秒後 this.currentRecording.startRecord();

を、私はthis.currentRecording.stopRecord()、録音を停止し、成功コールバックが実行されます。コンソールで

、私は今

-1 //はconsole.log(this.currentRecording.getDurationを())を参照してください。

ArrayBuffer {} // console.warn(file);

私は何か間違っていますか?どのように成功に至りましたが、ファイルはなく、期間はありませんでしたか?

編集

再生リポジトリ:https://github.com/AmitMY/ionic-media-record-repro

READMEは完全な手順

+0

1)このプラグインを使用していますか? https://ionicframework.com/docs/native/media/ 2)携帯端末でコードを試していますか? – saperlipopette

+0

正しいです、それはプラグインです。私はAndroidデバイスで動作しています – Amit

+0

TSコンポーネントのエントリーコードを入れてもらえますか? 'this.getFileName()'のようないくつかのメソッドがありますが、目的を理解していません。 – saperlipopette

答えて

0

@Amitを持って、私はあなたのレポをクローニングして、あなたがやったのと同じ結果を得ました。私はしばらくそれを手にしていましたが、間違いなくメディアプラグインで奇妙なことが起こりました。 getDuration()と同様に、いくつかの機能を追加し、いくつかの悪い振る舞いを修正するためのプルリクエストを送信しようとします。

は、getDuration()関数は、期間何であったかのプラグインのネイティブ一部を尋ねていない、それはJavaScriptで保存された値を返し、ネイティブコードがメッセージを送信するときに、この値が更新されるだけ判明します。 したがって、新しい現在の期間の値は取得されません。 プラグインを変更して、cordova exec()を使用してネイティブコードの継続時間を取得することができます。

ファイルについて、私はファイルプラグインを使用し始めましたが、それを打ち消してしまいました。 メディアプラグインでのみ試し、ファイル名のみを渡し、パスは使用しません。このファイルは/storage/emulated/0/file.3gpに格納されています。 これは記録され、内容を持ち、再生可能でした。私の推測では、ファイルプラグインを使用し、完全なパス文字列を渡すと、ファイルを作成する必要があります。しかし、あなたがメディアプラグインに同じパスを渡すと、私はそれを使用したときにファイルが割り当てられたが、レコーディング後に0バイトが残っていたが、それでも私はレコーディングを再生できたので、 else。

メディアプラグインを単独で使用しても、私の場合のように問題は解決します。そうでない場合でも、これを継続したいと思っている場合は、アンドロイドスタジオでアンドロイドモニタを使用してネイティブメッセージを監視し、プラグインのコードを確認することをお勧めします。これが、私が論文のことを知った方法です。

希望します。

+1

ネイティブもありがとう!代わりに 'cordova-plugin-audioinput'を使用しました。これはうまくいくようです。 – Amit

関連する問題