Android:切换按钮(允许多次点击)

时间:2012-05-12 08:11:46

标签: java android if-statement toggle android-camera

我有一个按钮,据说"在不同的if语句之间切换,但我没有正确地得到它。该按钮应该通过不同的相机闪光状态(ON / AUTO / OFF / TORCH),但它只通过其中一个状态,然后不通过其余状态。按钮是否正确?或者是否有不同的切换按钮?

   //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();

            // TODO Auto-generated method stub
            if(p.getFlashMode() == android.hardware.Camera.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() == android.hardware.Camera.Parameters.FLASH_MODE_OFF){
                p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                mCamera.setParameters(p);
                mCamera.release();
                mCamera=null;
                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.e("Torch","MODE ON");

            }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.e("Torch","MODE AUTO");

            }           
        }

所以基本上,它只进入FLASH_MODE_AUTO,然后按钮不再起作用。我的if语句是否正确?提前谢谢!

更新:

这是在我的onCreate()中。不确定这是否有帮助?

2 个答案:

答案 0 :(得分:2)

不确定这是否有帮助,但尝试使用“equals(String)”而不是“==”来表示所有条件。

答案 1 :(得分:0)

你的一些文字是错误的。例如,您测试FLASH_MODE_AUTO然后将setText测试为“ON”。您测试FLASH_MODE_TORCH然后将文本设置为“AUTO”。在继续之前,您可能想要清除它。然后在执行时跟踪程序。