我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.

今天在调用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().

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

mediarecorder.setOnErrorListener(null);

mediarecorder.setOnInfoListener(null);

mediarecorder.setPreviewDisplay(null);

改后代码如下:

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

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

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

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

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

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

版权声明:本文为欧阳鹏原创文章,欢迎转载,转载请注明出处http://blog.csdn.net/ouyang_peng

时间: 2024-10-25 05:18:58

我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.的相关文章

Android Studio 首次安装报错 Java.lang.RuntimeException:java.lang.NullPointerException...错

下次安装报:Java.lang.RuntimeException: java.lang.NullPointerException......错 只需在文件..\Android Studio\bin\idea.properties(需要对应自己的安装目录下)最后面加一行代码:disable.android.first.run=true  就可以完美解决问题了

解决Android studio 启动报错java.lang.RuntimeException: java.lang.IllegalArgumentException

报错内容 Internal error. Please report to https://code.google.com/p/android/issues java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'name' of com/android/tools/idea/welcome/Platform.<init> must not be null 

myeclipse的web project中使用dom4j报错java.lang.ClassNotFoundException: org.dom4j.Document

在学习微信公众平台开发的过程中,参考了微信公众平台java开发详解(工程代码+解析)中的xml解析方法,是使用dom4j来解析的. 对于java中解析xml的方法,又参考了java解析xml的几种方式,其中介绍了DOM,SAX,Jdom,dom4j几种方法. 在使用dom4j的时候将dom4j-1.6.1.jar添加到project>>properties>>Java Build Path>>Libraries中,但在运行时仍会报出以下错误: java.lang.Cla

Android Studio 类库中配置Jpush 报错 java.lang.UnsatisfiedLinkError解决方案

JPush基类库导入需在基类库(注意是基类库,非应用项目)的build.gradle文件-sourceSets项中手动配置jniLibs.srcDir 'src/main/libs',否则JPush无法正确的加载libjpush.so文件 如: sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['

Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

首先需要双击tomcat server,如下图所示: 双击上图后会出现,tomcat配置的界面: 然后再点击上图的,红色矩形框的链接,会弹出tomcat参数配置的节面,要选择Arguments参数框: 如上图在VM arguments文本框内设置 -XX:MaxPermSize=256m的值即可, 当然此处还可以添加其他jvm参数,比如最大内存,最小内存等.

我的Android进阶之旅------&gt; Android在TextView中显示图片方法

面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用TextView组件可以显示富文本信息.在TextView组件中可以使用富文本标签来显示富文本信息,这种标签类似于HTML标签,但比HTML标签简单,支持有限的几种显示富文本的方式.如<font>标签用于设置字体和颜色,<b>用于设置粗体.包含这些标签的文本不能直接作为TextView.se

我的Android进阶之旅------&gt; Android为TextView组件中显示的文本添加背景色

通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article/details/46916963) 我们学会了在TextView中显示图片的方法,现在我们来学习如何为TextView组件中显示的文本添加背景色.要求完成的样子如图所示: 首先来学习使用BackgroundColorSpan对象设置文字背景色,代码如下: TextView textView=(TextV

我的Android进阶之旅------&gt;Android疯狂连连看游戏的实现之实现游戏逻辑(五)

在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的初始化设置信息. GameService:负责游戏的逻辑实现. 其中GameConf的代码如下:cn\oyp\link\utils\GameConf.java package cn.oyp.link.utils; import android.content.Context; /** * 保存游戏配置的对象

我的Android进阶之旅------&gt;Android利用Sensor(传感器)实现水平仪功能的小例

这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端. 利用方向传感器返回的第一个参数,实现了一个指南针小应用. 我的Android进阶之旅------>Android利用Sensor(传感器)实现指南针功能 (地址:http://blog.csdn.net/ouyang_peng/article/details/8801204) 接下来,我们利用返回的第二.三个参数实现该水平仪.因为第二个参数,反映底部翘起的角度(当