快照camera2预览屏幕

时间:2015-11-27 16:56:39

标签: preview face-detection snapshot camera2

我想使用camera2 API对预览屏幕进行快照。我想有两个地方我可以在我的代码中在surfacetexturelistner中更新textureview(这是预览呈现的位置)或者在CameraCaptureSession.CaptureCallback中更新预览会话。所以我想要位图中的快照,所以我可以将它提供给FaceDetector(http://developer.android.com/reference/android/media/FaceDetector.html)类,当然我会使用不同的线程来阻止性能。快照不会被用户注意到。所以这里有两个方面要做,并想知道是否有人这样做或有任何建议:

          private TextureView.SurfaceTextureListener SurListener =
            new TextureView.SurfaceTextureListener() {

                    @Override
                    public void onSurfaceTextureUpdated(SurfaceTexture surface) {
                        drawView();
                        //I can maybe snapshot here?
                    }

                    @Override
                    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width,
                            int height) {
                    }

                    @Override
                    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
                        return false;
                    }

                    @Override
                    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
                            int height) {
                        setupCamera();
                        StartUpCam();
                    }
                };

或者我可以在这里做到:

        private CameraCaptureSession.CaptureCallback CScallback
        = new CameraCaptureSession.CaptureCallback() {

            @Override
            public void onCaptureStarted(CameraCaptureSession session,
                    CaptureRequest request, long timestamp, long frameNumber) {
                super.onCaptureStarted(session, request, timestamp, frameNumber);
                //take a snapshot here???
            }
        };

只是为了让您知道,我知道camera2 API附带的面部检测器,但只有在您拍照后才能访问它,所以对我来说没用,因为我想在预览时这样做时间。

1 个答案:

答案 0 :(得分:2)

我所要做的一切都很简单:gameSurface.getBitmap() 其中gameSurface是TextureView。