博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.【转】...
阅读量:6699 次
发布时间:2019-06-25

本文共 2662 字,大约阅读时间需要 8 分钟。

本文转载自:

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

 

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

 

报错代码如下:

 

[java]   
 
  1. if (mediarecorder != null) {  
  2.         mediarecorder.stop();  
  3.         mediarecorder.release();  
  4.         mediarecorder = null;  
  5.         if (mCamera != null) {  
  6.             mCamera.release();  
  7.             mCamera = null;  
  8.         }  
  9.     }  

 

stop()方法源代码如下:

 

[java]   
 
  1. /** 
  2.      * Stops recording. Call this after start(). Once recording is stopped, 
  3.      * you will have to configure it again as if it has just been constructed. 
  4.      * Note that a RuntimeException is intentionally thrown to the 
  5.      * application, if no valid audio/video data has been received when stop() 
  6.      * is called. This happens if stop() is called immediately after 
  7.      * start(). The failure lets the application take action accordingly to 
  8.      * clean up the output file (delete the output file, for instance), since 
  9.      * the output file is not properly constructed when this happens. 
  10.      * 
  11.      * @throws IllegalStateException if it is called before start() 
  12.      */  
  13.     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);

改后代码如下:

 

[java]   
 
  1. if (mediarecorder != null) {  
  2.             //added by ouyang start  
  3.             try {  
  4.                 //下面三个参数必须加,不加的话会奔溃,在mediarecorder.stop();  
  5.                 //报错为:RuntimeException:stop failed  
  6.                 mediarecorder.setOnErrorListener(null);  
  7.                 mediarecorder.setOnInfoListener(null);    
  8.                 mediarecorder.setPreviewDisplay(null);  
  9.                 mediarecorder.stop();  
  10.             } catch (IllegalStateException e) {  
  11.                 // TODO: handle exception  
  12.                 Log.i("Exception", Log.getStackTraceString(e));  
  13.             }catch (RuntimeException e) {  
  14.                 // TODO: handle exception  
  15.                 Log.i("Exception", Log.getStackTraceString(e));  
  16.             }catch (Exception e) {  
  17.                 // TODO: handle exception  
  18.                 Log.i("Exception", Log.getStackTraceString(e));  
  19.             }  
  20.             //added by ouyang end  
  21.               
  22.             mediarecorder.release();  
  23.             mediarecorder = null;  
  24.             if (mCamera != null) {  
  25.                 mCamera.release();  
  26.                 mCamera = null;  
  27.             }  
  28.         }  

 

 

 

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

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

  转载请保留原文地址:

你可能感兴趣的文章
我的友情链接
查看>>
Heartbeat
查看>>
Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解...
查看>>
Maven学习总结(五)——聚合与继承
查看>>
iOS 点转成字符串,再字符串转换成点
查看>>
二进制安装mysql 5.7、mariadb (附yum安装方式)
查看>>
C#将Json字符串反序列化成List对象类集合
查看>>
Hive hang without response
查看>>
约瑟夫环问题---循环单链表
查看>>
Spring MVC常用注解说明
查看>>
Oracle conn 协议适配器错误解决
查看>>
JDK1.8使用Dubbo时需注意
查看>>
线程间的协作(3)——管道输入/输出流
查看>>
Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0
查看>>
我的友情链接
查看>>
远近旋转球体
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
windows 小技巧
查看>>
mysql 表锁-解锁
查看>>