zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

[置顶] 我的Android进阶之旅------>Android解决异常: startRecording() called on an uninitialized AudioRecord.

AndroidampOn异常 解决 之旅 进阶 gt
2023-09-27 14:29:23 时间
今天使用AudioRecord进行录音操作时候,报了下面的异常。 E/AndroidRuntime(22775): java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.

今天使用AudioRecord进行录音操作时候,报了下面的异常。

E/AndroidRuntime(22775): java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.

E/ ( 357): 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)

E/AndroidRuntime(22775): at com.example.aac_pcm.AccActivity$1.onClick(AccActivity.java:42)

E/AndroidRuntime(22775): at android.view.View.performClick(View.java:4848)

E/AndroidRuntime(22775): at android.view.View$PerformClick.run(View.java:20262)

E/AndroidRuntime(22775): at android.os.Handler.handleCallback(Handler.java:815)

E/AndroidRuntime(22775): at android.os.Handler.dispatchMessage(Handler.java:104)

E/AndroidRuntime(22775): at android.os.Looper.loop(Looper.java:194)

E/AndroidRuntime(22775): at android.app.ActivityThread.main(ActivityThread.java:5637)

E/AndroidRuntime(22775): at java.lang.reflect.Method.invoke(Native Method)

E/AndroidRuntime(22775): at java.lang.reflect.Method.invoke(Method.java:372)

E/AndroidRuntime(22775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)

E/AndroidRuntime(22775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

根据异常提示,需要android.permission.RECORD_AUDIO权限,原来是少配置了权限。

在AndroidManifest.xml中配置权限即可。

 !-- 录音权限 -- 

 uses-permission android:name="android.permission.RECORD_AUDIO" / 



PS: 转眼过去那么久,Android 系统已经升级到了Android 7.x 系列了,在Android 6.0 系统之后就增加了运行时权限处理机制,因此有可能你在AndroidManifest.xml中配置了录音(RECODE_AUDIO)权限也没有用,移入会报此错误。这个时候你需要在代码中先判断是否录音(RECODE_AUDIO)权限授权了再使用AudioRecord做相关操作。如果没有授权,请做授权的相关操作,然后再回调方法中再判断是否授权成功,如果授权成功再使用AudioRecord做相关操作。否则会报错的。


运行时权限相关参考文档:

http://blog.csdn.net/lmj623565791/article/details/50709663

http://blog.csdn.net/yanzhenjie1003/article/details/52503533/

http://www.jianshu.com/p/e1ab1a179fbb


读者可以参考上述链接,为APP增加运行时权限处理机制。



        ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

====================================================================================






关于Java/Android开发中常见异常错误汇总___知识导图分享 1.若博客图片不清晰,可以鼠标点击图片查看,或者下载到电脑中查看,也可以留言给我,发你高清原图。希望对热爱学习的朋友有帮助! 2.这是汇总的关于Java/Android开发中常见的异常、错误,绘制导图如下:
字节卷动 You will never know how excellent you are unless you impel yourself once.