0

我需要在我的应用程序中切换前置和后置摄像头。我的问题是,我可以打开前置摄像头,也可以打开后置摄像头。但是一旦相机已经打开,我就无法切换预览中显示的内容。作为概念证明,我只是想让我已经打开的后置摄像头预览切换到前置。我正在尝试编写一个看起来像这样的方法 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”但这对我不起作用,我发现没有支持这一点的文档。

4

2 回答 2

1

我只是在动态切换后/前摄像头的帮助下实现这一点,希望它也能对你有所帮助。

于 2013-05-24T14:10:32.483 回答
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);
于 2013-02-18T18:46:11.573 回答