从previewCallback安卓相机发布错误 [英] android camera release error from PreviewCallback

查看:409
本文介绍了从previewCallback安卓相机发布错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我读了照相机API,但没有找到这个东西。我使用的是相机抢框架和它完美的作品,直到我尝试释放相机。我在电话中的一个序列复制错误:

So I've read over the Camera API and couldn't find anything on this. I'm using the Camera to grab frames and it works perfectly, until I try to release the camera. I replicated the error in one sequence of calls:

camera = Camera.open();
camera.setPreviewDisplay(getHolder());
Parameters params = camera.getParameters();
List<Size> ls = params.getSupportedPreviewSizes();
Size size = ls.get(1);
this.width = size.width;
this.height = size.height;
params.setPreviewSize(size.width, size.height);
camera.setParameters(params);
camera.setDisplayOrientation(90);
camera.setPreviewCallback(this);
camera.startPreview();
camera.stopPreview();
camera.release();

我得到的错误是

03-22 13:31:42.592: E/AndroidRuntime(14152): java.lang.RuntimeException: Method called after release()
03-22 13:31:42.592: E/AndroidRuntime(14152):    at android.hardware.Camera.setHasPreviewCallback(Native Method)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at android.hardware.Camera.access$600(Camera.java:114)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at android.hardware.Camera$EventHandler.handleMessage(Camera.java:545)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at android.os.Looper.loop(Looper.java:130)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at android.app.ActivityThread.main(ActivityThread.java:3684)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at java.lang.reflect.Method.invokeNative(Native Method)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at java.lang.reflect.Method.invoke(Method.java:507)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:845)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
03-22 13:31:42.592: E/AndroidRuntime(14152):    at dalvik.system.NativeStart.main(Native Method)

所以,无论是怎么回事是不是在我的功能之一。
如果我注释掉camera.set previewCallback(本);那么这个错误没有出现,但我显然失去了我的回调,这是包括相机在我的应用程序的整点。

So whatever is going on is not in one of my functions. If I comment out the camera.setPreviewCallback(this); then this error does not appear, but I obviously lose my callback, which is the whole point of including the camera in my app.

推荐答案

您必须取消设置preVIEW回调之前 camera.release(),在 camera.stop preVIEW()

You have to unset preview callback before camera.release(), after camera.stopPreview():

camera.setPreviewCallback(null);

否则相机已被释放后,它可能会被调用。

Otherwise it might get called after camera has been released.

这篇关于从previewCallback安卓相机发布错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