我正在使用 Android AudioRecord 库,试图让应用程序不断地从 audioBuffer 中读取数据。我认为要让我的应用程序正常工作,我需要更好地了解如何使用构造函数初始化缓冲区。
例如,如果我初始化一个新的 AudioRecord 对象:
recorder = new AudioRecord(AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, 2205000); //50 seconds worth
在应用程序中,我想在此处初始化的缓冲区中保存最后 50 秒的数据,但我想定期拉出最后 10 秒的数据(如果满足条件,则整个 50 秒)。
首先,据我了解,该recorder.read(short readData[...)
函数将部分内部缓冲区复制到我传入的数组中(?)。
我猜内部缓冲区是某种环形缓冲区,那么我怎么知道最后一个样本是什么?还是在我打电话时在内部处理recorder.read(short readData[1000],0,1000)
?这会给我最后 1000 个样本,前 1000 个样本吗?据我所知,第二个参数(偏移量)偏移了它在 readData 参数中写入的位置。
谢谢!