5

试图实现点击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。

4

1 回答 1

2

一方面,您实际上并没有设置 AF 区域 - 您只是重用了 mPreviewBuilder 中的默认区域。

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

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

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

于 2016-10-04T17:36:52.647 回答