今天使用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.的更多相关文章

  1. 我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法

    我的Android进阶之旅-->Android颜色值(RGB)所支持的四种常见形式 透明度百分比和十六进制对应关系表格 透明度 十六进制 100% FF 99% FC 98% FA 97% F7 ...

  2. 我的Android进阶之旅------>如何解决Android 5.0中出现的警告: Service Intent must be explicit:

    我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...

  3. 我的Android进阶之旅------>Android中查看应用签名信息

    一.查看自己的证书签名信息 如上一篇文章<我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书>地址:http://blog ...

  4. 我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计

    要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...

  5. 我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(三)Android客户端功能实现

    我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端(地址:http://blog.csdn.net/ouyang_pen ...

  6. 我的Android进阶之旅------> Android为TextView组件中显示的文本添加背景色

    通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article ...

  7. 我的Android进阶之旅------> Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...

  8. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)

    在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...

  9. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

    正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...

  10. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)

    对于游戏玩家而言,游戏界面上看到的"元素"千变万化:但是对于游戏开发者而言,游戏界面上的元素在底层都是一些数据,不同数据所绘制的图片有所差异而已.因此建立游戏的状态数据模型是实现游 ...

随机推荐

  1. Android Shape 详解

    1 http://blog.csdn.net/feng88724/article/details/6398193 2 <shape xmlns:android="http://sche ...

  2. android中几个很有用的的api

    0x0001 public PackageInfo getPackageArchiveInfo (String archiveFilePath, int flags) Since: API Level ...

  3. (016)给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树(keep it up)

    给定一个有序数组(递增),敲代码构建一棵具有最小高度的二叉树. 因为数组是递增有序的.每次都在中间创建结点,类似二分查找的方法来间最小树. struct TreeNode { int data; Tr ...

  4. asp.net mvc 4多级area实现技巧

    今天在工作要实现这个多级area.其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的 ...

  5. tony_LVS DR模式 RealServer 为 Windows客户端配置

    LVS   DR模式  Windows 2000,Windows2003客户端配置   控制面板-添加硬件-选“是,我已经连接了此设备”点击下一步-在列表中选择添加新的硬件设备-选“安   装我充从手 ...

  6. Linux下(centos6.8)JDK1.8的安装与配置

    今天说下在Linux(centos6.8)系统下的JDK安装与配置. 据我所知的jdk安装方式有三种(rpm.yum方式没用过,暂且不提)今天只说解压安装方式: 一.解压jdk安装包: 附上jdk1. ...

  7. protobuf 在win10系统如何编译jar包

    最近在搞java服务器项目,前段要求用protobuf进行数据传输,以前没搞过,查了很多资料,走了一些弯路! 先把一些需要下载的链接放上来: protobuf下载地址:https://github.c ...

  8. java中ThreadLocalRandom类和Random类的使用

    package frank; import java.lang.*; import java.util.*;//工具类一般都在util里面 import java.util.concurrent.Th ...

  9. python简单处理xml文件

    Python若是想从xml里读点信息,用BeautifulSoup可能会容易一点,但是如果要修改xml,BeatifulSoup就搞不定了,其实直接用lxml就好. from lxml import ...

  10. SpringMVC请求使用@PathVariable获取文件名称并且文件名中存在.导致路径被截取的问题

    在SpringMVC中,当使用@pathVariable通过Get请求获取路径名称时,如果路径名称上存在小数点,则获取不到小数点后面的内容,会被Spring截取. 比如我获取某一文件,路径是local ...