Android Camera Image Test Suite (ITS) 是 Android Compatibility Test Suite (CTS) 驗證器的一部分,並提供驗證圖片內容的測試。CTS Verifier 可透過 Camera ITS-in-a-box 支援 ITS 自動化測試;手動測試支援範圍涵蓋所有 Android 裝置板型規格。
ITS-in-a-box 包含下列優點:
- 自動化:測試期間不需要人為介入。
- 簡易疑難排解程序。測試環境的一致性可減少設定錯誤,並提高可重現性。
- 效率。可針對個別相機/場景重試,可提高測試執行效率。
開始使用
這項服務包含一個塑膠盒,內含由電腦輔助設計 (CAD) 圖紙以雷射切割而成的圖表平板,以及測試中的裝置 (DUT)。下表說明不同 ITS-in-a-box 架構的功能和規格。
支架用 | 圖表距離 | 被測物相機的 FoV 範圍 (約) | 功能 |
---|---|---|---|
模組化基本設定 | 22 公分 | 16° - 120° |
|
模組基本 rig 和電話擴充 rig | 22 公分 - 100 公分* | 10° - 120° | |
WFoV ITS-in-a-box | 22 公分 | 60° - 120° |
|
立即可用的 RFoV ITS | 31 公分 | 60° - 90° |
|
*可根據不同的圖表距離調整遠距延伸裝置長度。 |
如要開始使用 Camera ITS-in-a-box,請按照下列步驟操作:
設定平板電腦
本節將逐步說明如何設定平板電腦,以便搭配位於
CameraITS
目錄中的
Camera ITS 測試使用。以下操作說明以 Pixel C 做為範例平板電腦。如要瞭解平板電腦的相關規定和建議,請參閱「平板電腦需求條件」一文。
注意:Camera ITS Python 指令碼會自動在平板電腦上設定下列選項:
設定 > 螢幕 > 休眠 > 閒置 30 分鐘後
自動亮度 > 關閉
- 為平板電腦充電並開機。如果系統提示您設定帳戶,請略過 (Camera ITS 不需要與平板電腦配對任何帳戶)。
- 將平板電腦更新至 Android 7.0 以上版本。Android 6.x 以下版本不支援相機 ITS。
- 啟用開發人員模式。
- 返回「設定」並選取「開發人員選項」。
啟用選項 - 開啟
- 螢幕不休眠
- USB 偵錯 (可讓主機在偵錯模式下執行平板電腦。當您首次將平板電腦連線至主機時,平板電腦會顯示「允許 USB 偵錯嗎?」提示。如果平板電腦未顯示偵錯提示,請先中斷連線,然後重新連線。)
停用選項 - 自動系統更新
- 透過 USB 驗證應用程式
- 執行
$ adb devices
來列出可用裝置,藉此判斷 DUT 和圖表 ID。如要確認device_id
和chart_id
,請接上及拔除裝置,然後觀察連線及中斷連線的裝置。 - 執行三次測試,隱藏可在平板電腦螢幕上遮蓋圖表的提示和使用者提示。
- 將平板電腦正面朝上放在桌上 (請勿將平板電腦貼在盒子的背板上)。
- 執行下列指令:
第 2 和第 3 個場景需要平板電腦顯示圖片,因此平板電腦會顯示「允許 Google 雲端硬碟存取裝置上的相片、媒體和檔案嗎?」。請按下「Allow」清除這個提示,並避免日後出現提示。python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
- 再次執行指令。平板電腦會顯示「保留此檔案的副本嗎?」提示,並建議使用 Google 雲端硬碟。如要清除這則提示 (並避免日後出現提示),請按下「雲端硬碟」圖示,然後點選「取消」,即可將檔案上傳到雲端硬碟。
- 最後,請執行
tools/run_all_tests.py
,並確認指令碼循環切換不同場景時,場景會自動變更。雖然大部分的測試都會失敗 (因為相機並未對準圖表),但您可以確認平板電腦是否正確地循環播放場景,且不會在畫面上顯示任何提示或其他彈出式視窗。
執行測試
執行 ITS-in-a-box 前,請確認測試設定包含下列硬體和軟體:
- 一 (1) 開箱 ITS
- 一 (1) 部高解析度 10 吋平板電腦,用於顯示場景,序號:5811000011
- 已安裝 CTS Verifier 7.0_8+ 以上版本應用程式的 DUT 一 (1) 部。示例 DUT:
- 一 (1) 部 Pixel NOF26W 用於後置鏡頭(0) 測試,序號:FA6BM0305016。如要安裝 CTS 驗證器應用程式,請解壓縮
android-cts-verifier.zip
,然後執行adb -s FA6BM0305016 install -r -g android-cts-verifier/CtsVerifier.apk
- 一 (1) 部 Pixel NOF26W 用於後置鏡頭(0) 測試,序號:FA6BM0305016。如要安裝 CTS 驗證器應用程式,請解壓縮
執行平板電腦場景
如要在後置鏡頭上執行 0 到 4、6 和 scene_change 場景,請按照下列步驟操作:
cd android-cts-verifier/CameraITS
. build/envsetup.sh
python tools/run_all_tests.py camera=0
例子:
重試場景
你可以為單一攝影機重試場景:
- 如要重試單一攝影機的場景,請按照下列步驟操作:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=3,4
執行場景 5
場景 5 需要特殊設定和特定照明 (詳情請參閱 CTS Verifier 中的 CameraITS.pdf
,您可以在 Compatibility Test Suite Downloads 下載)。您必須另外執行場景 5 (在方塊外)。
如要在單一裝置上執行前置與後置鏡頭的畫面 5,請按照下列步驟操作:
python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5
取得結果
您可以在測試期間查看結果,並將已完成的結果儲存為報表。
- 查看結果。如何將相機 ITS 結果儲存為報表:
- 按下「通過」並儲存報表。
圖 3. 相機 ITS 報告 - 從裝置提取報告:
adb -s FA6BM0305016 pull /sdcard/verifierReports
- 解壓縮報表檔案並查看
test_result.xml
。
圖 4. 相機 ITS 報告
- 按下「通過」並儲存報表。
平板電腦需求
針對 Android 15 以上版本,用於 ITS 圖表顯示的平板電腦必須列於下列平板電腦許可清單。如需支援低光源場景測試的平板電腦清單,請參閱「支援低光源場景的平板電腦」。如為 Android 14 以下版本,請參閱「Android 14 以下版本的平板電腦需求」。
系統會根據下列條件選擇許可清單中的平板電腦:
- 顯示大小約為 10 吋,螢幕解析度大於 1920 x 1200 像素。
- 無論螢幕變暗會造成任何測量寬度調節 (PWM) 而導致的閃爍情形,均不可視為此情形。
- 能夠擷取 ITS 測試傳送的 ADB 指令,以及顯示具有指示亮度的圖表圖片。
brightness
值必須根據平板電腦型號在 config.yml
中設定。如要判斷平板電腦型號是否與許可清單中的裝置名稱相符,請執行 adb shell getprop | grep 'ro.product.device'
ADB 指令,列印 ro.product.device
值。
裝置 | 螢幕尺寸 (英寸) |
顯示大小 (像素) |
平板電腦尺寸 (英寸) |
螢幕 亮度 |
裝置名稱 (ro.product .device) |
平板電腦 OS 版本 |
---|---|---|---|---|---|---|
Google Pixel C |
10.2 | 2560 x 1800 | 9.53 x 7.05 x 0.28 | 96 | 龍 | Android 6 以上版本 |
榮耀 學名:Pad 8 |
11 | 2000 x 1200 | 10.18 x 6.76 x 0.29 | 192 | HNHEY-Q | Android 12 |
Huawei MediaPad m5 |
10.8 | 2560 x 1600 | 10.18 x 6.76 x 0.29 | 192 | HWCMR09 | Android 8 以上版本 |
Lenovo Tab M10 Plus |
10.3 | 1920 x 1200 | 9.61 x 6.03 x 0.32 | 192 | X606F | Android 9 以上版本 |
Lenovo Tab P11 |
11 | 2000 x 1200 | 10.17 x 6.42 x 0.30 | 192 | J606F | Android 11 以上版本 |
Lenovo Tab P11 Gen2 |
11.5 | 2000 x 1200 | 10.59 x 6.67 x 0.29 | 192 | TB350FU | Android 13 以上版本 |
Nokia T21 |
10.4 | 2000 x 1200 | 9.74 x 6.19 x 0.30 | 192 | AGTA | Android 12 以上版本 |
Samsung Galaxy Tab A7 |
10.4 | 2000 x 1200 | 9.75 x 6.2 x 0.28 | 192 | gta4lwifi | Android 10 以上版本 |
Samsung Galaxy Tab A8 |
10.5 | 1920 x 1200 | 9.72 x 6.73 x 0.27 | 192 | gta8wifi | Android 11 以上版本 |
Samsung Galaxy Tab A9+ |
11 | 1920 x 1200 | 10.12 x 6.64 x 0.27 | 192 | gta9pwifi | Android 13 以上版本 |
Vivo Pad2 |
12.1 | 2800 x 1968 | 10.47 x 7.54 x 0.26 | 192 | DPD2221 | Android 13 以上版本 |
小米 Pad 5 |
11 | 2560 x 1600 | 10.18 x 6.76 x 0.29 | 192 | nabu | Android 13 以上版本 |
Xiaomi Redmi Pad |
10.61 美元 | 2000 x 1200 | 9.86 x 6.22 x 0.28 | 192 | yunluo | Android 14 以上版本 |
Xiaomi Redmi Pad SE |
11 | 2560 x 1600 | 10.06 x 6.58 x 0.29 | 192 | xun | Android 13 以上版本 |
支援低光源環境的平板電腦
下表列出支援低光源場景測試的平板電腦。這些平板電腦可達到低光源場景所需的亮度,讓受測設備正確曝光圖表。裝置 | 裝置名稱 (ro.product.device) | 平板電腦 OS 版本 |
---|---|---|
華為 MediaPad m5 |
HWCMR09 | Android 8 以上版本 |
Samsung Galaxy Tab A8 | gta8wifi | Android 11 以上版本 |
Samsung Galaxy Tab A9+ | gta9pwifi | Android 13 以上版本 |
Xiaomi Pad 5 | nabu | Android 13 以上版本 |
Xiaomi Redmi Pad SE |
xun | Android 13 以上版本 |
Android 14 以下版本適用的平板電腦需求
平板電腦的螢幕解析度必須為 10 英寸,且螢幕解析度必須大於 1920 x 1200 像素。平板電腦不得使用脈衝寬度調變 (PWM) 來設定亮度。brightness
值必須根據平板電腦型號在 config.yml
中設定。下表列出適用於 ITS 測試的建議平板電腦,以及平板電腦適用的 DUT Android 版本。
裝置 | 螢幕尺寸 (英寸) |
顯示大小 (像素) |
平板電腦尺寸 (英寸) |
螢幕 亮度 |
顯示 位元 |
支援的 DUT 作業系統 |
支援的 平板電腦作業系統 |
---|---|---|---|---|---|---|---|
Samsung Galaxy Tab A8 |
10.5 | 1920 x 1200 | 9.72 x 6.37 x 0.27 | 192 | 8 | Android 13 以上版本 | Android 11 以上版本 |
Xiaomi Pad 5 |
11 | 2560 x 1600 | 10.03 x 6.55 x 0.27 | 1024 | 11 | Android 12 以上版本 | 僅限 Android 11 |
Lenovo Tab M10 Plus |
10.3 | 1920 x 1200 | 9.61 x 6.03 x 0.32 | 192 | 8 | Android 12 以上版本 | Android 9 以上版本 |
Samsung Galaxy Tab A7 |
10.4 | 2000 x 1200 | 9.75 x 6.2 x 0.28 | 192 | 8 | Android 12 以上版本 | Android 10 以上版本 |
Chuwi Hi9 Air 10.1 |
10.1 | 2560 x 1600 | 9.52 x 6.77 x 0.31 | 192 | 8 | Android 7 以上版本 | Android 8 以上版本 |
Asus ZenPad 3 |
9.7 | 2048 x 1536 | 9.47 x 6.44 x 0.28 | 192 | 8 | Android 7 以上版本 | Android 6 以上版本 |
Huawei MediaPad m5 |
10.8 | 2560 x 1600 | 10.18 x 6.76 x 0.29 | 192 | 8 | Android 7 以上版本 | Android 8 以上版本 |
Google Pixel C |
10.2 | 2560 x 1800 | 9.53 x 7.05 x 0.28 | 96 | 8 | Android 7 以上版本 | Android 6 以上版本 |
Sony Xperia Z4 |
10.1 | 2560 x 1600 | 10 x 6.57 x 0.24 | 192 | 8 | Android 7 以上版本 | Android 5 以上版本 |
常見問題
問題 1:如何判斷裝置需要哪種測試裝置?
RFoV ITS-in-a-box 修訂版 1 會測試 RFoV 攝影機,以便測試
CameraITS/tests
目錄中的平板電腦場景。RFoV 的定義為 60° < FoV < 90°。如果攝影機的 FoV 較大,可能會在圖片中顯示燈光,或是圖表涵蓋的 FoV 範圍太小,進而影響測試結果。
WFoV ITS-in-a-box 修訂版 2 會針對
CameraITS/tests
目錄中的平板電腦情境測試,測試 WFoV 攝影機。WFoV 的定義為 FoV >= 90°。修訂版本 2 測試擴充項目與修訂版本 1 相同,但更大。修訂版 2 測試架可在 Android 9 以上版本測試 RFoV 和 WFoV 相機。由於佔用空間較大
如果 DUT 是平板電腦
模組化基礎攝影機架
會測試
CameraITS/tests
目錄中平板電腦場景測試的 WFoV 攝影機。WFoV 的定義為 FoV >= 90°。模組化基礎攝影機架可同時測試搭載 Android 9 以上版本的裝置的 RFoV 和 WFoV 攝影機。它也支援遠距延伸裝置,可用於測試遠距攝影機,並提供更長的最小焦距。模組式底層在功能上與 WFoV ITS 套裝內容相同,但較小。
感應器融合盒會測試相機/陀螺儀時間偏移,以及多相機系統的畫面同步,並在 scenes=sensor_fusion
中進行測試。REALTIME
功能旗標需要相機/陀螺儀時間偏移值小於 1 毫秒。
多鏡頭裝置可透過單一測試架進行靜態 ITS 測試,如果相機具有 REALTIME
功能旗標,則可使用感應器融合測試架。
下表列出一些設定範例。
範例 | 相機鏡頭 | 即時? | 建議的 rig | 附註 |
---|---|---|---|---|
1 | 75° | 否 | Rev 1 或 2 | Android 7.0 以上版本 |
2 | 75° | 是 | 模組化底座、Rev 1 或 2 和感應器融合 | Android 9 以上版本 |
3 | 75° + 95° | 是 | Rev 2 + 感應器融合 | Android 9 以上版本 |
4 | 75° + 95° + 20° | 是 | 模組化底座、遠距延伸和感應器融合 | Android 9 以上版本 |
5 | 75° + 95° 平板電腦 | 否 | Rev 2 | Android 9 以上版本 |
問題 2:如何指定使用中的測試硬體?
如要指定正確的測試裝置,請確認圖表距離參數正確無誤。rev1 測試架 (RFoV) 的圖表距離為 31 公分,rev2 測試架 (WFoV) 的圖表距離為 22 公分。根據預設,圖表距離設為 31 公分。
Android 10 到 Android 11
如要透過 Android 10 至 11 找出正確的測試裝置,請在指令列中新增dist
標記。dist
的預設值為 31
。執行下列指令,變更 chart_distance
參數。python tools/run_all_tests.py ... chart=# dist=22
Android 12 以上版本
如要在 Android 12 以上版本中找出正確的測試裝置,您可以編輯 config.yml 檔案來變更chart_distance
參數。edit config.yml chart_distance: 31.0 → chart_distance: 22.0
問:如何控制平板電腦亮度?
平板電腦的亮度預設為 96,
如要在搭載 Android 7.0 至 Android 9 的平板電腦上變更亮度,請執行以下操作:
edit tools/wake_up_screen.py DISPLAY_LEVEL=96 → DISPLAY_LEVEL=192
如要變更搭載 Android 10 至 11 的平板電腦亮度,您可以在指令列中新增 brightness
旗標來變更值:
python tools/run_all_tests.py device=# camera=# chart=# brightness=192
如要在搭載 Android 12 以上版本的平板電腦上變更亮度,請執行以下操作:
edit config.yml brightness: 96 → brightness: 192
Q4:如何對單一測試進行偵錯?
您可以為偵錯目的個別執行測試,但除非執行整個場景,否則結果不會回報至 CtsVerifier.apk
。
如要在 Android 11 以下版本中執行個別場景:
- 在
tools/run_all_tests.py
中新增scenes
標記,藉此載入場景:python tools/run_all_tests.py device=# camera=# chart=# scenes=#
-
在系統記錄場景已載入
stdout
後,按下 Control+C 即可停止測試。如果畫面上已顯示正確的情境,請喚醒螢幕:
python tools/wake_up_screen.py screen=#
-
執行個別測試。
python tests/scene#/test_*.py device=# camera=#
接著,系統會在本機目錄中產生圖表,並將
stdout
和stderr
列印到畫面上。如要取得更多偵錯資訊,請在指令碼中加入
print
陳述式。如要增加測試輸出內容以便偵錯,請新增debug=True
標記。python tests/scene#/test_*.py device=# camera=# debug=True
執行 tools/run_all_tests.py
時,結果會印到本機畫面,圖片會儲存在本機目錄中,而非產生的 /tmp/tmp###
目錄。
如要在 Android 12 以上版本中執行個別場景:
-
編輯
config.yml
檔案。edit config.yml camera: <camera-id> → camera: 0 scene: <scene-name> → scene: scene1_1
-
執行個別測試。
python tools/run_all_tests.py -c config.yml --test_bed TEST_BED_TABLET_SCENES
結果會列印在 /tmp/logs/mobly/TEST_BED_TABLET_SCENES/
目錄中,並按執行時間排序。
問題 5:為什麼我需要在整個情境中執行失敗的測試,而不是個別重新執行測試?
您可以為偵錯目的個別執行測試,但除非執行整個場景,否則結果不會回報至 CtsVerifier.apk
。
攝影機 ITS 可確保第三方應用程式具有相容的相機介面。與單元測試類似,每項測試都會強調攝影機的單一規格。為了找出不可靠的行為,這些測試應以群組形式通過整個場景。例如,雖然一項不可靠的測試可能會重新執行整個場景,但要通過多次不可靠的測試,便難以通過。
舉例來說,假設場景中有 10 項測試,每項測試都有 50% 的機率傳回 PASS
,透過個別執行每項測試,操作員很有可能讓攝影機通過攝影機 ITS。不過,如果以場景為單位匯總執行測試,場景僅有 0.1% 的機率通過。
問 6:如何執行單一場景或重新排序執行場景?
根據預設,tools/run_all_tests.py
指令碼會依序執行所有場景。不過,您可以個別或依指定順序執行場景,並回報至 CtsVerifier.apk
。
如要在 Android 11 以下版本中執行個別場景 (例如場景 2),或依特定順序執行多個場景,請按照下列步驟操作:
python tools/run_all_tests.py device=# camera=# chart=# scenes=2
python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
如要在 Android 12 以上版本中依特定順序執行個別場景或多個場景,請按照下列步驟操作:
python tools/run_all_tests.py scenes=2
python tools/run_all_tests.py scenes=3,2
其他參數則是在 config.yml
檔案中設定。
問題 7:平板電腦設定中的場景 1 測試失敗,但使用紙張圖通過。哪裡出了問題?
請確認平板電腦和測試環境符合下列規格。
平板電腦規格
請確定平板電腦符合下列規格:
- 螢幕尺寸 (英寸):10 英寸
- 螢幕尺寸 (像素):大於 1920 x 1200 像素
詳情請參閱 平板電腦相關規定。
平板電腦亮度
如果平板電腦螢幕亮度過低,測試可能無法獲得正確結果。
詳情請參閱「 如何控制平板電腦的亮度?」
盒子照明程度 (需要使用勒克斯計)
請確認平板電腦開啟時的目標勒克斯值介於 100 到 300 之間。
如果亮度過高,scene1/test_param_flash_mode.py
會傳回 FAIL
。如果光度太低,多項測試就會失敗。
Q8:如何對感應器融合測試進行偵錯?
確認你已加入
dialout
群組。groups | egrep ‘dialout'
判斷 Microchip 技術是否已連線至 USB 連接埠,確保感應器融合控制器已連線。
lsusb … Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc. …
執行測試多次,並使用下列指令取得測試嘗試次數的分布。
在 Android 11 以下版本中:
python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
在 Android 12 以上版本中:
python tools/run_sensor_fusion_box.py num_runs=10
其他參數會在
config.yml
檔案中設定。執行輸出內容位於
sensor_fusion_#
資料夾下建立的/tmp/tmp###
資料夾中,其中#
是執行次數。失敗的常見原因包括:- 手機未正確置中。
- 圖片中沒有足夠的特徵 (通常是視野範圍或光線問題)。
- 傳回的
FAIL
有效,且相機與陀螺儀之間的時間偏移必須修正。
Q9:回報測試錯誤時,應附上哪些資訊?
回報測試錯誤時,請加入測試產生的檔案和圖片。
- 如果您是透過
tools/run_all_tests.py
執行測試,請將壓縮的/tmp/
目錄附加至錯誤。 - 如果您單獨執行測試,請將所有螢幕輸出內容和產生的圖片附加至錯誤。
請一併附上錯誤報告。當問題測試失敗後,請使用下列指令產生錯誤報告,並將產生的 ZIP 檔案附加至錯誤。
adb -s device_id bugreport
問題 10:如何使用相機距離最短 25 公分的相機進行 sensor_fusion 測試場景?
如果相機無法對焦在 25 公分的距離,請移除感應器融合框的圖表安裝面板。將圖表放在 DUT 可聚焦的距離,並將 config.yml
中的 chart_distance
變更為 DUT 與圖表之間的測量距離。圖 5 顯示如何在這種情況下測量圖表距離的範例。
edit config.yml chart_distance: 25 → chart_distance: DISTANCE_BETWEEN_DUT_AND_CHART
Q11:如果相機的最小焦距會在 31 公分圖表距離下產生模糊圖像,該如何為該相機執行平板電腦測試場景?
如果相機無法在 31 公分 (RFoV 測試架的深度) 的距離下拍出足夠清晰的圖像,請將相機安裝在測試架前方,並保持適當距離,讓圖表場景填滿相機的視野範圍 (FoV) 約 60%,以便拍出更清晰的圖像。這個距離可能會小於相機的最低對焦距離。將 chart_distance
放在 config.yml
中,距離為 31 公分。平板電腦上的圖表縮放設定是由相機 FoV 決定,如下表所示:
相機視野 | 圖表縮放比例係數 |
---|---|
60 > 視野 > 40 | 0.67 倍 |
40 > 視野 > 25 | 0.5 倍 |
視野角小於 25 | 0.33 倍 |
Q12:使用邏輯多鏡頭 API 時,哪些測試會在哪些相機上執行?
如果相機使用
REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
,所有支援的 ITS 測試都會在頂層邏輯相機上執行。系統會在實體子相機上執行部分 ITS 測試,這些測試會列於 tools/run_all_tests.py
中的 SUB_CAMERA_TESTS
常數下方。