前面的文章有对Camera App和framework有了比较清楚的介绍,那我们继续根据camera overview中的架构设计,继续往下层看跟framework进行交互的native framework,之所以叫native framework是因为本身这部分代码的作用依然是承上启下,往上跟framework通过AIDL进行交互,往下则跟CameraProvider通过HIDL进行交互。
native framework的代码是定义在CameraService里的,这里的CameraService是有专门的一个进程CameraServer来工作,它的工作就是前面提到的,CameraServer会在android boot up起来后就跑起来,那我们看下它做了哪些工作,调用流程如下:
首先,CameraServer的入口main函数定义在main_cameraserver里,它的实现很简单就是调用CameraService类的instantiate方法,而该方法会调用到BinderService的publish方法,在publish方法里主要做3件事:
1)去获取defaultServiceManager, defaultServicemanager是android中用来管理各种service的。
2)去创建CameraService对象,使用一个强指针指向这个对象。
3)把创建好的CameraService对象添加到defaultServiceMan