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?
If you’ve followed a tutorial, you should end up with
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.