【问题标题】:CameraX Flash IssueCameraX 闪光灯问题
【发布时间】:2021-08-04 05:53:52
【问题描述】:

这是一个奇怪的问题。我不知道这是库中的错误还是什么。所以问题出在相机的闪光灯上。

我分配了一个全局变量 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 ,但是闪光灯也没有打开。但是如果我将全局变量设置为

private var flashMode: Int = ImageCapture.FLASH_MODE_ON

然后它就可以工作了,并且打开了闪光灯。 我已经尝试过在我以前的项目中设置 Flash On 后将其设置为 FlashModeOff 的上述方法,并且效果很好。但这一次我无法理解出了什么问题。 提前致谢

【问题讨论】:

    标签: android android-camera android-camerax


    【解决方案1】:

    尝试改变闪光模式

    imageCapture.flashMode = ImageCapture.FLASH_MODE_ON
    

    而不是

    flashMode = ImageCapture.FLASH_MODE_ON
    

    【讨论】:

      【解决方案2】:

      我用的是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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-02
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 2020-09-07
        • 1970-01-01
        相关资源
        最近更新 更多