2015-11-27 9 views
0

Я хочу сделать снимок экрана предварительного просмотра, используя API камеры2. Я предполагаю, что есть два места, где я могу сделать это в своем коде в surfacetexturelistner, где он обновляет текстуру (это будет просмотр предварительного просмотра) или в CameraCaptureSession.CaptureCallback, где он обновляет сеанс для предварительного просмотра. Поэтому я хочу снимок в растровом изображении, поэтому я могу его подавать на класс FaceDetector (http://developer.android.com/reference/android/media/FaceDetector.html), конечно, я буду использовать другой поток, чтобы не мешать производительности. Снимок не будет замечен пользователем. Так вот эти две области, чтобы сделать это, и хотят знать, если кто-то сделал это или имеет какие-либо предложения:моментальный снимок камеры2 экран предварительного просмотра

  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??? 
      } 
     }; 

Просто, чтобы вы знаете, Я знаю о детекторе лица, который поставляется с API Camera2, но доступ к нему возможен только после того, как вы сделаете снимок, поэтому он мне не нужен, потому что я хочу сделать это во время предварительного просмотра.

+0

Я уверен, что вы не можете сделать это в CScallback, нет ничего, что можно было бы использовать в параметрах любого использования –

ответ

1

Было очень просто все, что мне нужно было сделать: gameSurface.getBitmap() Где gameSurface - это TextureView.