今天在调用MediaRecorder.stop(),报错了,java.lang.RuntimeException: stop failed.

E/AndroidRuntime(7698): Cause by: java.lang.RuntimeException: stop failed.
E/AndroidRuntime(7698):            at android.media.MediaRecorder.stop(Native Method)
E/AndroidRuntime(7698):            at com.tintele.sos.VideoRecordService.stopRecord(VideoRecordService.java:298)

报错代码如下:

  if (mediarecorder != null) {mediarecorder.stop();mediarecorder.release();mediarecorder = null;if (mCamera != null) {mCamera.release();mCamera = null;}}

stop()方法源代码如下:

/*** Stops recording. Call this after start(). Once recording is stopped,* you will have to configure it again as if it has just been constructed.* Note that a RuntimeException is intentionally thrown to the* application, if no valid audio/video data has been received when stop()* is called. This happens if stop() is called immediately after* start(). The failure lets the application take action accordingly to* clean up the output file (delete the output file, for instance), since* the output file is not properly constructed when this happens.** @throws IllegalStateException if it is called before start()*/public native void stop() throws IllegalStateException;

源代码中说了:Note that a RuntimeException is intentionally thrown to the application, if no valid audio/video data has been received when stop() is called. This happens if stop() is called immediately after start().The failure lets the application take action accordingly to clean up the output file (delete the output file, for instance), since the output file is not properly constructed when this happens.

现在,在mediarecorder.stop();这一句报错了,现在在mediarecorder.stop();这句之前加几句就不会报错了

mediarecorder.setOnErrorListener(null);
mediarecorder.setOnInfoListener(null);  
mediarecorder.setPreviewDisplay(null);

改后代码如下:

if (mediarecorder != null) {//added by ouyang starttry {//下面三个参数必须加,不加的话会奔溃,在mediarecorder.stop();//报错为:RuntimeException:stop failedmediarecorder.setOnErrorListener(null);mediarecorder.setOnInfoListener(null);  mediarecorder.setPreviewDisplay(null);mediarecorder.stop();} catch (IllegalStateException e) {// TODO: handle exceptionLog.i("Exception", Log.getStackTraceString(e));}catch (RuntimeException e) {// TODO: handle exceptionLog.i("Exception", Log.getStackTraceString(e));}catch (Exception e) {// TODO: handle exceptionLog.i("Exception", Log.getStackTraceString(e));}//added by ouyang endmediarecorder.release();mediarecorder = null;if (mCamera != null) {mCamera.release();mCamera = null;}}
====================================================================================

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

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

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

我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....相关推荐

  1. Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.

    E/AndroidRuntime(7698): Cause by: java.lang.RuntimeException: stop failed. if (mediarecorder != null ...

  2. 【我的Android进阶之旅】Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的混淆文件

    在我2017年的文章[我的Android进阶之旅]Android 混淆文件资源分类整理中,我已经提及过. 之前将所有的混淆都配置在一个 proguard-rules.pro 这个Android Stu ...

  3. 【我的Android进阶之旅】Android混淆踩坑之各模块各自单独配置混淆,但是将minifyEnabled设置为true导致的编译错误

    一.背景描述 在之前的两篇文章中 [我的Android进阶之旅]Android 混淆文件资源分类整理 [我的Android进阶之旅]Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的 ...

  4. 【我的Android进阶之旅】Android使用JNI的时候报native crash: A/libc: Fatal signal 4 (SIGILL), code 2 (ILL_ILLOPN)

    一.问题描述 最近在JNI开发中,[我的Android进阶之旅]Android 如何防止 so库文件被未知应用盗用? 抛了一个异常,然后运行的时候报如下所示的错误: 2021-01-08 14:25: ...

  5. 我的Android进阶之旅------gt;Android字符串资源中的单引號问题error: Apostrophe not preceded by 的解决的方法...

    刚刚在string字符串资源文件里,写了一个单引號.报错了,错误代码例如以下 error: Apostrophe not preceded by \ (in OuyangPeng's blog ) 资 ...

  6. 我的Android进阶之旅------gt;Android实现音乐示波器、均衡器、重低音和音场功能...

    本实例来自于<疯狂Android讲义>.要实现详细的功能,须要了解下面API: MediaPlayer  媒体播放器 Visualizer 频谱 Equalizer 均衡器 BassBoo ...

  7. 我的Android进阶之旅------gt;Android使用AlarmManager全局定时器实现定时更换壁纸

    该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供 ...

  8. 我的Android进阶之旅------解决Android Studio编译后安装apk报错:The APK file does not exist on disk...

    1.错误描述 今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示: The APK file build\outputs\apk\OYP_2.3.4_I2Base_64 ...

  9. 我的Android进阶之旅------gt;Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题...

    Android 设备的CPU类型通常称为ABIs 问题描写叙述 解决方法 1解决之前的截图 2解决后的截图 3解决方法 4建议 为什么你须要重点关注so文件 App中可能出错的地方 其它地方也可能出错 ...

最新文章

  1. can是什么时候处于显性_can总线怎么传输数据格式过程分析
  2. maven netbeans 导入_Maven - NetBeans
  3. Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
  4. mysql数据类型优化
  5. Android之提示javax.net.ssl.SSLHandshakeException: Chain validation failed
  6. 超18万人次下载使用的 Cloud Toolkit 的成长历程
  7. 视频超分中的自监督适应方案
  8. 亲密关系沟通-【表达情绪】如何说出感受却不伤人
  9. 基本概念----Beginning Visual C#
  10. 关于input type=hidden/标签的记录
  11. [算法]圆圈中最后剩下的数
  12. 计算机二级2018VB题库百度云,2018年春江苏省计算机二级VB考试真题第1套
  13. 二维数组循环赋值c语言,C/C++ 定义并赋值二维数组
  14. APP版本更新通知流程图
  15. !$boo在php中什么意思,php前戏
  16. 携程网创始人季琦:互联网已不再有机会(转)
  17. 正则新能源车牌和汽车牌混合验证
  18. Android Studio 卡在Download fastutil-8.4.0-sources jar以及New Module为灰色的问题及解决方法
  19. 印象笔记如何分享链接_几步搞懂印象笔记的链接功能
  20. MySQL基础教程——创建数据库并插入数据

热门文章

  1. 本地YUM源配置并设置成本地同步网络源,摆脱依赖包
  2. okhttp 对应java版本_java – Android |在运行时获取OkHTTP库版本
  3. Spring Ioc注解式开发中注解的作用
  4. shell的建立与执行实验报告_实验指导书--实验02 Linux Shell用户接口
  5. python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法
  6. signature=3ba70fa0be2ca50c615373e5495718b1,翻译文化观与翻译改写
  7. java按钮位置_java窗口按钮位置设置
  8. mac安装mysql修改密码_Mac下安装MySQL 5.7.28并且修改root密码-Go语言中文社区
  9. 【BIEE】报表导出数据只显示500行,如何解决?
  10. 阿里云服务器CentOS6.9 nexus私服使用