Android 的相機硬體抽象層 (HAL) 會連接較高等級 相機架構 API android.hardware.camera2 內建的相機驅動程式和硬體 自 Android 13 起,相機 HAL 介面 都是使用 AIDL。Android 8.0 推出 Treble:切換 Camera HAL API 切換至由 HAL 介面說明語言 (HIDL) 定義的穩定介面。 如果您先前已開發 Android 7.0 的相機 HAL 模組和驅動程式 但請留意 變更相機管道的擷取作業
AIDL 相機 HAL
搭載 Android 13 以上版本的裝置:相機 架構包括支援 AIDL 相機 HAL。相機架構 支援 HIDL 相機 HAL,但新增的相機功能 Android 13 以上版本只能透過 AIDL 相機 HAL 介面。如要在升級至以下版本的裝置上實作這類功能, Android 13 以上版本,裝置製造商必須 將 HAL 程序從使用 HIDL 相機介面遷移至 AIDL 相機 存取 API
若要瞭解 AIDL 的優點,請參閱: HAL 適用的 AIDL。
導入 AIDL 相機 HAL
如需 AIDL 相機 HAL 的參考實作參考資料,請參閱
hardware/google/camera/common/hal/aidl_service/
。
AIDL 相機 HAL 規格位於下列位置:
- 相機供應商:
hardware/interfaces/camera/provider/aidl/
- 相機裝置:
hardware/interfaces/camera/device/aidl/
- 相機中繼資料:
hardware/interfaces/camera/metadata/aidl/
- 常見的資料類型:
hardware/interfaces/camera/common/aidl/
對於要遷移至 AIDL 的裝置,裝置製造商可能需要修改 根據程式碼而定的 Android SELinux 政策 (sepolicy) 和 RC 檔案 成本中心的架構
驗證 AIDL 相機 HAL
如要測試 AIDL 相機 HAL 實作項目,請確認裝置通過所有測試
CTS 和 VTS 測試。Android 13 導入 AIDL VTS
測試
VtsAidlHalCameraProvider_TargetTest.cpp
。
相機 HAL3 功能
重新設計 Android Camera API 的目的在於 可控制 Android 裝置相機子系統的應用程式 重新整理 API,使其更有效率且方便維護額外 可讓你更輕鬆地在 Android 平台上建構優質的相機應用程式 可在多種產品中穩定運作,同時使用 盡可能提高畫質和 才需進行
第 3 版相機子系統將運作模式結構為 單一整合式資料檢視,可用來導入任何先前模式 還有節拍模式等其他選項這樣一來,您就能進一步掌控 聚焦與曝光,以及更多後續處理,例如雜訊抑制、對比度 以及銳化此外,這個簡化的檢視畫面有助於輕鬆申請 可讓開發人員使用相機的各種功能。
API 會將相機子系統建立成管道,藉此將傳入的傳入資料 將擷取的影格擷取到影格中,並按 1:1 進行。請求 封裝與裝置擷取和處理詳細資料相關的所有設定資訊 相框。包括解析度和像素格式;手動感應器、鏡頭和閃光燈 控制組;3A 運作模式;RAW->YUV 處理控制;統計資料產生; 依此類推
簡單來說,應用程式架構會從相機要求一個影格 子系統將結果傳回輸出串流。於 此外,中繼資料也包含色域、透鏡等資訊 系統會為每組結果產生陰影。請想到相機第 3 版 並當做是相機第 1 版單向串流的管道。可將每次擷取到的 然後將要求轉換成一張圖片,接著模型會處理至:
- 具有擷取相關中繼資料的結果物件。
- 一個到 N 的圖片資料緩衝區,每個緩衝區都位於自己的目的地介面。
可能的輸出介面已預先設定:
- 每個介面都是一個固定圖片緩衝區串流的目的地 解析度。
- 一次只能將少數介面設為輸出內容 (約 3 個)。
要求中包含所有需要的擷取設定和輸出清單
將圖片緩衝區推送至這項要求的介面 (在總數中)
)。要求可以是一次性 (使用 capture()
) 或
可能會無限期重複 (搭配 setRepeatingRequest()
)。擷取內容
優先順序高於重複要求
相機 HAL1 總覽
第 1 版相機子系統是精心設計的黑盒子,具有高階規格 並使用以下三種作業模式:
- 預覽
- 錄影
- 靜態擷取
每種模式的功能略有不同且重疊。符合現況 難以導入連拍模式這類新功能 運作模式
由於許多裝置仍依賴相機 HAL1,Android 7.0 會繼續支援相機 HAL1 基礎架構此外,Android 相機服務也支援實作這兩種 HAL (1 和 3),如果您要支援功能較差的前端介面 相機 HAL1 和更高階的後置鏡頭 HAL3:
只有一個相機 HAL 模組 (具有自己的 版本 編號),清單中每個裝置都會列出多個獨立相機裝置 自己的版本號碼必須安裝 2 以上版本的相機模組才能支援 裝置 2 以上版本,這類相機模組可能會混用不同相機裝置 版本 (我們稱 Android 支援同時實作這兩種方法) HAL)。