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"/>