尝试使用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状态,并且预览也永远不会集中精力。

使用三星银河笔记3。

最佳答案

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

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

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

您只需要将AF_TRIGGER设置为START就可以进行一次捕获。您仍然需要在重复请求中将AF_REGION和AF_MODE设置为在开始的整个AF扫描中保持一致。

10-08 03:19