Reputation: 61
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
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
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
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