3

しかし、私のアプリはマイクからサムスンギャラクシーS 2で録音できませんでした、それはマイクから他の電話で録音しています。

Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

私のコードでは、ソースタイプを0〜4から選択し、エンコーダタイプをamr-nb、amr-wb、aac、またはdefaultとして選択し、出力フォーマットタイプを.3gp、.mp4、または.amrとして選択し、オーディオチャネルも選択します。 1または2として。私はアップしているすべての組み合わせを試します。組み合わせの少なくとも1つは、多くの電話で機能します。しかし、それらのどれもサムスンギャラクシーS2で動作することができませんでした。それはファイルを記録し、記録の期間は真実ですが、声は沈黙だけです!

この問題に関するWebでの調査では、マイクの種類に由来する可能性があることがわかりました。私のコードでは、オーディオソースの種類をデフォルト、マイク、音声ダウンリンク、音声アップリンク、音声通話として選択していますが、機能しませんでした。次に、MediaRecorder.AudioSource.MICなどの代わりに0、1、2、3、4でオーディオソースタイプをハードに設定しました。しかし、それも機能しませんでした...

4

1 に答える 1

1

S2で、アプリがマイクをロックして解放しないという問題が発生しました。特に、アプリをアンインストールする(そして再インストールする)ときにマイクをロックして解放するという迅速な開発サイクルを行っている場合はなおさらです。新しいバージョン)。しばらくするとロックが解除されることもありますが、マイクが使用可能であることを確認する確実な方法は、試行に失敗した後に電話を再起動することです。

AudioRecordオブジェクトの次の設定を使用してオーディオを録音することができました。

int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
  MediaRecorder.AudioSource.MIC,               //audio source
  16000,                                       //16kHz sample rate
  AudioFormat.CHANNEL_IN_MONO,                 //channel
  AudioFormat.ENCODING_PCM_16BIT,              //encoding
  buffer_size );                               //buffer size
于 2011-10-19T16:11:41.817 に答える