일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kakao
- centOS7
- 개발자
- mariadb
- 프래그먼트
- error
- 컴퓨터과학총론
- unity
- techEmpower
- caddy
- NGINX
- H2O
- 안드로이드
- javascript
- C
- java
- MySQL
- 자바
- 한글
- php
- 개발
- Portfolio
- it
- server
- 해석
- android
- 구글
- ubuntu
- C lanuage
- 번역
- Today
- Total
개발모음집
AudioRecode 에러 본문
06-08 13:25:44.260 1683-1683/ AudioFlinger could not create record track, status: -1
06-08 13:25:44.260 1683-1683/ Error creating AudioRecord instance: initialization check failed with status -1.
06-08 13:25:44.260 1683-1683/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
06-08 13:25:44.265 1683-1683/AndroidRuntime: Shutting down VM
06-08 13:25:44.265 1683-1683/AndroidRuntime: FATAL EXCEPTION: main
Process: com.blank.android.crafter, PID: 1683
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:943)
at be.tarsos.dsp.io.android.AudioDispatcherFactory.fromDefaultMicrophone(Unknown Source)
at com.blank.android.crafter.fragment.TunerFragment.onCreateView(TunerFragment.java:158)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
AudioRecode객체를 이용하는데 퍼미션이 허용한 상태에서 앱을 켠다면 문제가 없지만, 퍼미션을 허용하지않은 상태에서 켠다면 위와 같은 에러가 뜨며 앱이 꺼진다.
에러나는 이유 두 가지를 추측할 수 있다.
1. 퍼미션 문제
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
자바 코드
// 음을 입력받을 수 있도록 퍼미션 허용
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 1);
}
이미 다른 앱을 만들며 쓴 코드라 퍼미션 문제가 아닌 것 같다.
2. AudioRecord 객체 생성쪽에 문제가 있는 것 같다.
그래서 처음에는 아래에 적힌 코드로 변경하여 에러를 해결했다.
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 1);
} else {AudioRecord 객체 생성
}
하지만 AudioRecord: start() status -38라는 에러가 발생했다.
구글에 검색해보니 이 에러에 대해 자세히 기술된 게 없고, stackoverflow에도 글이 거의 없었다.
그래서 다른 방식으로 해결하려 했다.
if (audioInputStream.getState() == AudioRecord.STATE_INITIALIZED) { audioInputStream.startRecording(); }
참고: https://stackoverflow.com/questions/27878458/android-audiorecord-troubles
이렇게 하니까 앱이 꺼지는 에러는 잡았다. 하지만 "AudioRecord: start() status -38" 에러는 계속해서 발생했다.
06-08 15:04:56.562 25360-25360 E/AudioRecord: AudioFlinger could not create record track, status: -1
06-08 15:04:56.562 25360-25360 E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
06-08 15:04:56.562 25360-25360 E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
액티비티에서 퍼미션허용을 해주고 다시 켰을 때는 에러없이 된다.
'Android' 카테고리의 다른 글
Unable to retrieve AudioTrack pointer for write() 에러 (0) | 2017.06.10 |
---|---|
asnktask cancle시 ui 멈춤 (0) | 2017.06.09 |
TarsosDsp 공부 (0) | 2017.06.06 |
오디오와 오디오트랙에 대해 (0) | 2017.06.02 |
Fragment already active 에러 (0) | 2017.05.29 |