2017-08-04 27 views
0

我正在開發一個小型相機應用程序。CameraView不切換

細節:,開關從回 到前面的相機視圖再次備份

我已經浮動動作按鈕。我有一個以上的按鈕,所以我在我的onClick方法中有一個 switch語句。

問題:

我用if語句和整數來確定照相機是 是否面向後面或前面。 (理論上它應該工作,對不對?)但是當我運行它時,按鈕的圖標改變,這應該是 伴隨着相機視圖的改變。此外, 點擊一次後,它卡住了,我不能改回它。

注:我用Flurge camerKit庫訪問攝像機。

任何人都可以指導我什麼是我的代碼錯了嗎?

在此先感謝!

這裏是我的代碼:

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 

     case R.id.floatingActionButton2: 
      mDrawerLayout.openDrawer(Gravity.LEFT); 
      break; 

     case R.id.frontcam: 

      if ((cameraFront % 2) == 0){ //by default int cameraFront = 1 

       cameraView.setFacing(CameraKit.Constants.FACING_FRONT); 
       frontCamera.setImageResource(R.mipmap.ic_camera_front_white_24dp); 
       break; 

      } 

      else { 

       cameraView.setFacing(CameraKit.Constants.FACING_BACK); 
       frontCamera.setImageResource(R.mipmap.ic_camera_rear_white_24dp); 
       break; 

      } 

//more code stuff 

} 
} 

回答

0
private int getFrontCameraID() { 
    PackageManager pm = getActivity().getPackageManager(); 
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)) { 
     return CameraInfo.CAMERA_FACING_FRONT; 
    } 
    return getBackCameraID(); 
} 

按鈕呼叫點擊

public void onClick(View v) { 
      if (mCameraID == CameraInfo.CAMERA_FACING_FRONT) { 
       mCameraID = getBackCameraID(); 
      } else { 
       mCameraID = getFrontCameraID(); 
      } 
      restartPreview(); 
     } 
    }); 

    private void restartPreview() { 
    try { 
     if (mCamera != null) { 
      stopCameraPreview(); 
      mCamera.release(); 
      //mCamera = null; 
     } 
     getCamera(mCameraID); 
     startCameraPreview(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
}