我在使用有类AudioRecord一些问题。 我想存储在缓冲区中记录的数据,但我不知道什么是实现这一正确的方法。 我经历的例子大量去,但其中大多数是comlicated和代表许多不同的方法。 我在找一个简单或简单的解释。
这里是我的项目我的音频设置:
int audioSource = AudioSource.MIC;
int sampleRateInHz = 8000;
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
short[] buffer = new short[bufferSizeInBytes];
AudioRecord audioRecorder = new AudioRecord(audioSource,
sampleRateInHz,
channelConfig,
audioFormat,
bufferSizeInBytes);
我试图创建一个录音功能:
public void Recording() {
audioRecorder.startRecording();
...
audioRecorder.stop();
audioRecorder.release();
}
我知道我” M应该使用.read(短[] audioData,INT offsetInShorts,INT sizeInShorts)函数。 在这里,我的问题开始。 我不知道如何audioData缓冲区的工作 - 我认为函数将记录样品到audioData。 如果完全充满的数据会发生什么? 它开始从最早的位置重写? 如果是这样,我相信我有somwhere否则复制所有收集到的样本。 这引发了另一个问题 - 我该如何检查是否.read(...)函数缓冲区已满? 我需要测量的时间和复制缓冲区的内容或有另一种方式来达到呢? 此外,我需要创建整个记录操作的线程?
对不起,问这么多问题一个主题:)