我想从我的Android设备的麦克风中采样大约3秒的声音。我必须使用的采样率为48kHz,16位pcm编码。我使用以下代码:
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,而不是整个缓冲区。为什么呢?
我怎样才能做我想做的事?