相機 HAL

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 規格位於下列位置:

對於要遷移至 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())。擷取內容 優先順序高於重複要求

相機資料模型

圖 1. 相機核心操作模型

相機 HAL1 總覽

第 1 版相機子系統是精心設計的黑盒子,具有高階規格 並使用以下三種作業模式:

  • 預覽
  • 錄影
  • 靜態擷取

每種模式的功能略有不同且重疊。符合現況 難以導入連拍模式這類新功能 運作模式

相機區塊圖

圖 2. 相機元件

由於許多裝置仍依賴相機 HAL1,Android 7.0 會繼續支援相機 HAL1 基礎架構此外,Android 相機服務也支援實作這兩種 HAL (1 和 3),如果您要支援功能較差的前端介面 相機 HAL1 和更高階的後置鏡頭 HAL3:

只有一個相機 HAL 模組 (具有自己的 版本 編號),清單中每個裝置都會列出多個獨立相機裝置 自己的版本號碼必須安裝 2 以上版本的相機模組才能支援 裝置 2 以上版本,這類相機模組可能會混用不同相機裝置 版本 (我們稱 Android 支援同時實作這兩種方法) HAL)。