必须先启动预览模式才能拍照

时间:2014-06-27 16:31:28

标签: android android-camera commonsware-cwac

我们正在使用cwac-camera在我们的应用程序中获得这样的堆栈跟踪:

java.lang.IllegalStateException: Preview mode must have started before you can take a picture
at com.commonsware.cwac.camera.CameraView.takePicture(CameraView.java:329)
at com.commonsware.cwac.camera.CameraView.takePicture(CameraView.java:277)
at com.github.randoapp.camera.RandoCameraHost.onAutoFocus(RandoCameraHost.java:119)
at com.commonsware.cwac.camera.CameraView.onAutoFocus(CameraView.java:411)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:824)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
at dalvik.system.NativeStart.main(Native Method)

我们认为这可能会发生,因为用户过早按下拍照。解决方案是在预览初始化时禁用按钮,仅在完成后启用。问题是:用于按钮启用的事件是什么?是否有事件或回调说明预览最终被初始化了?

2 个答案:

答案 0 :(得分:1)

  

我们认为这可能会因为用户过早拍照而发生

这是一个明显的可能性。

  

用于按钮启用的事件是什么?是否有事件或回调说明预览最终被初始化了?

autoFocusAvailable()中的{p> CameraHost是目前最好的选择。这是在预览开始之前调用的,inPreview设置为true

我已经提交an issue来做得比这更好。

答案 1 :(得分:0)

在光线不好的情况下拍摄照片时,每当使用自动闪光灯时,我们都会遇到此异常。

我们通过删除inPreview CameraView (line 284)中的Webix File Manager来“修复”它,但我不确定这是否会产生其他问题(我猜这里的检查是有原因的),但是从那时起我们就没有了。