本頁說明相機服務中的偵錯工具,可查看傳送至相機 HAL 和從相機 HAL 傳送的擷取要求和結果值變化。攝影機服務包含 watch 和 dumpsys 指令。
這項功能適用於搭載 Android 13 以上版本的裝置,可透過 watch 指令控管標記的監控和存取時間、從開啟的用戶端即時預覽標記監控傾印,以及查看已關閉用戶端的快取傾印。dumpsys 指令可存取偵錯資訊,但不會提供已關閉用戶端的標記監控傾印。
手錶指令
本節說明如何使用 watch 指令,並提供相關範例。
開始監控代碼
如要開始監控代碼,請使用:
adb shell cmd media.camera watch start -m <tags> [-c <clients>]例子:
adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome引數:
tags:以半形逗號分隔的待監控標記清單。也接受簡短的3a,其中3a是指與 AF、AE 和 AWB 相關的所有android.control.*標記組合 (如需標記完整清單,請參閱TagMonitor.cpp)。clients:選用引數。以半形逗號分隔的用戶端套件名稱清單,系統會監控這些套件的標記。如果未傳遞任何用戶端引數,或用戶端清單中存在all,則會監看所有用戶端。
這個指令會在開啟的用戶端和隨後開啟的任何用戶端中啟動標記監控 (直到呼叫 stop 為止)。呼叫 start 後,相機服務會在用戶端關閉時,從用戶端快取標記監控傾印。
除非呼叫 start,否則攝影機服務不會監控任何用戶端的標記,也不會快取標記監控傾印。如果 all 是在 clients 參數中傳遞,攝影機服務會監控標記,並從所有用戶端快取監控傾印。
傾印標記監控資訊
如要傾印標記監控資訊,請使用:
adb shell cmd media.camera watch dump這項指令會將標記監控資訊傾印至標準輸出,然後結束。系統會列印自 start (或上次 clear) 關閉的用戶端快取代碼監控傾印,以及開放用戶端的最新代碼監控傾印。
輸出範例:
$ adb shell cmd media.camera watch dump
Client: com.android.chrome (active)
1:com.android.chrome f0:532642803202286ns: REQ:android.control.aeMode: [ON] output stream ids: 0
1:com.android.chrome f0:532642803202286ns: REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids: 0
..
Client: com.google.android.GoogleCamera (cached)
0:com.google.android.GoogleCamera f0:532601698728552ns: REQ:android.control.aeMode: [ON] output stream ids: 0 3 1 2
0:com.google.android.GoogleCamera f0:532601698728552ns: REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids: 2 1 3 0
0:com.google.android.GoogleCamera f0:532601698728552ns: REQ:android.control.awbMode: [AUTO] output stream ids: 0 3 1 2
...
即時預覽代碼監控資訊
如要即時預覽標記監控資訊,請使用:
adb shell cmd media.camera watch live [-n refresh_interval_ms]例子:
adb shell cmd media.camera watch live -n 250引數:
refresh_interval_ms:選用引數。以毫秒為單位的時間間隔,用來重新整理資訊。如未傳遞任何值,則預設為 1000。
這個指令會即時列印標記監控資訊。如要退出,請按 Return/Enter 鍵。
輸出範例:
$ adb shell cmd media.camera watch live
Press return to exit...
0:com.google.android.GoogleCamera f0:533016991302201ns: REQ:android.control.aeMode: [ON] output stream ids: 1 3 0 2
0:com.google.android.GoogleCamera f0:533016991302201ns: REQ:android.control.afMode: [CONTINUOUS_PICTURE] output stream ids: 2 0 3 1
...
0:com.google.android.GoogleCamera f0:533017066793915ns: RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera f0:533017066793915ns: 3 RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera f0:533017066793915ns: 2 RES:android.control.aeState: [SEARCHING]
0:com.google.android.GoogleCamera f0:533017066793915ns: RES:android.control.afState: [PASSIVE_SCAN]
清除快取傾印
如要清除所有快取的標記監控傾印,請使用:
adb shell cmd media.camera watch clear這項指令不會停止監控代碼。
停止監控代碼
如要停止監控所有用戶端的代碼,並清除所有為快取代碼監控傾印保留的緩衝區,請使用:
adb shell cmd media.camera watch stopdumpsys 指令
dumpsys 指令會提供攝影機服務的各種偵錯資訊。下列指令會擷取攝影機服務的完整偵錯傾印:
adb shell dumpsys media.cameradumpsys 指令也可從開啟的用戶端擷取標記監控傾印。不過,dumpsys 不會提供已關閉用戶端的代碼監控傾印。以下是使用 dumpsys 監控代碼的範例:
從所有開啟的用戶端擷取標記監控傾印:
adb shell dumpsys media.camera -m 3a | grep -A50 Monitored使用 Linux
watch指令,即時預覽標記監控資訊:watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'