相機版本支持

本頁面詳細介紹了相機的HAL,API和相關的版本差異兼容性測試套件(CTS)的測試。它還涵蓋了為加強和保護 Android 7.0 中的相機框架而進行的幾項架構更改、在 Android 8.0 中切換到 Treble,以及供應商必須進行的更新以支持其相機實現中的這些更改。

術語

本頁使用了以下術語:

相機 API1
在Android 4.4及更低的設備應用程序級相機框架,通過暴露的android.hardware.Camera類。
相機 API2
在Android 5.0和更高版本的設備應用程序級相機框架,通過暴露的android.hardware.camera2包。
相機 HAL
由 SoC 供應商實現的相機模塊層。應用級公共框架構建在相機 HAL 之上。
相機 HAL3.1
隨 Android 4.4 發布的相機設備 HAL 版本。
相機 HAL3.2
隨 Android 5.0 發布的相機設備 HAL 版本。
相機 API1 CTS
在 Camera API1 之上運行的一組相機 CTS 測試。
相機 API2 CTS
在 Camera API2 之上運行的附加相機 CTS 測試集。
高音
通過新的供應商接口將供應商實現(由芯片製造商編寫的特定於設備的低級軟件)與 Android 操作系統框架分開。
HIDL
HAL接口定義語言與高音引入,用於指定HAL和用戶之間的接口。
VTS
供應商的測試套件介紹了沿著高音。

相機 API

Android 包括以下相機 API。

相機 API1

Android 5.0 棄用了 Camera API1,隨著新平台開發的重點放在 Camera API2 上,它繼續被淘汰。但是,淘汰期會很長,Android 版本將在一段時間內繼續支持 Camera API1 應用程序。具體而言,將繼續支持:

  • 應用程序的相機 API1 接口。構建在 Camera API1 之上的相機應用程序應該可以像在運行較低 Android 版本的設備上一樣工作。
  • 相機 HAL 版本。包括對相機 HAL1.0 的支持。

相機 API2

相機 API2 框架向應用程序公開了較低級別的相機控制,包括高效的零拷貝突發/流媒體流和曝光、增益、白平衡增益、顏色轉換、去噪、銳化等的每幀控制。有關詳細信息,看谷歌I / O視頻概覽

Android 5.0 及更高版本包含 Camera API2;但是,運行 Android 5.0 及更高版本的設備可能不支持所有 Camera API2 功能。該android.info.supportedHardwareLevel屬性,應用程序可以通過攝像頭API2界面查詢報告以下支持級別之一:

  • LEGACY :這些器件通過大致相同的功能的那些通過攝像機接口API1暴露於應用相機API2接口暴露功能的應用程序。遺留框架代碼在概念上將 Camera API2 調用轉換為 Camera API1 調用;舊設備不支持 Camera API2 功能,例如每幀控件。
  • LIMITED :這些設備支持某些相機API2能力(但不是全部),並且必須使用相機HAL 3.2或更高版本。
  • FULL :這些器件支持所有的攝像頭API2的主要功能,並且必須使用相機HAL 3.2或更高版本以及Android 5.0或更高版本。
  • LEVEL_3 :這些設備支持YUV後處理和RAW圖像捕獲,用另外的輸出流的配置沿。
  • EXTERNAL :這些設備類似於LIMITED但有一些例外的設備;例如,某些傳感器或鏡頭信息可能不會報告或幀速率不太穩定。此級別用於外部攝像頭,例如 USB 網絡攝像頭。

個人的能力是通過暴露android.request.availableCapabilities在相機API2的接口屬性。 FULL設備需要MANUAL_SENSORMANUAL_POST_PROCESSING能力,等等。在RAW功能是可選甚至FULL設備。 LIMITED設備可以做廣告的這些功能任何子集,包括沒有。然而, BACKWARD_COMPATIBLE能力必須始終定義。

