1.1Android Camera源碼路徑及類簡介

      Camera API是Android APP開發的主要方式,Android 9.0主要有1.0和2.0兩個版本。目前Google在全面推API2,但是應用市場上的主流應用大部分依然使用的是1.0,如QQ、微信等;而一般手機自帶的相機應用都是Camera API 2.

   本文及後續都將以API2爲主,涉及代碼部分將以Kotlin爲主,Android源碼部分以官方開源版本爲準。

一.API源碼路徑

Camera SDK的主要代碼都在/frameworks/base/core/java/android/hardware路徑下。

其中../camera2目錄下是API2的內容,Camera.java類是API1的主要功能類。在API2中,實際上分爲公開的類和方法,以及非公開的類和方法。

對比圖1和圖2可以發現,圖二多出了impl、legacy、marshel、utils三個文件夾,這三個文件夾就是非公開API。

圖一

 

圖二

二.主要類簡介

在生產過程之中會涉及到很多類,其中大部分時輔助完成功能的類,涉及到流程的核心功能類類並不多,下面簡單介紹一下這些核心類。

圖三

通過圖三中框紅的五個類就可以完成相機從打開到預覽到拍照的全部流程。

CameraManager類,官方的定義是A system service manager for detecting, characterizing, and connecting to CameraDevices.CameraManager類作爲系統服務,是所有攝像頭設備的管理者。
CameraDevice類,官方定義是The CameraDevice class is a representation of a single camera connected to an Android device, allowing for fine-grain control of image capture and post-processing at high frame rates.
一個CameraDevice對象就對應一個攝像頭設備。
CameraDevice.StateCallback類,A callback objects for receiving updates about the state of a camera device.
這個類是device狀態更新時的回調,如打開攝像頭成功後的操作可以在這個回調中進行。
CameraCharacteristics類,官方定義是The properties describing a CameraDevice.類中包含了大量用於表示Camera屬性的key值,例如支持的Size列表,最大Zoom值等。
CameraCaptureSession類,A configured capture session for a CameraDevice, used for capturing images from the camera or reprocessing images captured from the camera in the same session previously.系統和攝像頭之間的會話,通過device創建。
CameraCaptureSession.StateCallback類,會話創建成功的回調,用於捕捉會話狀態的更新。
CameraCaptureSession.CaptureCallback類,同樣屬於CameraCaptureSession的靜態抽象回調,用於捕捉Capture過程中的狀態,從開始Capture到完成,如果出錯,會進入相應的failed方法而不是completed方法。
開發者將這五個類串起來的過程,就是一個簡單的Camera APP開發的過程,後續筆者將以實現一個簡單Camera Demo的方式串起Camera2完整流程,同時深入解析API的每個功能類。

 

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