如何在前后摄像头之间切换?

时间:2013-02-15 23:05:32

标签: android android-camera

我需要在我的应用中切换前后摄像头。我的问题是,我可以打开前置摄像头,或者我可以打开后置摄像头。但是一旦相机打开,我就无法切换预览中显示的内容。作为一个概念证明,我只是想让我已经打开的后置摄像头预览切换到前置。 我正在尝试编写一个看起来像这样的方法toggleCamera:

public void toggleCamera(){
    mCamera.stopPreview();
    int frontCameraId = 0;
    for (int camNo = 0; camNo < Camera.getNumberOfCameras(); camNo++) {
    CameraInfo camInfo = new CameraInfo();
        Camera.getCameraInfo(camNo, camInfo);
        if (camInfo.facing==(Camera.CameraInfo.CAMERA_FACING_FRONT)) {
            frontCameraId = camNo;
        }
    }
    mCamera.release();
    mCamera = Camera.open(frontCameraId);
    mCamera.startPreview();
    Log.d(TAG + "Restarting camera", ""+frontCameraId);
}

现在,相机会在发生这种情况时冻结。我已经在一些地方看到我应该将cameraParameter设置为“camera-id”,但这对我没用,我发现没有文档支持这个。

2 个答案:

答案 0 :(得分:1)

我只是在switch back/front camera on fly的帮助下实现这一点,希望它也能为您提供帮助。

答案 1 :(得分:0)

切换相机时,需要再次设置PreviewDisplay和PreviewListener(如此答案所示:how to switch between front and back camera when using MediaRecorder android),因为您正在创建一个新的Camera对象:

mCamera = Camera.open(frontCameraId);
// added code 
mCamera.setPreviewDisplay([reference to your SurfaceHolder object]);
mCamera.setPreviewCallback([reference to your Camera.PreviewCallback object]);
// end added code
mCamera.startPreview();
Log.d(TAG + "Restarting camera", ""+frontCameraId);