0

我有一个“据说”在不同 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() 中。不确定这是否有帮助?

4

2 回答 2

2

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

于 2012-05-12T20:11:59.310 回答
0

您的某些文本以错误的方式出现。例如,您测试 FLASH_MODE_AUTO,然后将 setText 设置为“ON”。您测试 FLASH_MODE_TORCH,然后将文本设置为“AUTO”。在继续之前,您可能需要清除它。然后在程序执行时跟踪程序。

于 2012-05-12T08:47:48.000 回答