繁体   English   中英

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

[英]disable autofocus in android camerax (camera 2)

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

如果您真的想关闭自动对焦,您可以在 CameraX 上使用Camera2CameraControl class 执行此操作。 为此,您必须首先将您需要的用例绑定到导致Camera object 的生命周期,然后您可以使用该相机 object 来获取CameraControl object,然后让您使用它来设置焦点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”版本上测试的。

我用

disableAutoCancel()

使用 cameraX 1.0.0。 相机对焦一次然后保持锁定,自动对焦不会每隔 X 秒重新启动一次,所以像

    val autoFocusAction = FocusMeteringAction.Builder(
                    autoFocusPoint,
                    FocusMeteringAction.FLAG_AF or
                            FocusMeteringAction.FLAG_AE or
                            FocusMeteringAction.FLAG_AWB
                ).apply {
                            disableAutoCancel()      
                    }
                }.build()
    
myCameraControl!!.startFocusAndMetering(autoFocusAction)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM