|
http://blog.csdn.net/ldinvicible/article/details/7800588
整個調(diào)用過程: 1)首先將camera的service注冊到ServiceManager里面。在 framework/av/media/mediaserver/main_mediaserver.cpp里可注冊媒體服務。在 framework/av/services/camera/libcameraservice/CameraService.h中對該類不存在 instantiate()的函數(shù),這實際上是由其一個父類BinderService提供。BInderService類在 framework/native/include/binder/BinderService.h下定義。 2)在packages/apps/LegacyCamera/src/com/android/camera/Camera.java中有一個打開 camera模塊的線程mCameraOpenThread.start()。JNI函數(shù)里面,我們找到Camera C/S架構(gòu) 的客戶端了,它調(diào)用connect函數(shù)向服務器發(fā)送連接請求。JNICameraContext這個類是一個監(jiān) 聽類,用于處理底層Camera回調(diào)函數(shù)傳來的數(shù)據(jù)和消息。 3)初始化HAL層接口 4)通過HAL層操作camera驅(qū)動 Android中Camera的調(diào)用流程可分為以下幾個層次: >Camera Driver |
|
|