Android:Camera2在后置和前置摄像头之间切换

时间:2016-11-10 17:06:07

标签: android android-camera android-camera2

我正在拍照从我的相机拍照,一切看起来都不错,我使用的是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)

如何正确解决这个问题,以便在所有设备上正常运行?

1 个答案:

答案 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>

相关问题