[置顶] 我的Android进阶之旅------>Android解决异常: 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.
相关文章
- ubuntu 14.04.5 编译Android 4.4.4 r1源码(最新)
- Android RxJava/RxAndroid结合Retrofit使用
- 我的Android进阶之旅------>怎样将Activity变为半透明的对话框?
- 技术分享 | app测试中常用的Android模拟器
- 腾讯Android自动化测试实战3.2 Robotium原理简析
- 【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端&服务端)
- Android ANR全解析&华为AGC性能管理解决ANR案例集
- 了解与建设有中国特色的Android M&N(Android6.0和7.0新特性分析)
- Android+Jquery Mobile学习系列(8)-保单/生日提醒功能
- 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护
- Android技术精髓-Bitmap详解
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- android 管理fragment
- Android之SurfaceView与多线程的混搭
- android开发 无预览定时拍照
- Android valuesids.xml: Error: Unsupported type ‘xxxx‘
- Android 解决Retrofit URL query string “K={k}&V={v}“ must not have replace block. For dynamic query par
- 一步一步学android控件(之十五) —— DegitalClock & AnalogClock
- RecyclerView高级控件-附实例【android专题】
- 《Android源代码设计模式解析与实战》读书笔记(二十一)
- 我的Android进阶之旅------>解决:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
- Android Api Demos登顶之路(四十五)Loader-->Cursor
- 我的Android进阶之旅------>怎样在多个LinearLayout中加入分隔线
- Android数据库安全permission