android6.0源碼分析之Camera API1.0框架簡介

1、架構簡介

由於最近項目涉及到Camera,所以對Camera源碼進行了研究,本文將分享Camera框架的基本知識。anroid6.0與5.0相比,Camera框架未曾改變,依然提供了兩種API,即API1和API2,依然採用C/S的架構,而client和server兩個線程間的通信依然使用IPC binder進程間通信的機制。


camera架構圖如下:

這裏寫圖片描述

由圖可知:在framework層中,Java框架通過JNI的方式調用Native框架,此處的Native作爲Client端只給上層應用提供調用接口,而具體的業務實現則是由Server端(CameraService)來實現,Client和Server則是通過Binder的方式進行通訊。
單獨分析下Camera的C/S架構,其架構圖如下:
這裏寫圖片描述


2、代碼結構

Camera的application部分:

packages/apps/legacycamera/src/com/android/camera/camera.java
packages/apps/legacycamera/src/com/android/camera/Util.java
packages/apps/legacycamera/src/com/android/camera/CameraHolder.java

Camera的framework部分:

frameworks/base/core/java/android/hardware/Camera.java
frameworks/base/core/jni/android_hardware_Camera.cpp
frameworks/av/camera/Camera.cpp
frameworks/av/camera/CameraBase.cpp
frameworks/av/camera/ICameraService.cpp
frameworks/av/services/camera/libcameraservice/CameraService.cpp
frameworks/av/services/camera/libcameraservice/api2/CameraDeviceClient.cpp

其中Camera.java將會被編譯成framework.jar,而android_hardware_Camera.cpp將會被編譯成庫libandroid_runtime.so,frameworks/av/camera將會被編譯成庫libcamera_client.so,最後服務部分也將會編譯成庫libcameraservice.so。

總結:本文只是簡單的介紹了android6.0的Camera子系統的架構以及它 的代碼結構,至於Camera HAL 的具體架構以及代碼分析,本文沒有進行詳細的分析,具體參考老羅的Android硬件抽象層(HAL)概要介紹和學習計劃一文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章