カメラのデバッグ

このページではカメラサービスのデバッグツールについて説明します。キャプチャ リクエストでの変更や、カメラ 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'