You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CameraX API在拍照时保持闪光灯持续常亮?

实现CameraX闪光灯持续常亮的方案

CameraX的ImageCapture类提供的FlashMode.ON仅会在拍摄瞬间触发闪光,若要实现拍照全程闪光灯持续常亮,可通过CameraControl API直接控制闪光灯进入手电筒(Torch)模式,具体实现步骤如下:

  • 获取CameraControl实例
    在CameraX绑定Preview、ImageCapture等用例后,从返回的Camera对象中获取CameraControl:

    val camera = cameraProvider.bindToLifecycle(
        this, CameraSelector.DEFAULT_BACK_CAMERA, preview, imageCapture
    )
    val cameraControl = camera.cameraControl
    
  • 开启持续常亮模式
    调用enableTorch(true)即可让闪光灯保持常亮:

    cameraControl.enableTorch(true)
    
  • 按需关闭常亮(可选)
    若需在拍照完成后关闭闪光灯,可在ImageCapture的回调中处理:

    imageCapture.takePicture(
        ContextCompat.getMainExecutor(this),
        object : ImageCapture.OnImageCapturedCallback() {
            override fun onCaptureSuccess(imageProxy: ImageProxy) {
                // 处理拍摄结果
                cameraControl.enableTorch(false)
                imageProxy.close()
            }
    
            override fun onError(exception: ImageCaptureException) {
                // 处理拍摄错误
                cameraControl.enableTorch(false)
            }
        }
    )
    
  • 额外注意事项

    • 先确认设备后置摄像头支持手电筒功能:
      val hasTorchSupport = cameraProvider.hasCamera(CameraSelector.DEFAULT_BACK_CAMERA) &&
          cameraProvider.getCameraCharacteristics(CameraSelector.DEFAULT_BACK_CAMERA)
              .get(CameraCharacteristics.FLASH_INFO_AVAILABLE) == true
      
    • 开启Torch模式后,无需再设置ImageCapture的FlashMode,避免功能冲突。

内容的提问来源于stack exchange,提问作者Gitahi Ng'ang'a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:01:05