CameraX 闪光灯问题

CameraX Flash Issue

这是一个奇怪的问题。不知道是BUG还是库的问题,所以是camerax闪光灯的问题。

我分配一个全局变量flashMode

    private var flashMode: Int = ImageCapture.FLASH_MODE_OFF

然后将其设置为 ImageCaptureBuilder


        imageCapture = ImageCapture.Builder()
            .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
            .setTargetAspectRatio(screenAspectRatio)
            .setFlashMode(flashMode)
            .setTargetRotation(rotation)
            .build()

拍照前我打开了闪光灯

if (camera?.cameraInfo?.hasFlashUnit() == true) {
   flashMode = ImageCapture.FLASH_MODE_ON
}

但这并没有打开相机闪光灯,而是将 flashMode 值设置为 1,即 ImageCapture.FLASH_MODE_ON(我通过日志记录检查)。在捕获图像之前,我再次记录并检查了该值flashMode 是 1 ,但是如果我将全局变量设置为

,闪光灯也不会转动 on.But
private var flashMode: Int = ImageCapture.FLASH_MODE_ON

然后就可以使用了,闪光灯也打开了。 在我之前的项目中,我已经尝试过将 Flash On post 设置为 FlashModeOff 的上述方法,并且效果很好。但是这次我无法理解哪里出了问题。 提前致谢

我正在使用 JAVA

private void ativarFlash() {
    ic_flash.startAnimation(animationDown);
    if (flashMode == FlashMode.ON) {
        flashMode = FlashMode.OFF;
    } else {
        flashMode = FlashMode.ON;
    }

    startCamera();
}

然后 startCamera();

private void startCamera() {

    CameraX.unbindAll();
    preview = setPreview();
    imageCapture = setImageCapture();
    //bind to lifecycle:
    CameraX.bindToLifecycle(this, preview, imageCapture);
    ivBitmap.setImageDrawable(null);
}

尝试使用

更改闪光灯模式
imageCapture.flashMode = ImageCapture.FLASH_MODE_ON

而不是

flashMode = ImageCapture.FLASH_MODE_ON