2013-02-15 656 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),因爲你正在創建一個新的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); 
相關問題