I am using CameraView library for showing a viewfinder and taking snaps from it. I have two buttons, one for opening the view and another button for closing the view.
Both the buttons click will call the following method with true and false parameters:
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();
}
}
The problem is that when the cameraLayout is opened for the first time I can see the live camera. But when I close it and open it again, then it shows black screen. Weird thing is, I get a proper image if a snap is taken while black screen is being shown.
after capturing image you should stop the preview and start it back again.
try it!