Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用camera2 api在相机框架上连续绘制?_Java_Android_Android Camera2 - Fatal编程技术网

Java 使用camera2 api在相机框架上连续绘制?

Java 使用camera2 api在相机框架上连续绘制?,java,android,android-camera2,Java,Android,Android Camera2,我正试图使用谷歌的Camera2 API示例代码绘制曲面视图。但由于某些原因,在摄影机预览开始后,图形将消失。我真的很困惑为什么会发生这种情况 private void drawonSurfaceView(){ Paint paint = new Paint(); SurfaceHolder surfaceHolder= mOverlay.getHolder(); if(surfaceHolder.getSurface().isValid()) {

我正试图使用谷歌的Camera2 API示例代码绘制曲面视图。但由于某些原因,在摄影机预览开始后,图形将消失。我真的很困惑为什么会发生这种情况

private void drawonSurfaceView(){
        Paint paint = new Paint();
        SurfaceHolder surfaceHolder= mOverlay.getHolder();
        if(surfaceHolder.getSurface().isValid()) {
            Canvas canvas = surfaceHolder.lockCanvas();
            //... actual drawing on canvas

            paint.setStyle(Paint.Style.FILL);

            int x = canvas.getWidth();
            int y = canvas.getHeight();


            paint.setColor(Color.GREEN);
            paint.setStyle(Paint.Style.STROKE);
            Rect rect = new Rect(50, 50, x-300, y-300);
            canvas.drawRect(rect, paint );

            surfaceHolder.unlockCanvasAndPost(canvas);
        }


    }

我已将代码放在setUpCameraOutputs()方法中。

没错,您无法锁定预览曲面的画布进行绘制。不久前,用于相机预览的SurfaceView需要特殊设置(请参阅),但由于API 11,这是自动进行的

始终可以在摄影机预览上方的透明视图上绘制,但这不是推荐的解决方案。更好的方法是,为您的相机实时流使用SurfaceTexture,并在包含该纹理的2D虚拟世界中使用OpenGL进行绘制。若要使图形与摄影机流同步,应隐藏预览纹理,并使用用于为图像处理算法提供信息的相同回调自己绘制摄影机帧