【发布时间】:2017-05-15 05:25:08
【问题描述】:
我使用CameraView library 显示取景器并从中拍摄快照。 我有两个按钮,一个用于打开视图,另一个用于关闭视图。
两个按钮点击都会调用下面的方法,参数为真假:
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时,我可以看到实时摄像头。但是当我关闭它并再次打开它时,它显示黑屏。 奇怪的是,如果在显示黑屏时拍摄快照,我会得到正确的图像。
【问题讨论】:
-
使用第一次释放相机后,如:
mCamera.release(),下次开始之前。 -
@Kaushal28 这不是 Camera API,而是通过 CameraView 库使用的 Camera2 API。
标签: android android-layout android-camera camera2 camera-view