Здесь я пытаюсь записывать и воспроизводить голос за раз, он работает нормально в течение нескольких секунд и принудительно закрывает показ ошибки при записи буфера в аудиотрек (m_track.write (буфер, 0, BUF_SIZE);). Проверьте приведенный ниже код и предположите, что я инициализирую объект аудиодорожки правильно.Ошибка записи звукового сигнала и воспроизведения шлейфа, проблема при записи данных в audiotrack
int SAMPLE_RATE = 8000;
int BUF_SIZE = 1024;
byte[] buffer = new byte[BUF_SIZE];
function()
{
try
{
buffersize = AudioRecord
.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
} catch (Throwable t) {
Log.e("Audio", "Buffer size failed");
}
if (buffersize <= BUF_SIZE) {
buffersize = BUF_SIZE;
}
try {
m_record = new AudioRecord(MediaRecorder.AudioSource.MIC,
SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffersize * 2);
m_track = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffersize * 2,
AudioTrack.MODE_STREAM);
m_track.setPlaybackRate(SAMPLE_RATE);
} catch (Throwable t) {
Log.e("Audio", "Audio Failed");
}
m_record.startRecording();
m_track.play();
try {
m_thread = new Runnable() {
public void run() {
while (m_isRun) {
m_record.read(buffer, 0, BUF_SIZE);
m_track.write(buffer, 0, BUF_SIZE);
}
}
};
m_thread.run();
} catch (Exception e) {
Log.e("ERROR", "exception: " + e.getLocalizedMessage());
}
Log.i("D2Record", "loopback exit");
}
Как вы решили эту проблему? Я также получаю ту же самую проблему ... plz help http://stackoverflow.com/questions/9413998/live-audio-recording-and-playing-in-android-and-thread-callback-handling – aProgrammer