如何使用 cameraX 在相机应用程序中实现 FlashToggle 按钮?

Posted

技术标签:

【中文标题】如何使用 cameraX 在相机应用程序中实现 FlashToggle 按钮?【英文标题】:How to Implement FlashToggle button in the camera app using cameraX? 【发布时间】:2021-11-21 00:52:37 【问题描述】:

如何使用 cameraX 在相机应用中实现 FlashToggle 按钮? 手电筒应该和相机一起正常工作吧?

 @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()
        
    

我用过这个,但它只有在相机关闭时才有效?

【问题讨论】:

【参考方案1】:

如果您想在拍摄图像时使用闪光灯,您可以使用:

imageCapture.flashMode = ImageCapture.FLASH_MODE_ON 开启闪光灯

imageCapture.flashMode = ImageCapture.FLASH_MODE_OFF 闪光关闭

imageCapture.flashMode = ImageCapture.FLASH_MODE_AUTO 自动闪光

如果你想使用手电筒(手电筒),你可以使用:

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

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

仅在绑定用例后启用火炬。

要获取Camera 实例,请使用:

camera = cameraProvider.bindToLifecycle(...)

【讨论】:

以上是关于如何使用 cameraX 在相机应用程序中实现 FlashToggle 按钮?的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义表面的 Android CameraX

APP使用相机CameraX

APP使用相机CameraX

直接在应用程序中实现相机

如何解决CameraX闪屏问题

如何在自定义相机中实现“捏放大”