2014-02-26 51 views
2

我已經創建了一個可行的辦法,所以我可以檢測哪些參數適合每個電話用一個簡單的列表。雖然現在當我運行它擊碎,檢測拍照手機參數

public void turnOn() {

在這條線:List<String> flashMods = params.getSupportedFlashModes();

    if (flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO)) { 

        params = mCamera.getParameters(); 
        params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 
        mCamera.setParameters(params); 
        mCamera.startPreview(); 
        on = true; 
        Toast.makeText(getApplicationContext(), 
          "2", 
          Toast.LENGTH_SHORT).show(); 
        } 
        if(flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_ON)) { 

         params = mCamera.getParameters(); 
         params.setFlashMode(Camera.Parameters.FLASH_MODE_ON); 
         mCamera.setParameters(params); 
         mCamera.startPreview(); 
         on = true; 
        Toast.makeText(getApplicationContext(), 
          "3", 
          Toast.LENGTH_SHORT).show(); 
         } 
        if(flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)) { 

         params = mCamera.getParameters(); 
         params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); 
         mCamera.setParameters(params); 
         mCamera.startPreview(); 
         on = true; 

        Toast.makeText(getApplicationContext(), 
          "4", 
          Toast.LENGTH_SHORT).show(); 
         } 
        if(flashMods.contains(android.hardware.Camera.Parameters.FLASH_MODE_RED_EYE)) { 

         params = mCamera.getParameters(); 
         params.setFlashMode(Camera.Parameters.FLASH_MODE_RED_EYE); 
         mCamera.setParameters(params); 
         mCamera.startPreview(); 
         on = true; 
        Toast.makeText(getApplicationContext(), 
          "5", 
          Toast.LENGTH_SHORT).show(); 
         } 
      } 

    } 

提前感謝!

回答

0

是否啓用了許可 「CAMERA」?

你有沒有指定的params對象 - 它可能爲空。

我不喜歡這樣(在單/ C#,而不是Java恐怕):

private void SetUpCamera() 
    { 
     if (m_camera == null) 
      m_camera = Android.Hardware.Camera.Open(); 

     var holder = m_surface.Holder; 
     holder.AddCallback(this); 
     holder.SetType(Android.Views.SurfaceType.PushBuffers); 
     SetCameraDisplayOrientation(); 
     GetSurfaceSize(m_camera.GetParameters()); 
     GetFlashModes(m_camera.GetParameters()); 

    } 

則:

private void GetFlashModes(Android.Hardware.Camera.Parameters parameters) 
    { 
     IList<String> flashModes = parameters.SupportedFlashModes; 

     m_flashModes = new List<string>(); 

     if (flashModes == null)//not supported 
      return; 

     foreach (string mode in flashModes) 
      m_flashModes.Add(mode); 

     if (m_currentMode != null)//mode has been saved, need to set it to this mode 
      SetFlashMode(m_currentMode); 
     else 
      m_currentMode = GetFlashMode(); 
    } 
+0

是,他們兩人的 –

+0

您可能需要啓用FLASHLIGHT權限也是如此。 –

+0

我的表現,我的權限是好的,我相信,因爲如果我每次運行和個人獨此參數的無陣列的工作很好,但我想覆蓋所有的可能性 –