user1909897
user1909897

Reputation: 61

How i make blink flash camera light on/off in android?

How i make blink flash camera light on/off?I try this with for loop but no work...freeze... Why?Need alarm manager?Thread runnable post delayed?

 for(int i=0;i<5;i++){
    flashon();
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    flashoff();
    }       
 }

   public void flashon(){
   camera = Camera.open();
   Parameters p = camera.getParameters();
   p.setFlashMode(Parameters.FLASH_MODE_TORCH);
   camera.setParameters(p);
   camera.startPreview();
}

Upvotes: 2

Views: 5349

Answers (3)

Sachin Suryavanshi
Sachin Suryavanshi

Reputation: 128

try following code.It will work as I too faced similar situation and following code worked for me.

 private boolean isFlashOn;
 private Camera camera;
 Parameters params;

 private void turnOnFlash() {
    if (!isFlashOn) {
        if (camera == null || params == null) {
            return;
        }

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(params);
        camera.startPreview();
        isFlashOn = true;


    }

}

private void turnOffFlash() {
    if (isFlashOn) {
        if (camera == null || params == null) {
            return;
        }

        params = camera.getParameters();
        params.setFlashMode(Parameters.FLASH_MODE_OFF);
        camera.setParameters(params);
        camera.stopPreview();
        isFlashOn = false;

    }
}

 public void flash_effect() throws InterruptedException
{

    Thread a = new Thread()
    {
        public void run()
        {
          for(int i =0; i < 50; i++)
            {

                turnOnFlash();
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                turnOffFlash();
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }

            }
        }
    };

    a.start();
}

Upvotes: 1

Mohsin Naeem
Mohsin Naeem

Reputation: 12642

you need to use Handler

Handler handler;
boolean isFlashon=false;
handler = new Handler();
    handler.removeCallbacks(toggleFlash);
    handler.postDelayed(toggleFlash, 1000 * 60);

and

private Runnable toggleFlash = new Runnable() {
    public void run() {
        if(isFlashon)
        {
            //do Flash off
            isFlashon=false;
        }
        else
        {
            //do Flash on
            isFlashon=true;
        }
        handler.postDelayed(this, 1000 * 60);
    }
};

Upvotes: 2

NagarjunaReddy
NagarjunaReddy

Reputation: 8645

1.Turn on

camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();

2. Turn off

camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();

And, put following permission on AndroidManifest.xml.

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

see this one http://www.mkyong.com/android/how-to-turn-onoff-camera-ledflashlight-in-android/

Upvotes: 0

Related Questions