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
Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

  • Pingback: Google()

  • http://andrewq.netau.net Andrew

    Thank you! This was very helpful.

  • Jacob

    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!

  • Danilo

    the app run but the flash don’t work

  • vaibhav

    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

  • http://no alina

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

  • http://no alina

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

  • http://firefightinggear.org memorial day picnic recipes

    Good answer back in return of this query with solid arguments and describing the whole thing concerning that.

  • http://indalotapasmadrid.com Help Desk Support Software

    What’s up friends, how is everything, and what you want to say concerning this piece of writing, in my view its in fact awesome designed for me.

  • choe yong seok

    really thanks for your help ;)

  • Nidia Dudzik

    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/

  • Lois Langstaff

    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/

  • kiri

    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.

  • ibad ur rahman

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

  • Mathew

    Hi,

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

  • Pingback: Android : How To Check If Device Has Camera « JAVAPAGES 4 ALL()

  • Pingback: How i make blink flash camera light on/off in android? : Android Community - For Application Development()

  • Sabbib

    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

  • khaleel D Tonnimeeran

    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.!

  • Sabba

    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: http://www.mkyong.com/android/how-to-turn-onoff-camera-ledflashlight-in-android/

    I hope to hear from you soon,
    thanks.

    • Sabba

      Udhay solved my problem thanks anyway!

  • vikram raj

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

  • Rohit

    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

  • Ahmad

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

  • http://android.programmerguru.com/ Udhay

    I would like to say thank you for the wonderful explanation. I have created simple ‘Torch’ application using the same idea here:
    http://android.programmerguru.com/android-flashlight-example/

    • Sabba

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

  • http://mobilethemesworld.net/ MobileThemesWorld

    Thanks for sharing this tutorial

  • Anthony J.

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

  • Ben

    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?

  • mac

    sorry for last comment :) just imported the wrong package.

  • mac

    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?

  • Pingback: Android : how to check if device has camera()

  • http://| Daniel

    Thx for another Android Tut!!!

    keep em coming… Planning to start going over them all… :D