設備支持的硬件級別以及它支持的特定相機 API2 功能可用作以下功能標誌,以允許 Google Play 過濾相機 API2 相機應用程序。

  • android.hardware.camera.hardware_level.full
  • android.hardware.camera.capability.raw
  • android.hardware.camera.capability.manual_sensor
  • android.hardware.camera.capability.manual_post_processing

CTS要求

運行 Android 5.0 及更高版本的設備必須通過 Camera API1 CTS、Camera API2 CTS 和 CTS Verifier 相機測試。

不具備相機 HAL3.2 實現且無法支持完整相機 API2 接口的設備仍必須通過相機 API2 CTS 測試。然而,在相機API2設備運行LEGACY模式(其中相機API2呼叫概念映射到相機API1電話)這樣的任何相機API2 CTS測試相關的特性或功能超出了相機API1會被自動跳過。

在舊設備上,運行的相機 API2 CTS 測試使用現有的公共相機 API1 接口和功能,沒有新的要求。暴露的錯誤(並導致相機 API2 CTS 失敗)是設備現有相機 HAL 中已經存在的錯誤,因此現有相機 API1 應用程序會發現這些錯誤。我們預計這種性質的錯誤不會很多(但是,必須修復任何此類錯誤才能通過 Camera API2 CTS 測試)。

VTS 要求

運行Android 8.0及更高與binderized HAL實現的設備必須通過相機VTS測試

相機框架加固

為了加強媒體和攝像頭框架的安全性,Android 7.0 將攝像頭服務移出了媒體服務器。從 Android 8.0 開始,每個綁定的相機 HAL 都在獨立於相機服務的進程中運行。供應商可能需要根據使用的 API 和 HAL 版本對相機 HAL 進行更改。以下部分詳細介紹了 HAL1 和 HAL3 的 AP1 和 AP2 中的架構更改,以及一般要求。

API1 的架構更改

API1 視頻錄製可能假設攝像機和視頻編碼器處於同一進程中。在以下情況下使用 API1 時:

  • HAL3,其中照相機服務使用BufferQueue進程之間傳遞緩衝液,沒有供應商更新是必要的。

    HAL3 上 API1 中的 Android 7.0 相機和媒體堆棧

    圖1.的Android 7.0相機和介質堆疊在上HAL3 API1

  • HAL1,其支持通過元數據在視頻緩衝器,銷售商必須更新HAL使用kMetadataBufferTypeNativeHandleSourcekMetadataBufferTypeCameraSource採用的是Android 7.0不再支持。)

    HAL1 上 API1 中的 Android 7.0 相機和媒體堆棧

    圖2. Android的7.0相機和介質堆疊在上HAL1 API1

API2 的架構變化

對於 HAL1 或 HAL3 上的 API2,BufferQueue 傳遞緩衝區,以便這些路徑繼續工作。用於 API2 的 Android 7.0 架構:

  • HAL1不會受到cameraservice舉動,並沒有任何一家廠商更新是必要的。
  • HAL3受到影響,但沒有任何一家廠商更新是必要的:

    HAL3 上 API2 中的 Android 7.0 相機和媒體堆棧

    圖3. Android的7.0相機和介質堆疊在上HAL3 API2

其他要求

