Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

相機版本支持

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

術語

此頁面上使用以下術語:

相機API1
通過android.hardware.Camera類公開的Android 4.4及更低版本設備上的應用程序級相機框架。
相機API2
通過android.hardware.camera2包公開的Android 5.0及更高版本設備上的應用程序級相機框架。
相機HAL
SoC供應商實現的攝像頭模塊層。應用程序級別的公共框架建立在相機HAL之上。
相機HAL3.1
相機設備HAL的版本與Android 4.4一起發布。
相機HAL3.2
相機設備HAL的版本隨Android 5.0一起發布。
相機API1 CTS
在Camera API1之上運行的一組Camera CTS測試。
相機API2 CTS
在Camera API2之上運行的其他一組Camera CTS測試。
高音
通過新的供應商界面將供應商實施(由矽製造商編寫的設備特定的,較低級別的軟件)與Android OS框架分開。
HIDL
Treble引入的HAL接口定義語言 ,用於指定HAL及其用戶之間的接口。
VTS
與Treble一同推出的供應商測試套件

相機API

Android包含以下相機API。

相機API1

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

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

相機API2

Camera API2框架向應用程序公開了較低級別的相機控制,包括有效的零拷貝連拍/流傳輸和曝光,增益,白平衡增益,顏色轉換,降噪,銳化等的逐幀控制。有關詳細信息,請觀看Google I / O視頻概述

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

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

各個功能通過Camera API2接口中的android.request.availableCapabilities屬性公開。 FULL設備需要MANUAL_SENSORMANUAL_POST_PROCESSING功能等。 RAW功能即使對於FULL設備也是可選的。 LIMITED設備可以播報這些功能的任何子集,包括任何一個。但是,必須始終定義BACKWARD_COMPATIBLE功能。

該設備支持的硬件級別及其支持的特定Camera API2功能可作為以下功能標誌使用,以允許Google Play過濾Camera 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相機測試。

不具有Camera HAL3.2實現且不支持完整Camera API2接口的設備仍必須通過Camera API2 CTS測試。但是,設備以Camera API2 LEGACY模式運行(在概念上將Camera API2調用映射到Camera API1調用),因此將自動跳過與Camera API1以外的功能有關的所有Camera API2 CTS測試。

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

VTS要求

運行具有綁定的HAL實現的Android 8.0及更高版本的設備必須通過Camera VTS測試

相機框架加固

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

API1的架構更改

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

  • HAL3,在攝像機服務使用BufferQueue在進程之間傳遞緩衝區的情況下, 無需更新供應商

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

    圖1. HAL3上的API1中的Android 7.0攝像機和媒體堆棧

  • HAL1支持在視頻緩衝區中傳遞元數據, 供應商必須更新HAL以使用kMetadataBufferTypeNativeHandleSource (Android 7.0不再支持kMetadataBufferTypeCameraSource 。)

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

    圖2. HAL1上的API1中的Android 7.0攝像機和媒體堆棧

API2的架構更改

對於HAL1或HAL3上的API2,BufferQueue傳遞緩衝區,以便那些路徑繼續起作用。適用於以下API2的Android 7.0體系結構:

  • HAL1不受照相機服務移動的影響,並且不需要供應商更新
  • HAL3 受到影響,但沒有任何一家廠商更新是必要的:

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

    圖3. HAL3上的API2中的Android 7.0攝像機和媒體堆棧

其他要求

為加強媒體和攝像機框架安全性而進行的體系結構更改包括以下其他設備要求。

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

驗證方式

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

對於所有包含相機並運行Android 8.0或更高版本的設備,請通過運行VTS驗證供應商實施。

相機HAL版本歷史

有關可用於評估Android Camera HAL的測試列表 ,請參閱Camera HAL測試清單

Android 10

Android 10引入了以下更新。

相機API

相機HAL

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

3.5

ICameraDevice

  • getPhysicalCameraCharacteristics :支持邏輯相機設備的物理相機ID的靜態相機信息。請參閱多相機支持
  • isStreamCombinationSupported :此方法支持公共API,該公共API可幫助客戶端查詢是否支持會話配置。請參閱API以查詢流組合

ICameraDeviceSession

  • isReconfigurationNeeded :告訴攝像機框架對於可能的新會話參數值是否需要完整的流重新配置的方法。這有助於避免不必要的攝像機重新配置延遲。請參閱會話重新配置查詢
  • HAL緩衝區管理API :這些API允許攝像機HAL僅在需要時才從攝像機框架請求緩衝區,而不​​是在整個攝像機管道中將每個捕獲請求與其關聯的緩衝區耦合在一起,從而可能顯著節省內存。
    • signalStreamFlush :向HAL signalStreamFlush信號,表示攝像頭服務將要執行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

Android 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

Android 8.0

Android 8.0版本引入了Treble。使用Treble,必須將供應商的Camera HAL實現綁定 。 Android 8.0還包含對Camera服務的以下關鍵增強功能:

  • 共享的曲面:啟用多個共享同一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

此功能包括OEM相機應用程序可以用來啟用自定義模式的系統API調用。這些模式必須以整數值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界面

Camera HIDL接口是對使用穩定的HIDL定義的API的Camera HAL接口的完整檢查。最新的舊版3.4和2.4(適用於相機模塊)引入的所有功能和相機功能也是HIDL定義的一部分。

3.4

對支持的元數據進行了少量添加,並對data_space支持進行了更改:

  • 如果支持RAW_OPAQUE格式,則必須添加ANDROID_SENSOR_OPAQUE_RAW_SIZE靜態元數據。
  • 如果支持任何RAW格式,則必須添加ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE靜態元數據。
  • 使用數據空間編碼的版本0定義,將camera3_stream_t data_space字段切換為更靈活的定義。
  • 可用於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_ops中的camera_common.h
  • 棄用register_stream_buffers 。框架在process_capture_request提供給HAL的所有gralloc緩衝區可能隨時都是新的。
  • 添加部分結果支持。在獲得完整結果之前,可以使用可用結果的子集多次調用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的Camera硬件模塊的模塊版本信息。兩個最高有效十六進制數字代表主版本,而兩個最低有效十六進制數字代表次版本。

2.4

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

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

2.3

此攝像機模塊版本增加了開放式舊攝像機HAL設備支持。如果同一設備可以支持多個設備API版本,則該框架可以使用它來打開相機設備作為較低級別的設備HAL版本。標準硬件模塊open調用( common.methods->open )繼續使用最新支持的版本打開相機設備,該版本也是camera_info_t.device_version列出的版本。

2.2

此攝像頭模塊版本從模塊中添加了供應商標籤支持,並棄用了以前只能在打開設備的情況下才能訪問的舊vendor_tag_query_ops

2.1

此攝像頭模塊版本從攝像頭HAL模塊向框架添加了對異步回調的支持,用於將攝像頭模塊狀態的更改通知給框架。提供有效的set_callbacks()方法的模塊必須至少報告此版本號。

2.0

報告此版本號的攝像機模塊實現了攝像機模塊HAL接口的第二個版本。通過此模塊可打開的相機設備可以支持相機設備HAL接口的1.0版或2.0版。 device_version字段始終有效;如果device_version字段為2.0或更高版本,則camera_infostatic_camera_characteristics字段有效。

1.0

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