我尝试在相同的表面绘制,相机将通过使用锁定和解锁来自我绘制。 奇怪的是,尝试锁定成功,但在调用unlockCanvasAndPost()之后mCamera.setPreviewDisplay()抛出错误" setPreviewDisplay失败"。
不调用lockCanvas()和unlockCanvasAndPost()mCamera.setPreviewDisplay()工作,我得到我的显示。(运行在android 4.1.1编译与api 17)
Remarque :(运行在android 4.0.4中使用api 17编译)有时只运行 如果我使用java锁定和解锁,而不是使用锁定和解锁工作 来自jni c / c ++(ANativeWindow_lock()和ANativeWindow_unlockAndPost())。
但是我们只讨论java解决方案以及为什么调用lockCanvas()和unlockCanvasAndPost()会阻止相机工作:
mCamera=Camera.open();
try {
Canvas can;
can = imageView.getHolder().getSurface().lockCanvas(null);
Log.d("", "Canvas successfully acquired ");
imageView.getHolder().getSurface().unlockCanvasAndPost(can);
mCamera.setPreviewDisplay(this.imageView.getHolder());
} catch (IOException e) {
Log.d("",e.getMessage());
} catch (OutOfResourcesException e) {
e.printStackTrace();
}
mCamera.setPreviewCallback(previewCallback);
mCamera.startPreview();