我正在拍照从我的相机拍照,一切看起来都不错,我使用的是Camera2Basic样本,这段代码只是在后置摄像头上,所以我添加了一个按钮,可以在2个摄像头之间切换这个:
Boolean facingCamera = true; //初始化
onClick() {
facingCamera = !facingCamera;
closeCamera();
openCamera(mTextureView.getWidth(), mTextureView.getHeight());
}
我改变了方法setUpCameraOutputs代码:
if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT ) {
continue;
}
要
if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT && !facingCamera
|| facing != null && facing == CameraCharacteristics.LENS_FACING_BACK && facingCamera ) {
continue;
}
这对Nexus 4来说很好,但对于我的LG-D802工作不正常(每当我尝试更换相机时都会调用onConfigureFailed)
如何正确解决这个问题,以便在所有设备上正常运行?
答案 0 :(得分:3)
您是否检查过CameraManager是否为您提供了2个可用的相机?使用cameraManager.getCameraIdList()
进行检查。还要记住使用CameraCharacteristics为每个摄像机获得正确的预览尺寸:
StreamConfigurationMap rearMap = rearCameraCharacteristics.get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
StreamConfigurationMap frontMap = frontCameraCharacteristics.get(
CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
执行此操作后,使用其中一个值初始化预览,如果您使用前后相机的相同值,可能是因为前置相机不支持该分辨率大小而遇到问题。 / p>