Android Camera 架構簡析1

1.   前言android

最近總體看了一下Android Camera 部分代碼,從FrameworkCamera 應用框架到 HardwareCamera HAL 再到 Kernel Camera Driver。把對Camera部分的學習整理成筆記,方便理解。架構

2.   概述
app

要了解Android Camera架構,仍是得先從Android自己的架構提及。
框架

 

1. Android 架構圖學習

Android框架看,分爲四層:應用層、應用框架層、庫層、內核層。
spa

應用層主要工做在Android SDK之上,利用Android 提供的API進行開發,生成APK包。code

應用框架層整合了Android自帶各類控件和類,爲應用開發提供高效、方便的API接口。這個對上實現統一的接口,對下也提供統一的標準方便各類庫的移入。xml

庫層是Android與底層硬件通訊接口,它封裝底層硬件接口實現該模塊的具體邏輯,並以服務的形式經過Binder通信機制暴露給應用框架。接口

內核層則是直接與硬件聯繫的一層,能夠理解爲設備驅動。
開發

經過對上面框架的簡要說明,咱們大體明白一個應用自上而下的各個層起什麼做用,這樣有助於咱們對代碼的理解和修改。若是要作基於Android porting工做,就要明白在哪一個層次的porting,怎麼porting

3.   Camera層次簡析

說完Android總體框架,咱們以Camera爲例來講明一下Camera在各層是如何實現。下圖是Camera部分在Android上各層的分佈圖

2. Camera結構分佈圖

l        應用層

Camera的應用層在Android上表現爲直接調用SDK API開發的一個Camera 應用APK包。代碼在\android\packages\apps\Camera下。主要是Java寫的基於android.hardware.Camera類調用的封裝,而且實現Camera應用的業務邏輯和UI顯示。android.hardware.Camera就是Android提供給上層調用的Camera類。這個類用來鏈接或斷開一個Camera服務,設置拍攝參數,開始、中止預覽,拍照等。它也是Android Camera應用框架封裝暴露出來的接口。一個Android應用中若要使用這個類,須要在Manifest文件聲明Camera的權限,另外還須要添加一些<uses-feature>元素來聲明應用中的Camera特性,如自動對焦等。具體作法可以下:

<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />

<uses-feature android:name="android.hardware.camera.autofocus" />
相關文章
相關標籤/搜索