zoukankan      html  css  js  c++  java
  • 我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.【转】

    本文转载自:http://blog.csdn.net/ouyang_peng/article/details/48048975

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

    [html] view plain copy
     
    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] view plain copy
     
    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] view plain copy
     
    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] view plain copy
     
    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.         }  
                    ====================================================================================

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

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

  • 相关阅读:
    【Java123】JDBC数据库连接池建立
    【招聘123】Some good open positions
    [Java123]Gradle
    4_3:流程控制:循环练习
    4_3:流程控制:while + do while + continue + break
    4_2:流程控制:[ for循环 ] + 断点调试
    4_1:流程控制:分支结构:[ if else ] + [ 三元表达式 ] + [ switch case ]
    3:运算符 + 运算符优先级 [ 逻辑短路 ]
    2_3:变量:[ 类型之间转换 ]
    2_2:变量:[ 五种简单数据类型 ]
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7736386.html
Copyright © 2011-2022 走看看