lockCanvas unlockCanvasAndPostm Camera.setPreviewDisplay

时间:2014-09-04 22:45:16

标签: android c++ camera java-native-interface

我尝试在相同的表面绘制,相机将通过使用锁定和解锁来自我绘制。 奇怪的是,尝试锁定成功,但在调用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();

0 个答案:

没有答案