Android 申请权限问题 -- startRecording() called on an uninitialized AudioRecord.

在做项目时遇到如下问题:

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)

解决方案

  1. 首先检查是否在AndroidMainfest.xml申请record对应的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
  1. 接着检查record.startRecording()是否使用在动态申请权限之后,若在获得权限前使用则会报错。因此解决方法是将record的初始化和方法都写在动态获得权限后的方法中
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值