我需要記錄並同時播放音頻和我使用的2個線程it.here幫助是代碼AudioRecorder在Android的錯誤無效的緩衝區大小
recorder = new AudioRecord(AudioSource.MIC, 8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize);
if (recorder.getState() == android.media.AudioRecord.STATE_INITIALIZED)
recorder.startRecording();
isRecording = true;
audioPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize,
AudioTrack.MODE_STREAM);
audioPlayer.play();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
readBytes = recorder.read(data, 0, bufferSize);
if (readBytes == AudioRecord.ERROR_INVALID_OPERATION)
System.out.println("ERROR_INVALID_OPERATION");
else if (readBytes == AudioRecord.ERROR_BAD_VALUE)
System.out.println("ERROR_BAD_VALUE");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (readBytes > 0)
audioPlayer.write(data, 0, readBytes);
}
}).start();
我得到的錯誤如下: 02-23 14:19:59.625:E/AudioTrack(1786):無效緩衝區大小:minFrameCount 2400,幀數又預先2048
由於
你是如何解決這個問題的。 – Samuel 2013-02-18 04:09:05
@Samuel請務必檢查評論其實完成了很長時間後..不確定其完全正確 – 2013-02-18 13:03:09
對不起,我想我沒有看清楚。可能你可以接受你自己的回答作爲答案。同時我設法自己解決它。 – Samuel 2013-02-19 04:14:30