正确释放Android camera

android camera摄像预览没有正确释放导致Method called after release()错误。

02-07 23:19:04.684: E/AndroidRuntime(23030): java.lang.RuntimeException: Method called after release() 02-07 23:19:04.684: E/AndroidRuntime(23030): at android.hardware.Camera.setHasPreviewCallback(Native Method) 02-07 23:19:04.684: E/AndroidRuntime(23030): at android.hardware.Camera.access$600(Camera.java:141) 02-07 23:19:04.684: E/AndroidRuntime(23030): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1110) …

从堆栈中分析得出,错误的原因是由于我调用了camera.release()方法释放了摄像头,但是由于PreviewCallback忘记了反注册,所以消息循环执行到setHasPreviewCallback这个方法的时候就会抛出这个异常,也就是说这个方法不能够在摄像头释放了之后再调用,解决方法非常简单将PreviewCallback设置为空就可以了。下面是完整的释放摄像头代码。



  copyright@黑月神话,转载请注明出处:vjson.com

发表评论