[置顶] 我的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
====================================================================================
[置顶] 我的Android进阶之旅------>Android解决异常: startRecording() called on an uninitialized AudioRecord.的更多相关文章
- 我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法
我的Android进阶之旅-->Android颜色值(RGB)所支持的四种常见形式 透明度百分比和十六进制对应关系表格 透明度 十六进制 100% FF 99% FC 98% FA 97% F7 ...
- 我的Android进阶之旅------>如何解决Android 5.0中出现的警告: Service Intent must be explicit:
我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...
- 我的Android进阶之旅------>Android中查看应用签名信息
一.查看自己的证书签名信息 如上一篇文章<我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书>地址:http://blog ...
- 我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计
要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...
- 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现
我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...
- 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色
通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)
在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)
正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)
对于游戏玩家而言,游戏界面上看到的"元素"千变万化:但是对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,不同数据所绘制的图片有所差异而已.因此建立游戏的状态数据模型是实现游 ...
随机推荐
- JPA联合主键@EmbeddedId使用详解附查询例子
花了2个小时的时间解决这个问题,网上资料太少,记录下 详情看源文件TBicPrmCompute,TBicPrmComputePK package com.isoftstone.core.dom ...
- css之定位学习
如需转载烦请注明出处: 英文原文:http://www.vanseodesign.com/css/css-positioning/ 中文译文:http://www.w3cplus.com/blog/p ...
- MvcPager帮助文档 - MvcAjaxOptions 类
表示用于 MvcPager 在 Ajax 分页模式下的选项设置,该类继承自 AjaxOptions. 公共属性: 名称 说明 默认值 AllowCache 获取或设置一个值,该值指示是否在Ajax分页 ...
- ORA-1092 : opitsk aborting process---killed by oom killer
oracle version:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production os versi ...
- Atitit.异常机制的设计原理
Atitit.异常机制的设计原理 缺陷 关键是只要知晓有一个异常表的存在,try 的范围就是体现在异常表行记录的起点和终点.JVM 在 try 住的代码区间内如有异常抛出的话,就会在当前栈桢的异常表中 ...
- 4.const
const 放在*号的左边为指针常量,即:该指针所指向的内存空间不允许被修改.const放在*号的右边为常量指针,即:该指针的指向不允许被修改. 简单的说就是: 假设定义一个结构体 Teacher : ...
- 试题系列四(袋中有6红球 3黄球 3绿球,从中取6个球,求所有拿到球的颜色的可能 c(12,6))
1.袋中有6红球 3黄球 3绿球,从中取6个球,求所有拿到球的颜色的可能 c(12,6) #include<stdio.h> int main(int argc, char** argv) ...
- 李洪强iOS开发之大神必备的Xcode插件
iOS开发大神必备的Xcode插件 写在前面 工欲善其事,必先利其器,iOS开发中不仅要学会Xcode的基本操作,而且还得学会一些Xcode的使用技巧,如掌握常用的快捷键等,还有就是今天要说到的Xco ...
- iOS swift中比较模型数组是否相等
在oc中,如果要比较模型数组中的元素是否相等一般重新isEqual方法即可 -(BOOL)isEqual:(id)object{ if (self == object) { return YES; } ...
- linux 下安装svn服务
鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结 /******开始****** ...