我想在自定义相机找到焦点后锁定焦点。 首先它将AF模式设置为自动:
builder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_AUTO);
触摸预览后,它会找到焦距,我必须使用以下代码锁定AF和AE:
builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
builder.set(CaptureRequest.CONTROL_AE_LOCK, true);
锁定AE在任何设备中都能正常工作。锁定AF适用于Nexus5和Nexus 5x。但至于三星S5和S6,它一直试图寻找焦点。
锁定焦点的最佳方法是什么?
答案 0 :(得分:17)
要锁定自动对焦,您必须使用AF_TRIGGER
代替capture()
来处理请求repeatingRequest()
一次(如果不是,请在af请求循环中输入并保持总是试着集中注意力,但是有些nexus在其FW中解决了这个问题,所以有些设备Nexus 5
很好地关注,即使它不应该
所以,正确的顺序是:
将CONTROL_AF_MODE
设置为CONTROL_AF_MODE_AUTO
(通过session.setRepeatingRequest()
)和AF_REGIONS
以及AE_REGIONS
(如果需要)
通过查看CONTROL_AF_MODE
中的totalCaptureRequest
,等到您检查CaptureCallback
已经在自动状态。
在构建器中设置AF_TRIGGER_START
和CONTROL_AF_MODE_AUTO
,但这次不是使用session.setRepeatingRequest()
使用session.capture()
。
在此之后,设置AF_TRIGGER
以设置AF_TRIGGER_IDLE
(不取消!)再次使用session.setRepeatingRequest()
以及CONTROL_AF_MODE_AUTO
。
等到焦点集中后,您会收到FOCUSED_LOCKED
或NOT_FOCUSED_LOCKED
。
PASSIVE_FOCUSED
状态仅在CONTROL_AF_MODE
连续图片不在自动状态时才显示!
在执行触发之前,请注意真正处于自动对焦模式。
您应始终session.capture()
使用所有触发器(CONTROL_AE_PRECAPTURE_TRIGGER
也是如此),但在此之后请务必将触发器设置为IDLE
(不取消)session.repeatingRequest()
答案 1 :(得分:4)
您无法将焦点放在CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
上。
在自动对焦触发期间,您应将自动对焦模式设为CONTROL_AF_MODE_AUTO
并等待FOCUSED_LOCKED
状态。您可以在enter link description here