Android CameraX 拍照前如何保证对焦? (应该是一个很常用的功能!)
How to ensure focused before taking picture in Android CameraX? (Should be a very commonly used feature!)
我正在使用 CameraX 并想拍照。当然,没有人想要一张模糊的照片,所以我们在拍照之前一定要确保对焦。
第一次尝试:只需调用 takePicture
就像在 official sample 中所做的一样。
问题:我可以切换场景并快速按下拍照按钮。然后,当 takePicture 发生时,相机还没有完成自动对焦。因此,我得到一张模糊的照片:/
第二次尝试:在实际拍照前,先触发对焦,等待对焦完成。
代码如下:
camera!!.cameraControl.startFocusAndMetering(
FocusMeteringAction.Builder(
autoFocusPoint,
FocusMeteringAction.FLAG_AF
).apply {
//focus only when the user tap the preview
disableAutoCancel()
}.build()
)
问题:聚焦需要很长时间(秒!)。用户肯定不能接受。
因此,我想知道我该怎么办?恕我直言,这应该是非常常用的,所以我很惊讶地发现我找不到任何解决方案!我错过了什么吗?
感谢任何建议!
我找到答案了!只需调用 setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
.
原因:看ImageCapture的构造函数:
if (mCaptureMode == CAPTURE_MODE_MAXIMIZE_QUALITY) {
mEnableCheck3AConverged = true; // check 3A convergence in MAX_QUALITY mode
} else {
mEnableCheck3AConverged = false; // skip 3A convergence in MIN_LATENCY mode
}
那个字段:
/**
* A flag to check 3A converged or not.
*
* <p>In order to speed up the taking picture process, trigger AF / AE should be skipped when
* the flag is disabled. Set it to be enabled in the maximum quality mode and disabled in the
* minimum latency mode.
*/
private final boolean mEnableCheck3AConverged;
啊哈!
我正在使用 CameraX 并想拍照。当然,没有人想要一张模糊的照片,所以我们在拍照之前一定要确保对焦。
第一次尝试:只需调用 takePicture
就像在 official sample 中所做的一样。
问题:我可以切换场景并快速按下拍照按钮。然后,当 takePicture 发生时,相机还没有完成自动对焦。因此,我得到一张模糊的照片:/
第二次尝试:在实际拍照前,先触发对焦,等待对焦完成。
代码如下:
camera!!.cameraControl.startFocusAndMetering(
FocusMeteringAction.Builder(
autoFocusPoint,
FocusMeteringAction.FLAG_AF
).apply {
//focus only when the user tap the preview
disableAutoCancel()
}.build()
)
问题:聚焦需要很长时间(秒!)。用户肯定不能接受。
因此,我想知道我该怎么办?恕我直言,这应该是非常常用的,所以我很惊讶地发现我找不到任何解决方案!我错过了什么吗?
感谢任何建议!
我找到答案了!只需调用 setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
.
原因:看ImageCapture的构造函数:
if (mCaptureMode == CAPTURE_MODE_MAXIMIZE_QUALITY) {
mEnableCheck3AConverged = true; // check 3A convergence in MAX_QUALITY mode
} else {
mEnableCheck3AConverged = false; // skip 3A convergence in MIN_LATENCY mode
}
那个字段:
/**
* A flag to check 3A converged or not.
*
* <p>In order to speed up the taking picture process, trigger AF / AE should be skipped when
* the flag is disabled. Set it to be enabled in the maximum quality mode and disabled in the
* minimum latency mode.
*/
private final boolean mEnableCheck3AConverged;
啊哈!