0

I'm using the LogCat to display my values, but its not working through my if statements?

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

            }   */      
        }

I'm getting MODE AUTO: off,auto (within my onCreate) and MODE: off,off (within the onClick). These are my tests, so in theory, if my onCreate is off,auto then it should pass through if(p.getFlashMode() == Parameters.FLASH_MODE_OFF), but its not?

Any reason why its not going through my if statements?

Thanks in advance

hellomello
  • 8,219
  • 39
  • 151
  • 297

1 Answers1

2

Camera.Parameters.FLASH_MODE_ON , Camera.Parameters.FLASH_MODE_OFF are Strings.(here) You need to compare using equals().

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

Kazekage Gaara
  • 14,972
  • 14
  • 61
  • 108
  • Hey Hi I set flash mode to Camera.Parameters.FLASH_MODE_ON and it is supported flash mode but it is not showing flash on some devices like LG Optimus and Motorolla. If you know any thing about this Please help me? – Vikram Aug 31 '12 at 12:06
  • You should also check whether flashlight supported and then get ListOf supported flashModes .see http://stackoverflow.com/a/30055092/3496570 – Zar E Ahmer May 05 '15 at 14:17