為加強媒體和相機框架安全性而進行的架構更改包括以下附加設備要求。

  • 一般的。由於 IPC,設備需要額外的帶寬,這可能會影響時間敏感的相機用例,例如高速視頻錄製。供應商可以通過測量運行實際影響android.hardware.camera2.cts.PerformanceTest和120/240 FPS高速視頻錄製的攝像頭谷歌應用程序。設備還需要少量額外的 RAM 來創建新進程。
  • 通過在視頻緩衝器元數據僅HAL1)。如果HAL1將元數據存儲,而不是在視頻緩衝器真實YUV幀數據時,HAL必須使用kMetadataBufferTypeNativeHandleSource作為元數據緩衝器類型和傳遞VideoNativeHandleMetadata在視頻緩衝器。 ( kMetadataBufferTypeCameraSource不再支持在Android 7.0)。隨著VideoNativeHandleMetadata ,相機和媒體框架能夠通過序列化和反序列化正確的本地句柄在進程間傳遞視頻緩衝。
  • 緩衝手柄地址並不總是存儲相同的緩衝僅HAL3)。對於每個捕獲請求,HAL3 獲取緩衝區句柄的地址。 HAL 不能使用地址來識別緩衝區,因為在 HAL 返回緩衝區後,地址可能會存儲另一個緩衝區句柄。您必須更新 HAL 以使用緩衝區句柄來標識緩衝區。例如,HAL 收到一個緩衝區句柄地址 A,該地址存儲緩衝區句柄 A。在 HAL 返回緩衝區句柄 A 後,緩衝區句柄地址 A 可能會在 HAL 下次接收到緩衝區句柄地址 A 時存儲緩衝區句柄 B。
  • 更新相機服務器的 SELinux 策略。如果特定於設備的 SELinux 策略授予媒體服務器運行攝像頭的權限,您必須更新 SELinux 策略以授予攝像頭服務器適當的權限。我們不鼓勵為 cameraserver 複製 mediaserver 的 SELinux 策略(因為 mediaserver 和 cameraserver 通常需要係統中的不同資源)。 Cameraserver 應該只擁有執行相機功能所需的權限,並且應該刪除 mediaserver 中任何不必要的與相機相關的權限。
  • 相機 HAL 和相機服務器之間的分離。 Android 8.0 及更高版本在不同於相機服務器的進程中額外分離了綁定相機 HAL。 IPC經過HIDL定義的接口。

驗證

對於包含攝像頭並運行 Android 7.0 的所有設備,請通過運行 Android 7.0 CTS 來驗證實現。儘管 Android 7.0 不包含用於驗證相機服務更改的新 CTS 測試,但如果您尚未進行上述更新,現有 CTS 測試將失敗。

對於包含攝像頭並運行 Android 8.0 及更高版本的所有設備,請通過運行 VTS 來驗證供應商實現。

相機 HAL 版本歷史

對於可用於評估Android相機HAL測試列表,請參閱相機HAL測試清單

安卓 10

Android 10 引入了以下更新。

相機API

相機 HAL

以下相機 HAL 版本已在 Android 10 中更新。

3.5

ICameraDevice

  • getPhysicalCameraCharacteristics :用於物理攝像機ID備份的邏輯相機裝置的相機的靜態信息。見多相機支持
  • isStreamCombinationSupported :此方法支持公共API,幫助客戶查詢是否支持會話配置。見API來查詢-流組合

ICameraDeviceSession

  • isReconfigurationNeeded :方法來告訴相機框架完整的流重新配置是否需要為可能的新的會話參數值。這有助於避免不必要的相機重新配置延遲。見會話重新配置的查詢
  • HAL緩衝器管理API :這些API允許需要代替耦合其相關的緩衝器的每個捕獲請求整個相機管道,從而導致潛在的顯著存儲器節省僅當相機HAL從照相機框架請求緩衝器。
    • signalStreamFlush :信號到HAL相機服務即將執行configureStreams_3_5並且HAL必須返回指定流的所有緩衝區。
    • configureStreams_3_5 :以類似ICameraDevice3.4.configureStreams ,但除此之外, streamConfigCounter計數器被提供以檢查之間的競爭條件configureStreams_3_5signalStreamFlush電話。

更新ICameraDeviceCallback

  • requestStreamBuffers :同步回調相機HAL打電話問了緩衝攝像機服務器。見requestStreamBuffers
  • returnStreamBuffers :相機HAL同步回調輸出緩衝器返回相機服務器。見returnStreamBuffers

3.4

