Android使用MediaRecorder录音导致java.lang.RuntimeException: start failed.
2017-06-02 17:10
806 查看
项目中有录音功能使用到了MediaRecorder,但是这个玩意使用的时候经常会遇到java.lang.RuntimeException: start failed.这个异常,而且这个问题还不是针对全部机型,我把我遇到这个问题及解决方案记录下,希望可以帮助大家:
我遇到的情况是不同版本的Android系统会遇到不同的情况,其中SDK<22的会报上述异常,SDK>22的则不会,但是如果使用AndroidAudioConverter进行转码的时候会出现转码异常,针对这个问题我就试着改一些东西,最后还真给我试出来了,但是为什么会这样,我还是不知道,希望哪位大神知道是为什么的给我解下惑,如下代码是我的解决方案:
其中红字标注的地方判断SDK的版本号来设置编码采样率,我就是这样来解决java.lang.RuntimeException: start failed异常的。如有其它解决方案希望大家评论下来帮助更多同学。
我遇到的情况是不同版本的Android系统会遇到不同的情况,其中SDK<22的会报上述异常,SDK>22的则不会,但是如果使用AndroidAudioConverter进行转码的时候会出现转码异常,针对这个问题我就试着改一些东西,最后还真给我试出来了,但是为什么会这样,我还是不知道,希望哪位大神知道是为什么的给我解下惑,如下代码是我的解决方案:
mRecorder = new MediaRecorder(); // 设置输出文件 mRecorder.setOutputFile(file.getAbsolutePath()); // 设置meidaRecorder的音频源是麦克风 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置文件音频的输出格式为amr mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); // 设置音频的编码格式为amr。这里采用AAC主要为了适配IOS,保证在IOS上可以正常播放。 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1 ){ mRecorder.setAudioSamplingRate(11025); } // 严格遵守google官方api给出的mediaRecorder的状态流程图 mRecorder.prepare(); mRecorder.start();
其中红字标注的地方判断SDK的版本号来设置编码采样率,我就是这样来解决java.lang.RuntimeException: start failed异常的。如有其它解决方案希望大家评论下来帮助更多同学。
相关文章推荐
- linux中使用hbase出现 Failed to start master java.lang.RuntimeException: HMaster Aborted
- linux中使用hbase出现 Failed to start master java.lang.RuntimeException: HMaster Aborted
- Android中调用startActivity结果导致:java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}
- Android 录音,加权限还有错误:java.lang.RuntimeException: setAudioSource failed. onCallStateChanged获取不到来电号码
- android中使用fragment时出现如下错误 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fra
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPointerException 错误的集中原因及解决办法
- Android 自定义View java.lang.RuntimeException: Unable to start activity ComponentInfo
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPointerException 错误的集中原因及解决办法
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
- 在使用MaterialDesign中的CoordinatorLayout的时候出现了如下错误:java.lang.RuntimeException: Unable to start activity
- Android问题:Test run failed: Instrumentation run failed due to 'java.lang.RuntimeException'
- Android Studio java.lang.RuntimeException: Unable to start activity ComponentInfo
- java.lang.RuntimeException: Unable to start activity ComponentInfo{com.esri.arcgis.android.samples.h
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
- java.lang.RuntimeException: startPreview failed
- java.lang.RuntimeException: Unable to start activity ComponentInfo....android.os.NetworkOnMainThread
- Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi
- Android使用ViewPager导致java.lang.IllegalArgumentException: The observer is null.