1 CameraService与CameraProviderManager的关系
CameraService对上实现BnCameraService接口,对外提供服务
CameraService对下与CameraProviderManager交互,通过CameraProviderManager调用到底层HAL的实现(ICameraProvider/ICameraDevice)
2 ClientManager类图
CameraClientManager用于管理处理Active状态的所有Camera Client对象
ClientDescriptor用于描述一个CameraClient对象的信息
Camera Client可以通过sCameraService静态属性访问回CameraService
调用回路
CameraService – CameraClientManager – ClientManager – ClientDescriptor – CameraService::BasicClient
CameraService::ClientEventListener 用来监听 client的打开/关闭
3 Camera Client的类图
- 所有Client都继承自BasicClient
- API1/API2的Client都抽象出一个类实现对上的接口
- Camera2ClientBase主要封装对Camera Device的操作
3.1 Camera Client For API2
3.2 Camera Client For API1
3.3 Camera Client For Offline
依赖于 API2
当调用 (switchToOffline) CameraDeviceClient 就会切换到 CameraOfflineSessionClient