2017-05-15 15 views
0

나는 CameraView library을 사용하여 뷰 파인더를 보여 주며 스냅 사진을 촬영합니다. 두 개의 단추가 있습니다. 하나는보기를 여는 단추이고 다른 하나는보기를 닫는 단추입니다.카메라를 두 번째로 사용하면 검정색이 켜짐

두 버튼 true와 false 매개 변수로 다음과 같은 메소드를 호출 클릭

public void showCameraLayout(boolean show) { 
    cameraLoading.setVisibility(View.GONE); 
    cameraClick.setVisibility(View.VISIBLE); 
    ivGallery.setVisibility(View.VISIBLE); 
    if (show) { 
     showKeyboard(false); 
     if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) 
       == PackageManager.PERMISSION_GRANTED) { 
      if (mCameraView != null) { 
       mCameraView.addCallback(mCallback); 
      } 
      ViewGroup.LayoutParams params = cameraLayout.getLayoutParams(); 
      params.height = messagesView.getWidth()/2; 
      cameraLayout.setLayoutParams(params); 
      mCameraView.start(); 
      safeToTakePicture = true; 
     } else if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), 
       Manifest.permission.CAMERA)) { 
      ConfirmationDialogFragment 
        .newInstance(R.string.camera_permission_confirmation, 
          new String[]{Manifest.permission.CAMERA}, 
          REQUEST_CAMERA_PERMISSION, 
          R.string.camera_permission_not_granted) 
        .show(getActivity().getSupportFragmentManager(), FRAGMENT_DIALOG); 
     } else { 
      ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, 
        REQUEST_CAMERA_PERMISSION); 
     } 

    } else { 
     ViewGroup.LayoutParams params = cameraLayout.getLayoutParams(); 
     params.height = 0; 
     cameraLayout.setLayoutParams(params); 
     if (mCameraView != null) mCameraView.stop(); 
    } 
} 

문제는 cameraLayout 처음 열 때 나는 라이브 카메라를 볼 수 있다는 것입니다. 그러나 닫은 다음 다시 열면 검정색 화면이 나타납니다. 검은 화면이 표시되는 동안 스냅이 찍히면 이상한 것이 있습니다.

+0

다음에 시작하기 전에'mCamera.release()'와 같은 첫 번째 릴리스 카메라를 사용한 후. – Kaushal28

+0

@ Kaushal28 카메라 API가 아니며 CameraView 라이브러리를 통해 Camera2 API를 사용하고 있습니다. –

답변

0

이미지를 캡처 한 후에 미리보기를 중지하고 다시 시작해야합니다.

mCamera.stopPreview(); 
mCamera.startPreview(); 

사용해보기!

+0

아직 이미지를 캡처하지 않습니다. 카메라맨을 닫고 보여주는 것. 또한 카메라 API를 사용하는 경우이 방법이 효과가 있었을 것으로 생각됩니다. 이것은 CameraView 라이브러리에서 간접적으로 사용되는 Camera2입니다. –

+0

알겠습니다. –