Android camera2点按即可关注

时间:2016-10-04 11:01:55

标签: android camera camera2

尝试使用focus实现点按camera2api

    CaptureRequest.Builder afBuilder = mPreviewBuilder;

    Rect newRect=new Rect(0,0,200,200);
    MeteringRectangle meteringRectangle=new MeteringRectangle(newRect,METERING_WEIGHT_DONT_CARE);

    MeteringRectangle[] areas = afBuilder.get(CaptureRequest.CONTROL_AF_REGIONS);

    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_REGIONS,areas);
    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_AUTO);
    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);
    mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), mCaptureCallback, mBackgroundHandler);

在我的回电中,我一直陷入ACTIVE_SCAN状态,偶尔会进入FOCUS_NOT_LOCKED状态。我似乎永远不会进入FOCUS_LOCKED状态,预览永远不会集中注意力。

使用三星Galaxy note 3.

1 个答案:

答案 0 :(得分:2)

首先,您实际上并未设置AF区域 - 您只是重复使用mPreviewBuilder中的默认区域。

其次,即使您将区域设置为[(0,0,200,200),METERING_WEIGHT_DONT_CARE],这是图像的左上角,也可能不是您想要的?

第三,最重要的是,您要重新设置AF触发器。这意味着在每一帧上,您都要求相机重新开始对焦。所以它永远不会完成,因为你永远不会让它。

您需要将AF_TRIGGER设置为START,仅进行一次捕获;您仍然希望在重复请求时将AF_REGION和AF_MODE设置为在您启动的整个AF扫描中保持一致。