Java 使用camera2 api在相机框架上连续绘制?
我正试图使用谷歌的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()) {
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进行绘制。若要使图形与摄影机流同步,应隐藏预览纹理,并使用用于为图像处理算法提供信息的相同回调自己绘制摄影机帧