以下鍵已添加到 Android 10 中的相機元數據中。

  • 圖片格式
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
    • ANDROID_SCALER_AVAILABLE_FORMATS_Y8
  • 相機元數據標籤
    • ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION
    • ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
    • ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP
    • ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
    • ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS
    • ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
    • ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
    • ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS
    • ANDROID_HEIC_INFO_SUPPORTED
    • ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
  • 能力
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
  • 值的ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT關鍵
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
  • 可用的動態深度流配置
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
  • 可用的 HEIC 流配置
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT

攝像頭模組

以下相機模塊版本已在 Android 10 中更新。

2.5

  • 添加notifyDeviceStateChange的設備,以通知照相機HAL時的物理變化,如折疊,影響相機和路由方法。

2.4

  • 設備與API級別29或更高的推出必須報告trueisTorchModeSupported

安卓 9

Android 9 版本對相機 API2 和 HAL 接口進行了以下更新。

相機API

  • 引入多攝像頭 API 以更好地支持具有多個面向同一方向的攝像頭的設備,從而實現散景和無縫變焦等功能。這允許應用程序將設備上的多個攝像頭視為一個邏輯單元(邏輯攝像頭)。捕獲請求也可以發送到由一個邏輯相機包含的單個相機設備。見多相機支持
  • 介紹會話參數。會話參數是可用捕獲參數的子集,修改後可能會導致嚴重的處理延遲。如果客戶端在捕獲會話初始化期間傳遞其初始值,則可以減輕這些成本。見會話參數
  • 添加光學穩定 (OIS) 數據鍵以實現應用級穩定和效果。見STATISTICS_OIS_SAMPLES
  • 添加外部閃存支持。見CONTROL_AE_MODE_ON_EXTERNAL_FLASH
  • 增加運動跟踪意圖CAPTURE_INTENT 。見CONTROL_CAPTURE_INTENT_MOTION_TRACKING
  • 不贊成LENS_RADIAL_DISTORTION並增加LENS_DISTORTION在它的位置。
  • 添加在失真校正模式CaptureRequest 。見DISTORTION_CORRECTION_MODE
  • 在支持的設備上添加對外部 USB/UVC 攝像頭的支持。見INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL

相機 HAL

3.4

更新ICameraDeviceSession

更新ICameraDeviceCallback

3.3

以下鍵已添加到 Android 9 中的相機元數據中。

  • 能力
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
  • 相機元數據標籤
    • ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
    • ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES
    • ANDROID_LENS_POSE_REFERENCE
    • ANDROID_LENS_DISTORTION
    • ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
    • ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
    • ANDROID_STATISTICS_OIS_DATA_MODE
    • ANDROID_STATISTICS_OIS_TIMESTAMPS
    • ANDROID_STATISTICS_OIS_X_SHIFTS
    • ANDROID_STATISTICS_OIS_Y_SHIFTS

安卓 8.0

Android 8.0 版本引入了 Treble。隨著高音,廠商相機HAL的實現必須binderized 。 Android 8.0 還包含對相機服務的以下主要增強功能:

  • 共享表面:啟用多個表面共享相同OutputConfiguration
  • 自定義相機模式的系統 API
  • onCaptureQueueEmpty

有關這些功能的更多信息,請參閱以下部分。

共享表面

此功能僅允許一組緩衝區驅動兩個輸出,例如預覽和視頻編碼,從而降低功耗和內存消耗。為了支持此功能,設備製造商需要確保他們的相機 HAL 和 gralloc HAL 實現可以創建由多個不同使用者(例如硬件合成器/GPU 和視頻編碼器)使用的 gralloc 緩衝區,而不​​僅僅是一個使用者。相機服務將消費者使用標誌傳遞給相機 HAL 和 gralloc HAL;他們需要分配正確類型的緩衝區,或者相機 HAL 需要返回不支持這種消費者組合的錯誤。

enableSurfaceSharing了解更多詳細信息開發者文檔。

用於自定義相機模式的系統 API

