本讲是Android Camera专题系列的第20讲,我们介绍Android Camera2 API专题的SessionConfiguration详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
为什么要引入SessionConfiguration
创建Session的API越来越多
- createCaptureSession(List
outputs, callback, Handler handler) -
createCaptureSessionByOutputConfigurations(List
outputConfigurations, callback, Handler handler) -
createConstrainedHighSpeedCaptureSession(List
outputs, callback, Handler handler) -
createReprocessableCaptureSession(InputConfiguration inputConfig, List
outputs, callback, Handler handler) -
createReprocessableCaptureSessionByConfigurations(InputConfiguration inputConfig, List
outputs,, Handler handler)
但还是无法满足需求,API28想在创建Session时能够带一包参数下去,也就是设置Session Parameter
需要一个API一统江湖
- createCaptureSession(SessionConfiguration config)
SessionConfiguration简介
SessionConfiguration是一个聚合类,将用于创建Camera Capture Session的参数都聚合在一个对象中,这些参数包括
- Session Type(对应HAL的Operation Mode)
- 创建Regular Session还是High Speed Session
- Session State Callback
-
Session Callback Executor(Handler)
-
输出流配置信息(OutputConfiguration)
-
输入流配置信息(InputConfiguration)
-
Session Parameters
SessionConfiguration APIs概述
Session Parameter简介
Session Parameter
- 本质是什么?
- Session Parameter本质上是一个不带Surface的CaptureRequest
- 为什么要引入?
- 只靠Stream的size、format和Operation Mode还不足以决定Session的创建,比如FPS Range会决定Sensor走哪种mode
- 如何知道Session Parameter中能设置哪些Metadata
- Cameracharacteristics#getAvailableSessionKeys
Session Parameter没用好会发生什么?