停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法
2013-10-15 20:17
671 查看
如下代码:
在停止预览时,调用自定义stopPreview(),在执行到_mCamera.release()后,出现Method called after release()异常。
1. 具体原因
是因为在之前调用_mCamera.startPreview()方法之前,调用了_mCamera.setPreviewCallback(xxActivity.this),导致在手动调用上面stopPreview()的时候,xxActivity.this 实现的PreviewCallback接口onPreviewFrame方法还在不停调用,具体调用频率就是当前预览的FrameRate,当stopPreview()执行完_mCamera.release()时,onPreviewFrame再次被调用时就出现了该异常。
2. 解决办法
在自定义的stopPreview()里面调用_mCamera.release()之前,先调用一次_mCamera.setPreviewCallback(null); ,这样在执行完_mCamera.release(),因为指定的PreviewCallback为null,因而就不会再调用onPreviewFrame,进而也不会再引用到camera和调用到其任何方法。注:onPreviewFrame第二个参数引用了camera。
private void stopPreview() { Log.w(TAG, "stopPreview(), _isPreviewing = " + _isPreviewing + ", _mCamera = " + _mCamera); if (_isPreviewing && _mCamera != null) { _mCamera.stopPreview(); /** * Note: 一定要调用 _mCamera.setPreviewCallback(null), 否则出现 Method called * after release() 异常. */ _mCamera.setPreviewCallback(null); _mCamera.release(); _mCamera = null; _isPreviewing = false; updateTimeRemainingInfoVisibility(); updateMotionDetectScoreVisibility(); releaseVideoDetector(); } }
在停止预览时,调用自定义stopPreview(),在执行到_mCamera.release()后,出现Method called after release()异常。
1. 具体原因
是因为在之前调用_mCamera.startPreview()方法之前,调用了_mCamera.setPreviewCallback(xxActivity.this),导致在手动调用上面stopPreview()的时候,xxActivity.this 实现的PreviewCallback接口onPreviewFrame方法还在不停调用,具体调用频率就是当前预览的FrameRate,当stopPreview()执行完_mCamera.release()时,onPreviewFrame再次被调用时就出现了该异常。
2. 解决办法
在自定义的stopPreview()里面调用_mCamera.release()之前,先调用一次_mCamera.setPreviewCallback(null); ,这样在执行完_mCamera.release(),因为指定的PreviewCallback为null,因而就不会再调用onPreviewFrame,进而也不会再引用到camera和调用到其任何方法。注:onPreviewFrame第二个参数引用了camera。
相关文章推荐
- 停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法
- JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
- C# WPF VS2012 对类型“ ”的构造函数执行符合指定的绑定约束的调用时引发了异常 问题解决办法 产生什么原因
- 相机拍照时,遇到问题Method called after release()的解决方法
- JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
- JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
- jquery1.8版本使用ajax实现微信调用出现的问题分析及解决办法
- tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
- 解决mysql插入数据时出现Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的异常 这个问题,原因是UTF-8编码有可
- 安装appium出现的config文件未找到问题的原因及解决办法
- jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
- FOXPRO 程序在Winxp下面 insufficient memory 问题出现的原因以及解决办法
- MFC下debug改成release版本出现问题及解决办法
- 用Labview调用两个相机采集图像程序以及出现串图问题的解决办法
- 关于调用startActivityForResult()方法后Activity直接退出的问题原因和解决办法
- GeoServer中一个shape发布多个图层时出现调用空白的问题及解决办法
- 调用Dubbo服务报以下错误(com.alibaba.dubbo.remoting.RemotingException),问题原因和解决办法
- Android编程中调用Camera时预览画面有旋转问题的解决方法
- Ubuntu安装Eclipse出现jdk环境异常问题解决办法
- 生成图片验证码jsp出现getOutputStream() has already been called for this response异常的原因和解决方法