public class AudioBuffer extends Thread{
private static final int frequency = 8000;
private static final int channel = AudioFormat.CHANNEL_IN_MONO;
private static final int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
private AudioRecord mrecordInstance;
private int Recordbuffersize;
private boolean isRecording = false;
선언부 입니다.
초기화 해주는 부분입니다.
Recordbuffersize=AudioRecord.getMinBufferSize(frequency, channel, audioEncoding);
sv=(SendVoice)activity;
mrecordInstance = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, frequency,channel, audioEncoding, Recordbuffersize);
이렇게 만든 AudioRecord객체를 사용해서 run()을 해주면
안에 코드에
mrecordInstance.startRecording();
isRecording = true;
byte micAudio[] = new byte[Recordbuffersize];
int read = 0;
while(isRecording){
read = mrecordInstance.read(micAudio, 0, micAudio.length);
sv.SendVoice(micAudio);
}
이게 run()의 코드인데 while문 저부분이 문제인것같습니다.
저while문이 실행 되어버리면 안에 내용은 계속해서 실행이 되는데 어플이 먹통이 되어버려서 강제로 끄는수밖에 없습니다.
어떻게 해야되나요?
SendVoice는 서버로 음성 데이터를 전송하는 부분인데 저코드 지워도 그냥 읽기만하는데도 먹통이네요