总体框架
cameraserver 与 provider 这两个进程启动、初始化的调用逻辑,如上图所示
(Thanks to : https://blog.youkuaiyun.com/qq_16775897/article/details/81240600)
总体逻辑顺序:
provider 进程启动,注册;
cameraserver 进程启动,注册,初始化;
cameraserver 获取远端 provider(此时实例化 CameraProvider 并初始化)
上图中,实线箭头是调用关系。左边是 cameraserver 进程中的动作,右边则是 provider 进程中的动作,它们之间通过 ICameraProvider 联系在了一起
CameraProvider
在 Android 系统启动时,就会启动 CameraProvider 服务。它将 Camera HAL 从 CameraServer 进程中分离出来,作为一个独立进程 android.hardware.camera.provider@2.4-service 来控制 HAL。 这两个进程之间通过 HIDL 机制进行通信。
这样的改动源自于 Android O 版本加入的 Treble 机制,它的主要功能(如下图所示)是将 service 与 HAL 隔离,以方便 HAL 部