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.
nach der ersten Freigabe Kamera wie: 'mCamera.release()', vor dem nächsten Mal zu starten. – Kaushal28
@ Kaushal28 Dies ist nicht die Camera API, sondern die Camera2 API, die über die CameraView Bibliothek verwendet wird. –