AudioRecord
Androidデバイスでオーディオを録音するために使用します。のインスタンスを作成するには、オーディオ データを格納するためにAudioRecord
の固定サイズを設定する必要があります。buffer
次に、これからbuffer
継続的にデータを取得する必要があります。のサイズbuffer
が小さすぎてデータの取得が遅すぎると、buffer
オーバーフローが発生します。
この例外を回避するために、サイズをbuffer
できるだけ大きく設定し、時間内にデータをフェッチしたいと考えています。オーディオ ハードウェアがサポートできる最小サイズを取得する方法を
AudioRecord
提供します。しかし、これは の適切なサイズではなく最小サイズです。 getMinBufferSize(int,int,int)
buffer
buffer
私の質問は、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();