The Problem
The CameraX library goes a long way towards making the camera API’s in Android bearable to work with.
However, it’s a relatively new library at the time of writing this article, the documentation is somewhat lacking, and the API changes frequently.
A question I’ve seen pop up a few times is: How do I toggle the flash mode?
The Solution
If you’ve followed a tutorial, you should end up with
an ImageCapture
object, typically configured something like this:
imageCapture = ImageCapture.Builder()
.setFlashMode(ImageCapture.FLASH_MODE_AUTO)
.setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
.setTargetAspectRatio(aspectRatio)
.setTargetRotation(rotation)
.build()
As you can see, setting the flash mode at this point is trivial.
To change the flash mode, you need to use:
imageCapture.flashMode = ImageCapture.FLASH_MODE_OFF
Typically, you can do this in the OnClickListener
of a button.