Я пытаюсь записать звук с микрофона, а затем воспроизвести его, но все, что я здесь, это щелкающий звук. И AudioTrack, и AudioRecord имеют одинаковые настройки и правильно инициализированы. Вот мой код:
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isRecording = false;
recordingThread.join();
player = findAudioTrack();
player.play();
for (int i = 0; i < audioQueue.size(); i++) {
int written = player.write(audioQueue.get(i), 0,
audioQueue.get(i).length);
}
player.stop();
player.release();
player = null;
}
});
}
private void startRecording() {
recorder = findAudioRecord();
recorder.startRecording();
isRecording = true;
recordingThread = new Thread(new Runnable() {
public void run() {
addAudioToQueue();
}
}, "AudioRecorder Thread");
recordingThread.start();
}
private void addAudioToQueue() {
short[] capturedAudio = new short[recordBufferSize/2];
while (isRecording) {
int read = recorder.read(capturedAudio, 0, capturedAudio.length);
audioQueue.add(capturedAudio);
}
recorder.stop();
recorder.release();
recorder = null;
}
}
Кто-нибудь знает, почему это так?
Вот полный исходный код: https://www.dropbox.com/s/h38cs9vjkztyyro/AudioTesting.java