0

J'utilise CameraView library pour afficher un viseur et prendre des photos. J'ai deux boutons, un pour ouvrir la vue et un autre pour fermer la vue.CaméraAffiche noir lorsque vous l'utilisez pour la deuxième fois

Les deux boutons clic appeler la méthode suivante avec les paramètres vrais et faux:

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(); 
    } 
} 

Le problème est que lorsque le cameraLayout est ouvert pour la première fois que je peux voir la caméra en direct. Mais quand je le ferme et l'ouvre encore, alors il montre l'écran noir. Chose étrange, je reçois une image correcte si un snap est pris alors que l'écran noir est affiché.

+0

après avoir utilisé la caméra de la première fois comme: 'mCamera.release()', avant de commencer la prochaine fois. – Kaushal28

+0

@ Kaushal28 Il ne s'agit pas d'une API Camera, mais de l'API Camera2 utilisée via la bibliothèque CameraView. –

Répondre

0

Après la capture de l'image, vous devez arrêter l'aperçu et le redémarrer.

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

Essayez-le!

+0

Je ne capture pas encore d'images. Juste en fermant et en montrant le cameraview. En outre, je pense que cela aurait fonctionné si j'utilisais l'API Camera. Camera2 est utilisé indirectement par la bibliothèque CameraView. –

+0

ok laissez-moi voir –