How to turn on front flash light programmatically in Android?

ghz 1years ago ⋅ 10125 views

Question

I want to turn on front flash light (not with camera preview) programmatically in Android. I googled for it but the help i found referred me to this page

Does anyone have any links or sample code?


Answer

For 2021, with CameraX, it is now dead easy: https://stackoverflow.com/a/66585201/294884


For this problem you should:

  1. Check whether the flashlight is available or not?

  2. If so then Turn Off/On

  3. If not then you can do whatever, according to your app needs.

For Checking availability of flash in the device:

You can use the following:

 context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

which will return true if a flash is available, false if not.

See:
http://developer.android.com/reference/android/content/pm/PackageManager.html for more information.

For turning on/off flashlight:

I googled out and got this about android.permission.FLASHLIGHT. Android manifests' permission looks promising:

 <!-- Allows access to the flashlight -->
 <permission android:name="android.permission.FLASHLIGHT"
             android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
             android:protectionLevel="normal"
             android:label="@string/permlab_flashlight"
             android:description="@string/permdesc_flashlight" />

Then make use of Camera and set Camera.Parameters. The main parameter used here is FLASH_MODE_TORCH.

eg.

Code Snippet to turn on camera flashlight.

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

Code snippet to turn off camera led light.

  cam.stopPreview();
  cam.release();

I just found a project that uses this permission. Check quick-settings' src code. here http://code.google.com/p/quick-settings/ (Note: This link is now broken)

For Flashlight directly look <http://code.google.com/p/quick- settings/source/browse/trunk/quick-settings/#quick- settings/src/com/bwx/bequick/flashlight> (Note: This link is now broken)

Update6 You could also try to add a SurfaceView as described in this answer [LED flashlight on Galaxy Nexus controllable by what API?](https://stackoverflow.com/questions/8876843/led-flashlight-on-galaxy- nexus-controllable-by-what-api/9379765#9379765) This seems to be a solution that works on many phones.

Update 5 Major Update

I have found an alternative Link (for the broken links above): <http://www.java2s.com/Open-Source/Android/Tools/quick- settings/com.bwx.bequick.flashlight.htm> You can now use this link. [Update: 14/9/2012 This link is now broken]

Update 1

Another OpenSource Code : http://code.google.com/p/torch/source/browse/

Update 2

Example showing how to enable the LED on a Motorola Droid: http://code.google.com/p/droidled/

Another Open Source Code :

http://code.google.com/p/covedesigndev/
http://code.google.com/p/search-light/

Update 3 (Widget for turning on/off camera led)

If you want to develop a widget that turns on/off your camera led, then you must refer my answer [Widget for turning on/off camera flashlight in android](https://stackoverflow.com/questions/7515309/widget-for-turning-on- off-camera-flashlight-in-android/8257771#8257771.).

Update 4

If you want to set the intensity of light emerging from camera LED you can refer [Can I change the LED intensity of an Android device?](https://stackoverflow.com/questions/5970188/can-i-change-the-led- intensity-of-an-android-device) full post. Note that only rooted HTC devices support this feature.

** Issues:**

There are also some problems while turning On/Off flashlight. eg. for the devices not having FLASH_MODE_TORCH or even if it has, then flashlight does not turn ON etc.

Typically Samsung creates a lot of problems.

You can refer to problems in the given below list:

[Use camera flashlight in Android](https://stackoverflow.com/questions/5503480/use-camera-flashlight-in- android)

[Turn ON/OFF Camera LED/flash light in Samsung Galaxy Ace 2.2.1 & Galaxy Tab](https://stackoverflow.com/questions/6939816/turn-on-off-camera-led-flash- light-in-samsung-galaxy-ace-2-2-1-galaxy-tab)