Java 使用摄像头API在Android上切换摄像头

Java 使用摄像头API在Android上切换摄像头,java,android,camera,Java,Android,Camera,你好,我是摄像头API的新手。我正在自学!我只想前后切换我的相机! 我的设备有前后摄像头! 我是这样做的: 我的预览冻结并在单击“上一步”按钮时返回 我做错了什么?这是在摄像机之间切换的正确方式吗?谁能帮帮我吗 提前谢谢 只需像这样打开所需的摄像头: 对于前置摄像头: c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); 对于后置摄像头: c = Camera.open(Camera.CameraInfo.CAMERA_FACING

你好,我是摄像头API的新手。我正在自学!我只想前后切换我的相机! 我的设备有前后摄像头! 我是这样做的:


我的预览冻结并在单击“上一步”按钮时返回


我做错了什么?这是在摄像机之间切换的正确方式吗?谁能帮帮我吗


提前谢谢

只需像这样打开所需的摄像头:

对于前置摄像头:

c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
对于后置摄像头:

c = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
并确保在完成后或在片段的onPause方法中使用以下代码始终释放相机,否则相机实例将永远不会被释放,甚至您的主相机应用程序也无法获取它

private void releaseCameraAndPreview() {
    if (mCamera != null) {
        mCamera.stopPreview();
        mCamera.release();
        mCamera = null;
    }
}

只需按如下方式打开所需的摄像头:

对于前置摄像头:

c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
对于后置摄像头:

c = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
并确保在完成后或在片段的onPause方法中使用以下代码始终释放相机,否则相机实例将永远不会被释放,甚至您的主相机应用程序也无法获取它

private void releaseCameraAndPreview() {
    if (mCamera != null) {
        mCamera.stopPreview();
        mCamera.release();
        mCamera = null;
    }
}

什么版本的Android?您添加权限了吗?API 13 MIn和API 23 MAXI我正在询问您正在使用的设备。它是设备还是模拟器?你的目标SDK是什么?23? 如果是,则需要实现运行时权限。否则,Android M+设备上会出现运行时异常。是targetSdkVersion 23!什么版本的Android?您添加权限了吗?API 13 MIn和API 23 MAXI我正在询问您正在使用的设备。它是设备还是模拟器?你的目标SDK是什么?23? 如果是,则需要实现运行时权限。否则,Android M+设备上会出现运行时异常。是targetSdkVersion 23!在设备上打开主摄像头应用程序后,仍然冻结预览。工作正常吗?请参阅Mani对该问题的评论。在设备上打开主摄像头应用程序后,仍然冻结预览。工作正常吗?参见Mani对问题的评论。