公共攝像頭 API 定義了兩種操作模式:正常和受限高速錄製。它們有相當不同的語義;例如,高速模式一次最多只能有兩個特定輸出。各種 OEM 都表示有興趣為特定於硬件的功能定義其他自定義模式。引擎蓋下,該模式僅僅是傳遞到一個整數configure_streams 。見: hardware/camera/device/3.2/ICameraDeviceSession#configurestreams

此功能包括一個系統 API 調用,OEM 相機應用程序可以使用它來啟用自定義模式。這些模式必須從整數值 0x8000 開始,以避免與添加到公共 API 的未來模式發生衝突。

為了支持此功能,OEM 只需將新模式添加到他們的 HAL,由在 configure_streams 上傳遞給 HAL 的這個整數觸發,然後讓他們的自定義相機應用程序使用系統 API。

方法名是android.hardware.camera2.CameraDevice#createCustomCaptureSession 。請參閱: frameworks/base/core/java/android/hardware/camera2/CameraDevice

onCaptureQueueEmpty

此 API 的目的是通過保持請求隊列盡可能為空來減少縮放等控制更改的延遲。 onCaptureQueueEmpty無需HAL工作;這純粹是一個框架方面的補充。想要利用它的應用程序需要向該回調添加一個偵聽器並做出適當的響應。通常這是通過向相機設備發送另一個捕獲請求。

相機 HIDL 接口

相機 HIDL 接口是對使用穩定的 HIDL 定義 API 的相機 HAL 接口的徹底改造。在最新的舊版 3.4 和 2.4(用於相機模塊)中引入的所有功能和相機功能也是 HIDL 定義的一部分。

3.4

對支持的元數據的少量添加和對 data_space 支持的更改:

  • 添加ANDROID_SENSOR_OPAQUE_RAW_SIZE如果靜態元數據為強制性RAW_OPAQUE格式的支持。
  • 添加ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE如果任何RAW格式支持靜態元數據為強制性。
  • 開關camera3_stream_t data_space字段到一個更靈活的定義,使用數據空間編碼的版本0定義。
  • 可用於 HALv3.2 或更新版本的通用元數據添加:
    • ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
    • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
    • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
    • ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
    • ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
    • ANDROID_SENSOR_OPAQUE_RAW_SIZE
    • ANDROID_SENSOR_OPTICAL_BLACK_REGIONS

3.3

擴展功能 HAL 的小修訂:

  • OPAQUE 和 YUV 重新處理 API 更新。
  • 對深度輸出緩衝區的基本支持。
  • 的加入data_space領域camera3_stream_t
  • 轉場的除了camera3_stream_t
  • 此外camera3流配置操作模式的camera3_stream_configuration_t

3.2

擴展功能 HAL 的小修訂:

  • 不贊成get_metadata_vendor_tag_ops 。使用get_vendor_tag_opscamera_common.h代替。
  • 不贊成register_stream_buffers 。由框架提供的HAL所有gralloc緩衝區process_capture_request可隨時是新的。
  • 添加部分結果支持。 process_capture_result可以與現有結果的子集被多次調用之前全部結果可用。
  • 手工模板添加到camera3_request_template 。應用程序可以使用此模板直接控制捕獲設置。
  • 重新設計雙向和輸入流規範。
  • 更改輸入緩衝區返迴路徑。緩衝區是返回process_capture_result而不是process_capture_request

3.1

擴展功能 HAL 的小修訂:

  • configure_streams通過消費者使用標誌的HAL。
  • 刷新調用以盡快刪除所有進行中的請求/緩衝區。

3.0

