首页 > 解决方案 > 在android camerax(相机2)中禁用自动对焦

问题描述

我正在扫描条形码的项目中,所以我想禁用自动对焦以提高性能。我尝试了很多方法,但它根本不起作用。谁能给我一些帮助?谢谢你。

标签: androidbarcode-scannerandroid-camera2android-camerax

解决方案


如果你真的想关掉AF,你可以在CameraX上用这个Camera2CameraControl类来做。为此,您必须首先将所需的用例绑定到生成Camera对象的生命周期,然后您可以使用该相机对象来获取CameraControl对象,然后使用它来实例化 a Camera2CameraControl,这样您就可以将焦点模式设置为CameraMetadata.CONTROL_AF_MODE_OFF.

    val camera : Camera = cameraProvider.bindToLifecycle(
                        this,
                        cameraSelector,
                        imagePreview,
                        imageCapture,
                        imageAnalysis
                    )
    
    val cameraControl : CameraControl = camera.cameraControl
    val camera2CameraControl : Camera2CameraControl = Camera2CameraControl.from(cameraControl)
    
    //Then you can set the focus mode you need like this
    val captureRequestOptions = CaptureRequestOptions.Builder()
                .setCaptureRequestOption(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_OFF)
                .build()
            camera2CameraControl.captureRequestOptions = captureRequestOptions

这是在最新的 CameraX 的“1.0.0-rc03”版本上测试的。


推荐阅读