Androidデバイスのマイクから約3秒の音をサンプリングしたいと思います。私が使用しなければならないサンプリングレートは、16ビットpcmエンコーディングで48kHzです。私は次のコードを使用します:
AudioRecord recorder = new AudioRecord(AudioSource.MIC, 48000, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize);
if (recorder.getRecordingState() == android.media.AudioRecord.RECORDSTATE_STOPPED)
recorder.startRecording();
recorder.read(dataBuffer, 0, bufferSize);
ここで、AudioRecord.getMinBufferSizeを使用せずにAudioRecorderコンストラクターに大きなバッファーサイズを指定すると、問題が解決すると思いました。(48000 * 3 = 144400サンプル)ただし、read()メソッドは、バッファー全体ではなく、位置4096までのみバッファーを満たします。なんで?
どうすればやりたいことができますか?