2012-05-12 88 views
0

我正在使用LogCat來顯示我的值,但它沒有通過我的if語句工作?Android:參數不通過if-else語句?

Parameters p = mCamera.getParameters(); 
    p.setFlashMode(Parameters.FLASH_MODE_OFF); 
    mCamera.setParameters(p); 
    mCamera.startPreview(); 
    Log.d("Torch","MODE AUTO: " + p.getFlashMode() + "," + Parameters.FLASH_MODE_AUTO); 

    //Flash Button 
    final Button flashButton = (Button) findViewById(id.camera_flash); 
    flashButton.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View v) { 
      Parameters p = mCamera.getParameters(); 
      Log.d("Torch","MODE : " + p.getFlashMode() + "," + android.hardware.Camera.Parameters.FLASH_MODE_OFF); 

      // TODO Auto-generated method stub 
      if(p.getFlashMode() == Parameters.FLASH_MODE_ON){ 
       p.setFlashMode(Parameters.FLASH_MODE_OFF); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("Off"); 
       Log.e("Torch","MODE OFF"); 

      }else if(p.getFlashMode() == Parameters.FLASH_MODE_OFF){ 
       p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("TORCH"); 
       Log.e("Torch","MODE TORCH"); 

      }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_AUTO){ 
       p.setFlashMode(Parameters.FLASH_MODE_ON); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("ON"); 
       Log.d("Torch","MODE ON: " + p.getFlashMode() + "," + android.hardware.Camera.Parameters.FLASH_MODE_AUTO); 

      }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_TORCH){ 
       p.setFlashMode(Parameters.FLASH_MODE_ON); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("AUTO"); 
       Log.e("Torch","MODE AUTO"); 

      }/*else 
       p.setFlashMode(Parameters.FLASH_MODE_AUTO); 
       mCamera.setParameters(p); 
       mCamera.startPreview(); 
       flashButton.setText("AUTO"); 
       Log.d("Torch","MODE AUTO: " + p.getFlashMode() + "," + android.hardware.Camera.Parameters.FLASH_MODE_AUTO); 

      } */  
     } 

我得到MODE AUTO: off,auto(我的onCreate內)和MODE: off,off(在的onClick內)。這些都是我的測試,所以從理論上講,如果我的onCreate是off,auto那麼它應該通過if(p.getFlashMode() == Parameters.FLASH_MODE_OFF),但它不是?

爲什麼它沒有通過我的if語句?

在此先感謝

+0

它們是什麼類型?除非它們是原始的或包裝器,否則==不起作用,你需要使用equals()。 –

回答

2

Camera.Parameters.FLASH_MODE_ONCamera.Parameters.FLASH_MODE_OFFStrings。(here) 您需要使用equals()比較。

if(p.getFlashMode().equals(Parameters.FLASH_MODE_ON))

+0

完美!謝謝! – hellomello

+0

嘿,你好我設置閃光模式Camera.Parameters.FLASH_MODE_ON,它支持閃光燈模式,但它並沒有顯示一些設備,如LG Optimus和Motorolla閃光燈。如果您對此有所瞭解請幫助我? – Vikram

+0

您還應該檢查是否支持手電筒,然後獲取ListOf支持的flashModes。請參見http://stackoverflow.com/a/30055092/3496570 – Nepster