Android Camera2 API简述 (五)

1,828 阅读1分钟

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

一、 CaptureRequest

CaptureRequest 表示的是一个捕获的请求。可以创建不同的捕获请求,配置不同的捕获属性来处理不同场景下的情况。如:对焦模式、曝光模式,预览分辨率,预览目标。

二、获取实例

通过 CameraDevice 对象的 createCaptureRequest() 方法得到一个 CaptureRequest.Builder 对象,最后通过 CaptureRequest.Builder 对象的 build() 方法便可得到 CaptureRequest 实例。

image.png

image.png

三、内部类

1. CaptureRequest.Builder

获取:

使用 CameraDevice.createCaptureRequest(int) 方法获取一个 CaptureRequest.Builder 对象。其中的 int 取值为:

TEMPLATE_PREVIEW : 用于创建一个相机预览请求。相机会优先保证高帧率而不是高画质。适用于所有相机设备。

TEMPLATE_STILL_CAPTURE : 用于创建一个拍照请求。相机会优先保证高画质而不是高帧率。适用于所有相机设备。

TEMPLATE_RECORD : 用于创建一个录像请求。相机会使用标准帧率,并设置录像级别的画质。适用于所有相机设备。

方法

void addTarget(Surface outputTarget): 添加一个请求的输出surface,注意这个surface必须包含在 CameraDevice.createCaptureSession() 方法设置的输出surface集合中。

image.png

image.png

四、常用字段

用于 CaptureRequest.Builderset() 方法。

CONTROL_AE_LOCK :自动曝光(AE)现在是否锁定为其最新计算值

CONTROL_AE_MODE : 相机自动曝光程序所需的模式

CONTROL_AF_MODE : 自动对焦(AF)当前是否启用,以及设置为何种模式

CONTROL_AF_REGIONS : 用于自动聚焦的测光区域列表

CONTROL_AWB_LOCK : 自动白平衡(AWB)现在是否锁定为其最新计算值

CONTROL_AWB_MODE : 自动白平衡(AWB)当前是否设置颜色转换字段,以及它的光照目标是什么

CONTROL_MODE : 整个3A控制程序模式