0

Ich verwende CameraView library, um einen Sucher anzuzeigen und Schnappschüsse daraus zu machen. Ich habe zwei Tasten, eine zum Öffnen der Ansicht und eine weitere Taste zum Schließen der Ansicht.CameraView schwarz bei der zweiten Verwendung

Sowohl die Schaltflächen klicken, wird die folgende Methode mit echten und falschen Parametern aufrufen:

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

Das Problem ist, dass, wenn die cameraLayout zum ersten Mal geöffnet wird, kann ich die Live-Kamera sehen. Aber wenn ich es schließe und es wieder öffne, dann zeigt es schwarzen Bildschirm. Sonderbare Sache ist, bekomme ich ein richtiges Bild, wenn ein Snap aufgenommen wird, während schwarzer Bildschirm angezeigt wird.

+0

nach der ersten Freigabe Kamera wie: 'mCamera.release()', vor dem nächsten Mal zu starten. – Kaushal28

+0

@ Kaushal28 Dies ist nicht die Camera API, sondern die Camera2 API, die über die CameraView Bibliothek verwendet wird. –

Antwort

0

Nach dem Aufnehmen des Bildes sollten Sie die Vorschau anhalten und sie erneut starten.

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

versuchen Sie es!

+0

Ich nehme noch keine Bilder auf. Einfach schließen und die Kameraansicht zeigen. Darüber hinaus denke ich, dass dies funktioniert haben könnte, wenn ich die Camera API benutzt hätte. Dies ist Camera2, das indirekt von der CameraView-Bibliothek verwendet wird. –

+0

Okay, lass mich sehen –

Verwandte Themen