【问题标题】:Android: Camera2 switching between back and front cameraAndroid:Camera2 在前后摄像头之间切换
【发布时间】:2016-11-10 17:06:07
【问题描述】:

我正在用我的相机拍照,一切似乎都很好,我正在使用Camera2Basic 示例,此代码仅适用于后置摄像头,因此我添加了一个按钮以在 2 个摄像头之间切换,如下所示:

Boolean facesCamera = 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)

如何正确解决此问题,使其在所有设备上都能正常工作?

【问题讨论】:

    标签: android android-camera android-camera2


    【解决方案1】:

    您是否检查过 CameraManager 是否为您提供了 2 个可用的摄像头?使用cameraManager.getCameraIdList() 进行检查。还记得使用 CameraCharacteristics 为每个相机获取正确的预览尺寸:

    StreamConfigurationMap rearMap = rearCameraCharacteristics.get(
          CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
    StreamConfigurationMap frontMap = frontCameraCharacteristics.get(
          CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
    

    之后,使用其中一个值来初始化预览,如果您对前后摄像头使用相同的值,您可能会遇到问题,因为您的前置摄像头不支持该分辨率大小。

    【讨论】:

    • 感谢您的回复,我认为是问题所在,日志显示有时找到合适的分辨率大小有问题,有时预览会被拉伸。我能找到可以在正面摄像头和背面摄像头之间切换的示例,有吗?
    • 我遇到了同样的问题,当我切换相机时,有时预览会拉长,你找到解决办法了吗?
    • 太棒了!在切换相机时,我被困了好几天才能获得正确的预览尺寸。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多