How to turn on/off camera LED / flashlight in Android

In this tutorial, we show you how to turn on/off the phone camera led or flashlight in Android. See code snippets :

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" />

P.S This project is developed in Eclipse 3.7, and tested with Samsung Galaxy S2 (Android 2.3.3).

1. Android Layout

A button only.

File : res/layout/main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/buttonFlashlight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       	android:layout_centerVertical="true"
       	android:layout_centerHorizontal="true"
        android:text="Torch" />

</RelativeLayout>

2. Activity

Read the code, a button to turn on / off the flashlight, it should be self-explanatory.


package com.mkyong.android;

import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class FlashLightActivity extends Activity {

	//flag to detect flash is on or off
	private boolean isLighOn = false;

	private Camera camera;

	private Button button;

	@Override
	protected void onStop() {
		super.onStop();

		if (camera != null) {
			camera.release();
		}
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		button = (Button) findViewById(R.id.buttonFlashlight);

		Context context = this;
		PackageManager pm = context.getPackageManager();

		// if device support camera?
		if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
			Log.e("err", "Device has no camera!");
			return;
		}

		camera = Camera.open();
		final Parameters p = camera.getParameters();

		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {

				if (isLighOn) {

					Log.i("info", "torch is turn off!");

					p.setFlashMode(Parameters.FLASH_MODE_OFF);
					camera.setParameters(p);
					camera.stopPreview();
					isLighOn = false;

				} else {

					Log.i("info", "torch is turn on!");

					p.setFlashMode(Parameters.FLASH_MODE_TORCH);

					camera.setParameters(p);
					camera.startPreview();
					isLighOn = true;

				}

			}
		});

	}
}

3. Android Permission

Assign CAMERA permission.

File : AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mkyong.android"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />

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

    <application
        android:debuggable="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".FlashLightActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

4. Demo

None, until i have 2nd hand phone to capture the current flashlight on my phone 🙂

Download Source Code

Download it – Android-LED-FlashLight-Example.zip (16 KB)

References

  1. Android Camera Javadoc
  2. Android camera Parameters Javadoc