擴展功能 HAL 的第一次修訂:

  • 主要版本更改,因為 ABI 完全不同。從 2.0 開始,所需的硬件功能或操作模型沒有變化。
  • 重新設計的輸入請求和流隊列接口:框架在下一個請求和流緩衝區已經出隊的情況下調用 HAL。包括同步框架支持,這是高效實施所必需的。
  • 將觸發器移動到請求中,將大多數通知移動到結果中。
  • 合併所有的回調框架成一體的結構,並且所有設置方法成一個單一的initialize()調用。
  • 將流配置集成到單個調用中以簡化流管理。雙向流更換STREAM_FROM_STREAM結構。
  • 舊/有限硬件設備的有限模式語義。

2.0

擴展功能 HAL (Android 4.2) [camera2.h] 的初始版本:

  • 充分執行現有android.hardware.Camera API。
  • 允許在相機服務層中使用 ZSL 隊列。
  • 未針對任何新功能進行測試,例如手動捕獲控制、Bayer RAW 捕獲、RAW 數據的重新處理等。

1.0

初始 Android 相機 HAL (Android 4.0) [camera.h]:

  • 從 C++ CameraHardwareInterface 抽象層轉換而來。
  • 支持android.hardware.Camera API。

相機模組版本歷史

本節包含基於對相機硬件模塊模塊版本信息, camera_module_t.common.module_api_version 。兩個最重要的十六進制數字代表主要版本,而兩個最不重要的十六進制數字代表次要版本。

2.4

此相機模塊版本添加了以下 API 更改:

  1. 手電筒模式支持。該框架可以為任何具有閃光燈單元的相機設備打開手電筒模式,而無需打開相機設備。攝像頭設備訪問閃光燈單元的優先級高於攝像頭模塊;如果手電筒已通過模塊接口啟用,則打開相機設備將關閉手電筒。當有任何資源衝突,如open()被調用,以打開攝像裝置,相機模塊HAL必須通知通過火炬模式狀態回調火炬模式已被關閉的框架。
  2. 外部攝像頭(例如,USB 熱插拔攝像頭)支持。 API 更新指定僅當相機已連接並準備好用於外部熱插拔相機時,相機靜態信息才可用。調用獲得靜態信息是無效的呼叫時相機狀態不CAMERA_DEVICE_STATUS_PRESENT 。該框架僅依靠設備狀態更改回調來管理可用的外部攝像機列表。
  3. 相機仲裁提示。添加了對明確指示可以同時打開和使用的相機設備數量的支持。要指定設備的有效組合,在resource_costconflicting_devices領域始終應在集合camera_info通過返回的結構get_camera_info電話。
  4. 模塊初始化方法。在加載 HAL 模塊後由相機服務調用,以允許一次性初始化 HAL。它在調用任何其他模塊方法之前被調用。

2.3

此相機模塊版本添加了開放的舊式相機 HAL 設備支持。如果同一個設備可以支持多個設備 API 版本,框架可以使用它來打開相機設備作為較低設備 HAL 版本的 HAL 設備。標準的硬件模塊公開徵集( common.methods->open )不斷開放與支持的最新版本,這也是所列版本的相機設備camera_info_t.device_version

2.2

該攝像機模塊的版本從模塊增加了供應商的標籤支持,並棄用老vendor_tag_query_ops以前只能用設備開放訪問。

2.1

此相機模塊版本添加了對從相機 HAL 模塊到框架的異步回調的支持,用於通知框架有關相機模塊狀態的更改。提供一個有效的模塊set_callbacks()方法必須報告至少這個版本號。

2.0

報告此版本號的攝像頭模塊實現了攝像頭模塊 HAL 接口的第二個版本。可通過此模塊打開的相機設備可能支持 1.0 版或 2.0 版的相機設備 HAL 接口。該device_version camera_info的領域始終是有效的;所述static_camera_characteristics的字段camera_info是有效如果device_version字段為2.0或更高。

1.0

報告這些版本號的相機模塊實現了初始相機模塊 HAL 接口。所有可通過此模塊打開的相機設備僅支持相機設備 HAL 的版本 1。該device_versionstatic_camera_characteristics領域camera_info無效。只有android.hardware.Camera API可以通過該模塊及其設備的支持。