2017-02-08 2 views
0

Я пытаюсь переключить камеру в андроидеВыключатель заднего и передняя камера в андроиде

private Camera mCamera=null; 
private CameraPreview mPreview; 
public FrameLayout preview; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.camera_preview); 
    View myView= (View) findViewById(R.id.camera_previeww); 

    cameraID= Camera.CameraInfo.CAMERA_FACING_FRONT; 
    mCamera=openCamera(cameraID); 
    mCamera.startPreview(); 

    // Create our Preview view and set it as the content of our activity. 
    mPreview = new CameraPreview(this, mCamera); 
    FrameLayout preview = (FrameLayout) this.findViewById(R.id.camera_previeww); 
    preview.addView(mPreview); 
} 


public void switchCamera(){ 

    mCamera.stopPreview(); 
    releaseCamera(); 
    if (cameraID==Camera.CameraInfo.CAMERA_FACING_BACK){ 
     cameraID=Camera.CameraInfo.CAMERA_FACING_FRONT; 
    }else{ 
     cameraID=Camera.CameraInfo.CAMERA_FACING_BACK; 
    } 

    mCamera=openCamera(cameraID); 
    mCamera.startPreview(); 

    mPreview = new CameraPreview(this, mCamera); 
    preview = (FrameLayout) this.findViewById(R.id.camera_previeww); 
    preview.addView(mPreview); 


} 
public Camera openCamera(int cameraIDD){ 
    Camera c=null; 
    try{ 
     c=Camera.open(cameraIDD); 
    }catch (Exception e){ 
     Log.d("Camera Activity", e.getMessage()); 
    } 
    return c; 

} 
} 

private void releaseCamera(){ 
    if (mCamera != null){ 
     mCamera.release();  // release the camera for other applications 
     mCamera = null; 
    } 
} 

Когда я называю switchCamera() метода моего приложения получает stucked показывает мне последнее изображение доступного, прежде чем я называю switchCamera. и, очевидно, переключатель не завершен. Что я не так?

+0

Возможный дубликат [Android: Переключение камеры при нажатии кнопки щелкнул] (http://stackoverflow.com/questions/16765527/android-switch-camera-when-button-clicked) –

+0

Обратите внимание: код указан неверно. Целочисленный индекс, используемый для 'Camera.open()', является ***, а не *** одной из констант в классе Camera.CameraInfo. –

ответ

1

Просто изменение:

CameraPreview mPreview = new CameraPreview(this, mCamera); 
    preview = (FrameLayout) this.findViewById(R.id.camera_previeww); 
    preview.removeAllViews(); 
    preview.addView(mPreview); 
+0

Спасибо большое! он работает –

+1

Просто удалите представления из FrameLayout, прежде чем добавить еще один – mychemicalro

Смежные вопросы