攝影機偵錯

本頁說明相機服務中的偵錯工具,可用於查看傳送至相機 HAL 和從相機 HAL 傳送的擷取要求和結果值的變更。相機服務包含 watchdumpsys 指令。watch 指令可在搭載 Android 13 以上版本的裝置上使用,可用於控管標記的監控和存取時機、從開放用戶端即時預覽標記監控傾印,以及查看從關閉用戶端快取的傾印。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 是指所有 android.control.* 的組合 與 AF、AE 和 AWB 相關的代碼 (如需完整的代碼清單,請參閱 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 stop

dumpsys 指令

dumpsys 指令會提供相機的偵錯資訊 課程中也會快速介紹 Memorystore 這是 Google Cloud 的全代管 Redis 服務下列指令會從 相機服務:

adb shell dumpsys media.camera

dumpsys 指令也可讓您從開啟的標記,擷取標記監控傾印 用戶端。不過,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'