42 comments on “How to turn on/off camera LED / flashlight in Android

  1. when we open the flashlight , camera is blocked ..
    how can I open flashlight and camera at same Time ?

    Reply
  2. Hello sir
    How to make online examination system in android.
    Please help me

    Reply
  3. please am having some little problem in my coding i don’t know if it is from my android studio setup or the way i code it,
    if i type in your code by my self into my androidManifest.xml it will show me red on some code saying can not resolve
    it happen on this codes:
    camera = Camera.open();
    final Parameters p = camera.getParameters();

    p.setFlashMode(Parameters.FLASH_MODE_OFF);
    camera.setParameters(p);
    camera.stopPreview();

    the .open(), .getParameters(), .setParameters();, .stopPreview();
    this are the code that will be coloured with red saying can not be resolve etc
    and if i copy past it they will all be OK. but the R will be saying can not be resolve why
    please and solution.

    Reply
    1. May be u’ll need to import the camera class file., then all of its methods can be resolved.

      Reply
  4. When i go back from the application of flashlight the light will by still be ON (i mean to say that torch app will still be running in the background).How to stop this session when i go back from this app?

    Reply
  5. Could I use this for a front facing camera to show the LED Lights for notifications instead?

    Reply
  6. I could be wrong, but it looks like the code has a logic flaw. When it starts, it sets isLightOn to false (it assumes the light is off), and when it stops it does not turn off the light. So, if you turn on the light, then go to the Android home screen without turning off the light, then start the app again, there is no way to turn off the light. I think it would be better to set isLightOn when the app starts based on the results of p.getFlashMode().

    Reply
  7. Thank you for creating this tutorial. It’s my first app (besides “hello world”). It works well on my Galaxy S2.

    Reply
  8. Alright I’m Just done with this. I don’t know how to use that codeing
    I have a keyonca echoand when I try a flashlight
    App it just flashes. I need a constant beam not a strobe!

    Reply
  9. How to turn flash led without opening camera ..
    Actually i am making an led torch app in android and i want to turn flash on without opening camera so is it possible to make such an app???

    Waiting for ur reply
    Thanxx

    Reply
  10. I have to turn on camera flash using openCV. I need to use NativeCameraView but it doesn’t work.

    Reply
  11. can I open the flash using NativeCameraView in opencv? I tried but it doesn’t work.

    Reply
  12. If you have recently lost or broke a flashlight, or if you are in the market for a new, better brand, then you are probably facing a lot of decisions about what kind of flashlight to purchase, and what will work best for your various needs. LED flashlights have risen in popularity, as have batteryless flashlights. :”

    With best thoughts
    <http://www.melatoninfaq.com/

    Reply
  13. The digital age has taken the world by storm, with the introduction of the camera phone, photo digital imagery tools are at the fingertips of consumers today because they are built-in to low end and high end styled cellular devices that are the rage with American all over the country.’

    Go and visit our very own website too
    <".http://www.caramoanpackage.com/caramoan-tour/

    Reply
  14. Hi,
    I am new to android and have an issue with my GT-N7100 phone that force closes whenever I start the camera app. Any camera flashlight app also does not run and closes with error. I believe some app or firmware is missing or corrupted on my phone. Code to check camera firmware version also force closes with error. Since you seem to be an expert on the android environment, was wondering if you could help point me to where to looks for the necessary files to be able to operate the camera and flash. Thanks in advance.

    Reply
  15. Not work on Samsung glaxay. not the torch is on and not off. just a buuton on screen is show.

    Reply
  16. Hi,

    I have noticed that method does not working on Motorola Razr/Droid Razr under ICS.
    Any ideas how to fix it?

    Reply
  17. Hi i tried this on both avd and my galaxy s3. In my s3 it doesn’t install. and in the avd it doesn’t support flashlight. my s3 is 4.0.4, i adjusted the minSDK to 13 and Target to 14, still doesnt install. what am I doing wrong

    Reply
  18. Really u r an expert who can solve mind blowing problems.. I will keep asking u more stuff in the future.. Thank u for ur support.!

    Reply
  19. Hello Mkyong;
    Please contact me 🙂
    I have tried my best to follow your tutorial about using the camera LED as a flashlight but the problem I am having is with the device support, I would like for it to being once the user has clicked the torch. By default the code you have made checks to see if the device has a LED as soon as the application begins which isn’t my objective, could you please tell me how I could make an alert message for users that don’t have a built-in LED as soon as they have clicked the button “torch”..? I am totally hopeless at java & I know that you’re a busy person but this needs to be resolved urgently. If you would like more detailed information about the problem please send me a message through Facebook, I would more then happy to provide you with a short video of the application running on a real device which could explain the problem in more depth.

    Here is the tutorial page that I am having trouble with: https://mkyong.com/android/how-to-turn-onoff-camera-ledflashlight-in-android/

    I hope to hear from you soon,
    thanks.

    Reply
  20. i get error when i run this application in emulator that unfortunatly FlashCamera has stopped…
    please help me to solve this……..

    Reply
  21. hi..can u plz tell me how to create a widget for flashlight that works in all phones
    i made one but its only working in samsung handsets not in lg..
    plz help me

    Reply
  22. You are an expert
    This is the shortest and simplest code Ever for a flashlight
    THANK YOU !!!!!!!!!!

    Reply
    1. Hi Udhay thanks so much for uploading that, I have spent hours trying to solve a problem that you managed to complete.. thanks dude 😀 you have saved my ass.

      Reply
  23. This is good stuff! Worked flawlessly on HTC Inspire 4G

    Reply
  24. Hi,

    this code does not work with Android 4.0.4 and Nexus S i9020xxki1.

    any suggestions how i get the torch work on these phones and android version?

    Reply
  25. sorry for last comment 🙂 just imported the wrong package.

    Reply
  26. Hi i tried ur code but i am getting error with camera variable as i am not able to found any of these methods: camera.release(); , Camera.open(); , camera.getParameters(); camera.setPreview(P); and camera.stopPreview();

    Couldn’t see these .release , .stopPreview e.t.c methods

    Guess some sort of type-casting will help here.

    Any idea?

    Reply
    1. Even I am getting the same error… In eclipse it suggests me to use restore()

      Reply
      1. Oh… Just now the above issue got solved. While we import Camera in eclipse, we should import android.hardware.camera instead of android.graphics.camera

        Thanks,

        Reply
  27. Thx for another Android Tut!!!

    keep em coming… Planning to start going over them all… 😀

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *