このページではカメラサービスのデバッグツールについて説明します。キャプチャ リクエストでの変更や、カメラ HAL との間で送受信される結果の値を確認するために使用できます。カメラサービスには、watch
コマンドと dumpsys
コマンドが含まれています。Android 13 以降を搭載したデバイスでは、watch
コマンドを使用して、タグに対するモニタリングとアクセスのタイミングを制御できます。また、開いているクライアントからのタグ モニタリング ダンプのライブ プレビューや、閉じたクライアントからのキャッシュ保存されたダンプの表示も可能です。dumpsys
コマンドを使用するとデバッグ情報にアクセスできますが、閉じたクライアントからのタグ モニタリング ダンプは提供されません。
watch コマンド
このセクションでは、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
: 省略可能な引数。情報を更新する間隔(ミリ秒単位)。値が渡されない場合、デフォルトの 1,000 になります。
このコマンドは、タグ モニタリング情報をリアルタイムで出力します。終了するには、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
コマンドは、カメラサービスからのデバッグ情報を多数提供します。次のコマンドは、カメラサービスからのデバッグダンプ全体をキャプチャします。
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'