마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AudioRecord를 이용한 녹음시 어플이 먹통이 되는 문제

0 추천

 

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는 서버로 음성 데이터를 전송하는 부분인데 저코드 지워도 그냥 읽기만하는데도 먹통이네요 

안드잘하고싶 (3,310 포인트) 님이 2016년 4월 1일 질문
안드잘하고싶님이 2016년 4월 1일 수정

1개의 답변

0 추천
 
채택된 답변
무한루프라 Thread 스케줄링에 문제가 있는 듯 합니다.

Thread.sleep(10) ; 같은것을 삽입해서 다른 Thread도 동작 되게 해 보세요.
사악미소 (65,330 포인트) 님이 2016년 4월 1일 답변
안드잘하고싶님이 2016년 4월 3일 채택됨
감사합니다 해결했습니다 ㅎㅎ
...