相機偵錯

本頁說明相機服務中的偵錯工具以供查看 擷取要求以及傳送到 相機 HAL相機服務包含 watchdumpsys 指令。 適用於搭載 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 是指所有 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'