This page describes the debugging tools in the camera service for viewing
changes in capture request and result values that are sent to and from the
camera HAL. The camera service includes the watch
and the dumpsys
commands.
Available on devices running Android 13 or higher, the
watch
command allows control over when tags are monitored and accessed, live
previewing of tag monitoring dumps from open clients, and viewing of cached
dumps from closed clients. The dumpsys
command allows for accessing debugging
information but doesn't provide tag monitoring dumps from closed clients.
watch command
This section describes how to use the watch
command and provides examples.
Start monitoring tags
To start monitoring tags, use:
adb shell cmd media.camera watch start -m <tags> [-c <clients>]
Example:
adb shell cmd media.camera watch start \
-m android.control.effectMode,android.control.aeMode \
-c com.google.android.GoogleCamera,com.android.chrome
Arguments:
tags
: Comma-separated list of tags to be monitored. Also accepts the shorthand3a
, where3a
refers to the set of allandroid.control.*
tags related to AF, AE, and AWB (for the full list of tags, seeTagMonitor.cpp
).clients
: Optional argument. Comma-separated list of client package names for which tags are monitored. Watches all clients if no client argument is passed, or ifall
is present in the list of clients.
This command starts tag monitoring in open clients and in any clients
that are subsequently opened (until stop
is called). After start
is called,
The camera service caches tag monitoring dumps from clients when the clients
close.
Unless start
is called, the camera service doesn't monitor tags for any
clients, and doesn't cache tag monitoring dumps. If all
is passed in the
clients
parameter, the camera service monitors tags and caches monitoring
dumps from all clients.
Dump tag monitoring information
To dump tag monitoring information, use:
adb shell cmd media.camera watch dump
This command dumps the tag monitoring information to standard output and then
exits. It prints the cached tag monitoring dumps from clients that have closed
since start
(or last clear
) and the latest tag monitoring dump from open
clients.
Sample output:
$ 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
...
Preview tag monitoring information in real time
To preview tag monitoring information in real time, use:
adb shell cmd media.camera watch live [-n refresh_interval_ms]
Example:
adb shell cmd media.camera watch live -n 250
Arguments:
refresh_interval_ms
: Optional argument. Interval in milliseconds to refresh the information at. Defaults to 1000 if no value is passed.
This command prints tag monitoring information in real time. To exit, press return/enter.
Sample output:
$ 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]
Clear cached dumps
To clear all cached tag monitoring dumps, use:
adb shell cmd media.camera watch clear
This command doesn't stop tag monitoring.
Stop monitoring tags
To stop monitoring tags in all clients and clear all buffers held for caching tag monitoring dumps, use:
adb shell cmd media.camera watch stop
dumpsys command
The dumpsys
command provides a host of debugging information from the camera
service. The following command captures the entire debugging dump from the
camera service:
adb shell dumpsys media.camera
The dumpsys
command also allows capturing tag monitoring dumps from open
clients. However, dumpsys
doesn't provide tag monitoring dumps from closed
clients. The following are examples of using dumpsys
for tag monitoring:
Capture tag monitoring dumps from all open clients:
adb shell dumpsys media.camera -m 3a | grep -A50 Monitored
Get live preview of tag monitoring information using the Linux
watch
command:watch -n 1 -c 'adb shell dumpsys media.camera -m 3a | grep -A50 Monitored'