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