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

AudioRecord 초기화 오류 질문드립니다.

0 추천
for(int rate : new int[] {8000, 11025, 16000, 22050, 44100}) {
    for(short channelConfig : new Short[] {AudioFormat.CHANNEL_IN_MONO, AudioFormat.CHANNEL_IN_STEREO}) {
        for(short audioFormat : new Short[] {AudioFormat.ENCODING_PCM_8BIT, AudioFormat.ENCODING_PCM_16BIT, AudioFormat.ENCODING_PCM_FLOAT}) {
            try {
                Log.d(TAG, "Attempting rate " + rate + "Hz, bits: " + audioFormat + ", channel: "
                        + channelConfig);
                int bufferSize = AudioRecord.getMinBufferSize(rate,
                        channelConfig,
                        audioFormat);
                Log.d(TAG,"buffer size : " + bufferSize + " ERROR_BAD_VALUE : " + AudioRecord.ERROR_BAD_VALUE);
                if(bufferSize != AudioRecord.ERROR_BAD_VALUE) {
                    AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, rate, channelConfig, audioFormat, bufferSize);
                    Log.d(TAG,"getState : " + recorder.getState());
                    if(recorder.getState() == AudioRecord.STATE_INITIALIZED) {
                        Log.d(TAG, "성공");
                        break;
                    }
                }
            }catch(IllegalArgumentException e) { Log.d(TAG,"ERROR"); }
        }
    }

 

위와같이 안드로이드 디베롭퍼에서 요구하는 생성자 인자를 전부 넣어서 돌려봤는데

전부 getState() 값이 0으로 나오네요.. AudioRecord의 첫번째 인자에도 MIC, DEFAULT 등을

넣어줬었는데 잘 안되네요. 아래는 오류 메시지 입니다.

 

05-07 18:45:09.731 12237-12720/com.example.joe.audiotest E/AudioRecord: AudioFlinger could not create record track, status: -1
05-07 18:45:09.751 12237-12720/com.example.joe.audiotest E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
05-07 18:45:09.751 12237-12720/com.example.joe.audiotest E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.

 

어떤 오류일까요..? 답변 부탁드립니다 ㅠㅠ

p.s 퍼미션도 열어 줬습니다.

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
배쟁 (760 포인트) 님이 2017년 5월 7일 질문

1개의 답변

+1 추천
 
채택된 답변
코드는 문제 없을 듯 하고,

마쉬멜로 이상 단말이라면 runtime permission 를 주셔보는게 좋을 듯 하며,  http://gun0912.tistory.com/55

아니라면 AudioRecord핸들이 많이 열려 더이상 open 안되는 경우일테니 리붓 해보세요..
익명사용자 님이 2017년 5월 10일 답변
배쟁님이 2017년 5월 10일 채택됨
...