前言
從之前的幾篇文章,可以基本弄清楚 Camera從APK,經過framework的銜接,與HAL層進行互動,最終通過驅動完成Camera的一些動作。
Camera層次分析
- APP層
- Framework層
- HAL層
大致的框架圖如下
從圖中可以看到幾個關鍵的地方:
- APP從JAVA層過渡到CPP層中間通過JNI層的android_hardware_Camera.cpp檔案實現,檔案中主要涉及從java方法到cpp函式的對映關係,方便作出對應的處理;
- Camera互動物件,從開始連線過程中式Camera與CameraService,連線之後基本上就是Camera與CameraClient進行互動,這裡注意到CameraClient是繼承CameraService::Client的,而後者則是繼承BnCamera,繼承ICamera,Camera類中存在一個ICamera變數,就是這個內容;
- Camera類繼承BnCameraClient,繼承ICameraClient,這樣就可以實現Camera與CameraClient的互動
- 至於CameraService與Camera底層庫的互動,只是Camera HAL 層的模組載入是在CameraService中實現的,真正的HAL層的建立是在CameraClient的初始化過程中
內容比較的少,主要是總結前幾篇文章。