本页介绍相机服务中的调试工具,用于查看发送到相机 HAL 以及从相机 HAL 发送的捕获请求和结果值的更改。相机服务包括 watch
和 dumpsys
命令。watch
命令在运行 Android 13 或更高版本的设备上可用,允许控制何时监控和访问标记、实时预览来自开放客户端的标记监控转储,以及查看来自关闭客户端的缓存转储。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
,否则相机服务不会监控任何客户端的标记,也不会缓存标记监控转储。如果在 clients
参数中传递 all
,则相机服务会监控标记并缓存来自所有客户端的监控转储。
转储标记监控信息
要转储标记监控信息,请使用
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。
此命令实时打印标记监控信息。要退出,请按*回车*/ *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'