我们知道,在 Android5.0 以后,Google 逐渐摒弃之前的 Camera api1 架构,换之以 cameraApi2 架构。
之前的 Camera api1 可以处理的拍照情景比较单一,是能够满足当时的用户拍照需求的。随着 sensor 分辨率的不断拉高,4K预览等情景出现,3A优化算法的需求,api2 应运而生。
加入知识星球与更多Camera同学交流
– 星球名称:深入浅出Android Camera
– 星球ID: 17296815
callback 机制是 api2 联系 app 和 framework 层的关键一环。主要涉及两个大类:
- 第一个是
cameraCaptureSesssion
它是拍照的回话组。所有的 java 层发起的操作都要经过这个 Session 类。它含有两个回调类:- 其一是
CaptureCallback
,它的OnResultRecieved
函数会在Framework层的FrameProcessorBase::threadLoop
接受到hal层的新请求时候调用。 - 其二是
StateCallback
,描述此时拍照流程处于什么阶段。在创建完回话createCaptureSessionInternal
后 ,通知app 发生onConfigured
事件。当向hal层发出request后通知app有OnActive
。
- 其一是
- 第二个是
CameraDevice
类。它只有一个描述camera 设备状态的StateCallback
类。当打开camera设备成功后,会通知app一个onOpened
事件。