2012-05-12 55 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