1. AudioRecord recordInstance;

recordInstance = new AudioRecord(

MediaRecorder.AudioSource.MIC, this.getFrequency(), this

.getChannelConfiguration(), this.getAudioEncoding(),

bufferSize);


2. MediaRecorder mRecorder = null;

mRecorder = new MediaRecorder();

mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mRecorder.setOutputFile(Path);


1번과 2번을 보시면 똑같이 오디오소스를 사용하고 있습니다.


제 어플에서 1번을 쓰레드를 이용해서 어플 실행되는 동안 계속 실행하게 만들고

2번을 선택사항으로 만들어서 선택시 쓰래드를 이용하여 2번을 이용하여 녹음을 하려고 합니다.


그런데 여기서 문제는 1번이 실행되고 있는 상태에서 2번을 실행 시키면 어플이 오류로 종료 되어 버립니다.


다시말하면 1번 과 2번을 각각의 어플로 만들어서 실행 시키면 문제가 없지만 1번과 2번을 하나의 어플에 넣어서 

1번이 실행되고 있는 동안에(쓰레드 사용) 2번을 실행시키면(쓰레드 사용) 어플이 오류로 강제로 죽어 버립니다.  


제가 볼때는 1번과 2번에서 오디오소스부분이 겹쳐서 하나의 마이크를 두개의 자원이 동시에 접근하려다 보니 

생기는 문제 같은데 이분을 어떻게 해결해야 할까요?


1번은 어플 실행부터 쓰레드로 어플이 종료될때까지 무조건 계속 실행되어야 합니다.

그럼 2번에서 수정을 해야 하는데 녹음을 하는데 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)

이부분을 어떻게 수정해서 1번이 실행되는 상태에서 2번이 실행되도 오류가 뜨지 않도록 할수 없을까요? 

이번에 안드로이드 어플을 개발한 안드로이드개발자이고싶다 입니다.


잘부탁합니다