本頁面列出可用於評估 Android 相機的所有測試 硬體抽象層 (HAL)產品為原始設備 製造商 (OEM) 和應用程式 ,以便他們確保相機已正確導入。 有最低瑕疵的 HAL。雖然這是 Android 版 Google Cloud 開發人員 Compatibility Test Suite (CTS),可大幅提升相機測試的涵蓋範圍 確定能找出潛在的錯誤
通過這些測試後,原始設備製造商 (OEM) 就會進行驗證
是否已正確整合
相機硬體
抽象化層 (HAL) 3 介面針對 Pod 中的所有項目
檢查清單,的裝置導入方式可視為完整
Android 相機 HAL 介面的功能這樣裝置即可:
正確支援
android.hardware.camera2
套件
相機應用程式
相機 HAL3 規格
Android 相機 HAL3 規格 是具有公信力的來源 瞭解哪些裝置必須符合哪些條件;這個網頁提供了摘要 可當做檢查清單的所有測試相機 HAL 實作器 (例如 AP) 請逐行檢查相機 HAL3 規格,並確保 裝置也符合政策
目前的 HAL 規格定義在 Android 的這些檔案中 5.0 以上版本的通用 Android 平台開發套件 (PDK):
- 相機 HAL 3.x 介面和規格:
hardware/libhardware/include/hardware/camera3.h
、hardware/libhardware/include/hardware/camera_common.h
- 相機 HAL 3.x 中繼資料規格:
system/media/camera/docs/docs.html
- HAL 像素格式介面和規格:
system/core/libsystem/include/system/graphics.h
相機測試類型
以下是最新 Android 相機適用的主要測試類型 以及下方相關操作說明的參考資料:
- 供應商測試套件 (VTS):直接測試 相機 HAL 介面
- Compatibility Test Suite (CTS): 標準、自動化 Android 測試以確保裝置相容性詳情請參閱 和 Compatibility Test Suite 貿易聯盟 總覽。
- 映像檔測試套件 (ITS):手動執行 測試確保映像檔的正確性詳情請參閱 相機 ITS。
- 手動 TestingCam 測試:
從
pdk/apps/TestingCamera/
中的來源執行 - 手動 TestingCam2.1
測試:從
pdk/apps/TestingCamera2/
中的原始碼執行
下文將詳細說明所有測試類型。這些測試 按照原始設備製造商 (OEM) 預計執行的時間順序排列 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件
舉例來說,如果裝置未通過原生測試,則一定會無法通過 後續的 Compatibility Test Suite (CTS) 測試。如果裝置無法使用 CTS 繼續使用 Image Test Suite (ITS) 幾乎不多。建議做法 解決各類型測試失敗的狀況,再繼續進行下一組 測試。
供應商測試套件 (VTS) 測試
Android Vendor Test Suite (VTS) 這套測試套件 HIDL 介面層級。若要進一步瞭解如何使用 VTS,請參見 供應商測試套件。
Compatibility Test Suite (CTS) 測試
Camera Android Compatibility Test Suite (CTS) 測試功能著重裝置 相容性。如要瞭解如何設定測試環境,請參閱設定 CTS。
相機 CTS 測試的起始路徑為:platform/cts
。
使用支援外接鏡頭的裝置 (例如 USB 網路攝影機),執行 CTS 或測試時需要連接裝置 會自動失敗。外部相機範例包括:Logitech HD Pro Webcam C920 和 Microsoft LifeCam HD-3000。
請參閱 CTS 簡介 及其子頁面,瞭解執行 CTS 的一般操作說明。
用於測試
android.hardware.Camera
API
在 cts/tests/tests/
底下尋找以下相機測試:
hardware/src/android/hardware/cts/CameraTest.java
hardware/src/android/hardware/cts/CameraGLTest.java
hardware/src/android/hardware/cts/Camera_SizeTest.java
permission/src/android/permission/cts/CameraPermissionTest.java
用於測試
android.hardware.camera2
API
在 cts/tests/tests/
底下尋找以下相機測試:
hardware/src/android/hardware/camera2/cts/*
permission/src/android/permission/cts/Camera2PermissionTest.java
CTS Verifier 相機測試
請在以下位置尋找攝影機測試:
cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
映像檔測試套件 (ITS) 測試
Camera Image Test Suite (ITS) 測試可聚焦於圖像正確性。 如要執行測試,請在具有以下程式碼的工作站上執行 Python 指令碼: 已透過 USB 連接 Android 裝置。
您可以在
cts/apps/CameraITS
目錄。
每項測試都位於 tests/scene#
子目錄中。
如要進一步瞭解如何設定及執行測試,請參閱: 相機 ITS。
如需場景和測試說明,請參閱「相機 ITS 測試」。
ITS 測試通過或失敗。每個場景資料夾中的所有必要測試都必須通過。
未修訂的測試可能會失敗,且仍會視為傳遞
CtsVerifier
。
ITS 可測試未經 CTS 測試的情境, 是 HAL 3.2 測試計畫的一部分
媒體架構測試
在 MediaFrameworkTest 中,通過所有相機相關的媒體測試。請
請注意,這些測試必須在 Android 上安裝 mediaframeworktest.apk
裝置。您需要make mediaframeworktest
,然後使用 ADB
安裝產生的 .apk。指令範例如下。
相機相關媒體架構測試的起始路徑為:
platform/frameworks/base
請在這裡尋找測試的原始碼:
frameworks/base/media/tests/MediaFrameworkTest
如何設定這類測試:
make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk
其中 name 變數代表 。
您可以在以下目錄或其子目錄中找到所有測試:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
每個子目錄都代表一種測試類別:
functional/
integration/
performance/
power/
stress/
unit/
執行媒體架構測試
如要查看所有可用的測試,請按照下列步驟操作:
adb shell pm list instrumentation
這樣會產生類似以下的結果:
instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner (target=com.android.mediaframeworktest) instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner (target=com.android.mediaframeworktest) instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner (target=com.android.mediaframeworktest) instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner (target=com.android.mediaframeworktest)
找出並擷取元件 (介於 instrumentation:
之間)
而在每一行測試中都具備 (target=com.android.mediaframeworktest)
的信號。
元件是由目標套件名稱組成
(com.android.mediaframeworktest
) 和測試執行器名稱
(MediaFramework
)。
例如:
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
接著,您可以將每個元件傳遞至 adb shell am instrument
例如:
adb shell am instrument -w component.name
其中 component.name
等於擷取的值
。例如:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
請注意,雖然類別路徑是 Java 套件 + 類別名稱, 檢測套件不一定與 Java 套件相同。廠牌 在串連元件時,請務必使用 AndroidManifest.xml 套件 名稱,而不是測試執行器類別所在的 Java 套件。
如要執行單一類別測試,請傳遞 -e 類別
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
如果只要在測試類別中執行單一方法,請加上井字號 (#) 和
方法名稱 (在本例中為 testConnectPro
) 變更為類別名稱,如下所示:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
媒體設定功能測試
以下是功能測試的執行範例。這項測試會驗證 功能,提供相機設定組合的各種功能(例如 Flash、 曝光、WB、場景、相片大小和地理標記)
執行測試指令:
adb shell am instrument -w -r -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner
媒體整合測試
以下是整合測試的執行範例 mediaframeworktest/integration/CameraBinderTest.java 和 mediaframeworktest/CameraStressTestRunner.java:
adb shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'
如果成功,系統會輸出類似以下的輸出內容:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
媒體成效測試
系統將開啟這個預覽記憶體測試,並發布相機預覽畫面 200 次。每 20 次疊代都會記錄 PS 媒體伺服器的數據匯報 且會在疊代 200 次後比較記憶體用量測試將 但是差異大於 150kM 時就會失敗
執行測試指令:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
如要查看更詳細的輸出內容,請前往:
/sdcard/mediaMemOutput.txt
媒體單元測試
執行單元測試的指令都很類似。舉例來說, CameraMetadataTest.java 後,指令如下:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
媒體壓力測試
這項測試旨在強調相機的拍攝和錄影效果。
執行測試指令:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
所有測試都應通過。
手動 TestingCam 測試
執行下列檢查後,TestingCam 應用程式應手動執行。
TestingCam 的來源位置:pdk/apps/TestingCamera/
相機傾斜角度不失焦
啟動 TestingCam,開啟預覽功能,並確定自動對焦模式已設為 無限。使用「拍照」按鈕擷取 遠方拍攝主體 (至少距離 10 公尺) 並水平對準鏡頭 向上 (與垂直方向相關) 及向下 (關閉至垂直方向);以 從下到上,可能來自底下的樹葉/樹枝 從向下拍攝的例子,可以看出 建構應用程式無論拍攝目標為何,遠方的拍攝目標都應該清晰可見。儲存 然後在圖片庫檢視畫面中檢視照片,這樣你就能放大並查看 讓相片更清晰可見
請注意,如果相機設有 VCM 致動器才能通過這項測試,你必須 或者需要某種 SW 形式的封閉式 AF 控制系統 根據加速計資料判斷相機方向 同時,我們也需要確保鏡頭無限大位置的工廠校正。
手動 TestingCam2 測試
應使用下列檢查項目,手動執行 TestingCam2 應用程式
執行任務TestingCam2 的來源位置:pdk/apps/TestingCamera2/
JPEG 擷取
啟動 TestingCam2,然後按下「JPEG」按鈕。圖片 顯示在觀景窗圖片右側的 包括採用相同方向