android - 在android camerax(相机2)中禁用自动对焦
问题描述
我正在扫描条形码的项目中,所以我想禁用自动对焦以提高性能。我尝试了很多方法,但它根本不起作用。谁能给我一些帮助?谢谢你。
解决方案
如果你真的想关掉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”版本上测试的。
推荐阅读
- javascript - Gatsby Remark 用于画廊、视频、学分等的边车文件?
- php - PHP将值推送到键的子数组中
- java - 在使用 java 的电梯系统方面需要帮助
- javascript - HTTP 代码 400 将 Javascript POST 转换为 Python POST
- c# - 为什么WebBrowser获取手机屏幕大小,获取电脑屏幕大小需要设置属性吗?
- java - 如何捕获异常并且不停止代码执行
- rust - 为什么我不能从函数返回 Vec<&str>?
- laravel - “找不到类 'App\Controllers\controller'”
- python - 每当我与 pycrypto 一起使用时,它都会删除文件
- entity-framework - 如何停止或应对超时最大池大小达到异常?