4

私はこのようなものを使用してオーディオ録音を開始しています:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/dev/null");
recorder.prepare();
recorder.start();

常に内蔵マイクから録音したい。上記のコードを使用すると、外部マイクが接続されるとすぐにオーディオ ソースが外部マイクに切り替わります。ドキュメントを調べたところ、優先マイクを設定する方法が見つかりません。

4

1 に答える 1

2

残念ながら、あなたは Android のオーディオ管理に逆らおうとしています。これは、選択したオーディオ ソースに応じてシステムが入力デバイスを選択し、ヘッドセットが接続されている場合、MIC オーディオ ソースの入力がヘッドセットに切り替えられるということです。これは、logcat の AudioPolicyManager の関連メッセージをチェックすることで確認できます。

私の提案は、システムをだますためにさまざまなオーディオ ソースで遊ぶことです。CAMCORDERを使用することをお勧めします。少なくとも、VOICE_RECOGNITION または VOICE_COMMUNICATION を試してください。

CAMCORDER の主な問題は、デバイスの背面にあるマルチメディア マイクを使用できることです。より詳細には、次の手順をお勧めします。

  1. ACTION_HEADSET_PLUGインテントをリッスンします。
  2. インテントを受け取ったら、オーディオ ソースを CAMCORDER に切り替えてみます。
  3. CAMCORDER オーディオ ソースは、アクティブなカメラに応じて選択されるため、MediaRECorder のsetCameraを介して、フロント カメラ (およびフロント内部マイク) の使用を強制することができます。

お役に立てれば

于 2013-11-15T15:37:52.040 に答える