How to Implement FlashToggle button in the camera app using cameraX?

602 Views Asked by At

How to Implement FlashToggle button in the camera app using cameraX? The flashlight should work properly along with the camera?

 @RequiresApi(Build.VERSION_CODES.M)
private fun toggleFlash()
{
    if(flash_toggle.isChecked)
    {
        try {
            cameraManager.setTorchMode(getCameraID, true)
        }
        catch(e: CameraAccessException){
            e.printStackTrace()
        }
    }
    else{
        try {
    cameraManager.setTorchMode(getCameraID,false)
        }
        catch(e: CameraAccessException){
            e.printStackTrace()
        }
    }
}

I Have used this but it only works when camera is off?

1

There are 1 best solutions below

0
Raz Leshem On BEST ANSWER

If you want to use a flash when capturing an image you can use:

imageCapture.flashMode = ImageCapture.FLASH_MODE_ON for flash on

imageCapture.flashMode = ImageCapture.FLASH_MODE_OFF for flash off

imageCapture.flashMode = ImageCapture.FLASH_MODE_AUTO for flash auto

If you want to use the torch(flashlight), you can use:

// Enable torch
camera.cameraControl.enableTorch(true)

// Disable torch
camera.cameraControl.enableTorch(false)

Enable torch only after binding use cases.

To obtain the Camera instance use:

camera = cameraProvider.bindToLifecycle(...)