2013-02-15 2 views
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», но это не сработало для меня, и я не нашел документации, подтверждающей это.

ответ

0

При переключении камер, вам необходимо настроить PreviewDisplay и PreviewListener снова (как видно на этот ответ: how to switch between front and back camera when using MediaRecorder android), так как вы создаете новый объект камеры:

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); 
Смежные вопросы