2017-12-14 13 views
1

비트 맵을 저장하면 모양 오류가 발생합니다. 지속적인 캡처를 수행하는 방법을 알고 싶습니다. 내 작업은 올바른 것입니다. 도움말 도움말 도움말 내 이미지 판독기입니다.android camera2 30 픽처의 연속 캡처를 수행하는 방법 1 초

내가 무엇을 모르는
//wight 480, height 640, format JPEG,maxnum 30 
//when I set format is YUV_420_888, I donot know how to translate it 
//to bitmap,so I set it is JPEG 
imageReader = ImageReader.newInstance(480, 640, ImageFormat.JPEG, 30); 

try { 
     //set Builder 
     takePictureRequestBuilder = 
       mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); 

     takePictureRequestBuilder.addTarget(imageReader.getSurface());    
     takePictureRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, 
              CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 

     takePictureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, 
               CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); 

     int rotation = getWindowManager().getDefaultDisplay().getRotation(); 

     takePictureRequestBuilder.set(CaptureRequest.JPEG_ORIENTATION, 
                 ORIENTATIONS.get(rotation)); 

     CaptureRequest mCaptureRequest = takePictureRequestBuilder.build(); 

     List<CaptureRequest> list = new LinkedList<>(); 
     for (int i = 0; i < 10; i++) { 
      list.add(mCaptureRequest); 
     } 

     //set captureBurst 
     mCameraCaptureSession.captureBurst(list,null,handler1); 
    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    } 

답변

-2

잘인지 아닌지,

    //here start preview 
        mCameraCaptureSession.setRepeatingRequest(previewRequestBuilder.build(), myCaptureCallback, handler1); 
        private CameraCaptureSession.CaptureCallback myCaptureCallback = new CameraCaptureSession.CaptureCallback() { 

         @Override 
         public void onCaptureStarted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, long timestamp, long frameNumber) { 
          super.onCaptureStarted(session, request, timestamp, frameNumber); 
          Log.d(TAG, "onCaptureStarted: "); 
         } 

         private void process(CaptureResult result) { 
          switch (mState) { 
           case STATE_PREVIEW: { 
            // We have nothing to do when the camera preview is working normally. 
            break; 
           } 
           case STATE_CAPTURE: 
           //here start continuous capture ,if your device support Camera2 

           mCameraCaptureSession.capture(
           takePictureRequestBuilder.build(), null, handler2); 

          } 
         } 

         @Override 
         public void onCaptureProgressed(@NonNull CameraCaptureSession session, 
                 @NonNull CaptureRequest request, 
                 @NonNull CaptureResult partialResult) { 
          Log.d(TAG, "onCaptureProgressed: "); 
          //process(partialResult); 
         } 

         @Override 
         public void onCaptureCompleted(@NonNull CameraCaptureSession session, 
                 @NonNull CaptureRequest request, 
                 @NonNull TotalCaptureResult result) { 
          Log.d(TAG, "onCaptureCompleted: "); 
          mCameraCaptureSession = session; 
          process(result); 
         } 
} 
+1

추가 정보를 추가 할 귀하의 질문에 편집 링크를 이용해주십시오 당신의 아이디어 말 해주세요. 답변 게시 버튼은 질문에 대한 완전한 대답을 위해서만 사용되어야합니다. - [검토 중] (리뷰/저품절 게시물/18786536) –

+0

죄송합니다, stackoverflow를 사용하는 방법을 모르겠습니다. – zhangheng

관련 문제