在做项目时遇到如下问题:
Request requires android.permission.RECORD_AUDIO
E/AudioFlinger( 357): openRecord() permission denied: recording not allowed
E/AudioRecord(22775): AudioFlinger could not create record track, status: -1
E/AudioRecord-JNI(22775): Error creating AudioRecord instance: initialization check failed with status -1.
E/android.media.AudioRecord(22775): Error code -20 when initializing native AudioRecord object.
D/AndroidRuntime(22775): Shutting down VM
E/AndroidRuntime(22775): FATAL EXCEPTION: main
E/AndroidRuntime(22775): Process: com.example.aac_pcm, PID: 22775
E/AndroidRuntime(22775): java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
E/AndroidRuntime(22775): at android.media.AudioRecord.startRecording(AudioRecord.java:629)
解决方案
- 首先检查是否在AndroidMainfest.xml申请record对应的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
- 接着检查record.startRecording()是否使用在动态申请权限之后,若在获得权限前使用则会报错。因此解决方法是将record的初始化和方法都写在动态获得权限后的方法中。