本讲是android camera专题系列的第23讲,我们介绍android camera2 api专题的capturerequest详解。
更多资源:
| 资源 | 描述 |
|---|---|
| 在线课程 | |
| 知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
| 极客笔记圈 |
capturerequest介绍

capturerequest可以理解为告诉camera底层如何处理某一帧数据,包括两部分内容
- settings
- 硬件相关的参数:sensor, lens, flash等
-
isp processing pipeline相关参数
-
3a相关参数
-
output surfaces
- capturerequest中带的surfaces必须在创建session时使用的surface list的子集
通过capturerequest.builder来创建capturerequest
通过不同的方式送给camera底层
- capture
-
captureburst
-
setrepeatingrequest
-
setrepeatingburst
capturerequest类型(通过capturerequest#isreprocess()可以判断)
- regular:cameradevice#createcapturerequest
-
reprocess:cameradevice#createreprocesscapturerequest
capturerequest.builder介绍
builder模式:用于设置capturerequest参数和创建capturerequest对象
| api | description |
|---|---|
| set(key |
设置指定key对应的value值 |
| setphysicalcamerakey(key |
设置指定physical camera中key对应的value值 |
| addtarget(surface outputtarget) | 增加一路输出流 |
| settag(object tag) | 给capturerequest设置一个tag,用于标识该capturerequest,底层在oncapturecompleted回调时,可以通过capturerequest#gettag()获取到 |
| build() | 创建capturerequest对象 |
| get(key |
获取指定key对应的value |
| getphysicalcamerakey(key |
获取指定physical camera中key对应的value值 |
| removetarget(surface outputtarget) | 删除一路输出流 |
capturerequest template type介绍

创建capturerequest.builder
| api | description |
|---|---|
| createcapturerequest(int templatetype) | 根据template type创建capturerequest.builder,注意:这里返回的是带一包默认值的,不同的cameradevice,这包默认值会不一样,因此不能混用。 |
| createcapturerequest(int templatetype, set |
根据template type和physical cameraid set创建capturerequest.builder,通过builder#setphysicalcamerakey可以设置指定physical camera的参数。 physical camera的参数只适用于有physical camera outputconfiguration的情况(outputconfiguration#setphysicalcameraid)。 physicalcameraidset来自cameracharacteristics#getphysicalcameraids() |
| createreprocesscapturerequest (totalcaptureresult inputresult) | 根据totalcaptureresult创建用于reprocess的capturerequest.builder |
如何设置physical camera的capturerequest

-
判断能否单独控制logical multicamera中的physical camera
(cameracharacteristics#getphysicalcameraids) -
或者可以设置的physical camera keys
(cameracharacteristics#getavailablephysicalcamerarequestkeys) -
创建physical camera outputconfiguration
(outputconfiguration#setphysicalcameraid) -
创建capturerequest.builder
-
setphysicalcamerakey
-
addtarget
-
获取physical totalcaptureresult
(totalcaptureresult#getphysicalcameratotalresults )