在androidcamerax(相机2)中禁用自动对焦

1 android barcode-scanner android-camera2 android-camerax

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

JMa*_*nez 5

如果您确实想关闭自动对焦,您可以在 CameraX 上通过Camera2CameraControl类执行此操作。为此,您必须首先将所需的用例绑定到生成对象的生命周期Camera,然后您可以使用该相机对象来获取该CameraControl对象,然后使用它来实例化 ,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
Run Code Online (Sandbox Code Playgroud)

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