AudioRecordAndroidデバイスでオーディオを録音するために使用します。のインスタンスを作成するには、オーディオ データを格納するためにAudioRecordの固定サイズを設定する必要があります。buffer次に、これからbuffer継続的にデータを取得する必要があります。のサイズbufferが小さすぎてデータの取得が遅すぎると、bufferオーバーフローが発生します。
この例外を回避するために、サイズをbufferできるだけ大きく設定し、時間内にデータをフェッチしたいと考えています。オーディオ ハードウェアがサポートできる最小サイズを取得する方法を
AudioRecord提供します。しかし、これは の適切なサイズではなく最小サイズです。 getMinBufferSize(int,int,int)bufferbuffer
私の質問は、buffer?の適切なサイズを計算して設定する方法です。
これが私が使っているものですAudioRecord:
audioRecord = new AudioRecord(audio_source, sampleRate, audio_channel, audio_encoding, buffer_size);
new Thread(new Runnable{
while(true){ //Loop start
readSize = audioRecorder.read(readBuffer, 0, useReadBufferSize); // fetch data from buffer to readbuffer
// throw readbuffer data out, do this operation as qucik as possible, Avoid to block thread
// check if the AudioRecord stopped and break if true
}
}).start();