7

ルート化された MK809/Android 4.1.1 上のオーディオ キャプチャ アプリケーション。内部マイクがないので、接続時に設定/サウンド/サウンドデバイスマネージャー/サウンド入力デバイスで「USBオーディオデバイス」として正しく検出されるUSBマイクを使用しようとしています。

AudioRecord コンストラクター (最初の引数) に渡す、このデバイスの AudioSource 値は何ですか。MediaRecorder.AudioSource ですべてを試しましたが、どれも機能しませんでした。ファイルに保存するのではなく、キャプチャ バッファーを読み取ることにのみ関心があります。

4

2 に答える 2

6

私自身の質問に答えます。次の値はうまくいきました: DEFAULT、MIC、CAMCORDER、おそらくそれが唯一の入力デバイスであるため、他の値も同様です。

48000 のサンプル レート (Windows で動作) を使用しようとしましたが、AudioRecord の作成は次のエラーで失敗しました。

エラー/AudioRecord(1615): レコード ソース 1 のオーディオ入力を取得できませんでした エラー/AudioRecord-JNI(1615): AudioRecord インスタンスの作成中にエラーが発生しました: 初期化チェックに失敗しました。ERROR/AudioRecord-Java(1615): [ android.media.AudioRecord ] ネイティブ AudioRecord オブジェクトの初期化時のエラー コード -20。

同じ一連の引数を使用して getMinBufferSize() を呼び出しても、想定どおりにエラーが返されないことを考えると、やや誤解を招く情報です。デバイスの有効なサンプルレートだと思いました。44100 (保証) に設定すると、問題が修正されました。

USB オーディオ入力デバイスは、少なくとも Android、Jelly Bean で動作します。これが誰かに役立つことを願っています。

于 2013-01-12T21:40:07.557 に答える
5

FWIW、これは実装固有です (プラットフォーム ベンダーや OEM によって異なる場合があります)。

私が取り組んだデバイスでは、AudioSource がDEFAULTMICまたはの場合、USB アクセサリのマイクが選択されVOICE_RECOGNITION、USB オーディオ録音用のオーディオ HAL でサポートされているサンプル レートは 8、16、および 48 kHz のみでした (ただし、AudioFlinger は可能です)。特定の範囲内の他のレートにリサンプリングします)。

于 2013-01-12T22:38:07.710 に答える