音频调试技巧分享:mediametrics::LogItem相关日志如何查看?
背景:
在做音频系统相关开发过程中经常会看到一些方法中有mediametrics相关的日志打印,而且很多方法都有这个打印,频繁分布在各个方法中:

上面代码就是AudioTrack在创建过程中 AudioTrack::createTrack_l()方法中的mediametrics的日志打印,其实可以看得出这个mediametrics日志打印还很详细,AudioTrack创建时候需要的相关属性和参数都有,但是这个日志打印也不是我们普通的ALOGE这种,直接使用adb logcat可以看到。
那么具体应该怎么看这个mediametrics相关打印呢?
metrics相关日志查看方式:
其实这个mediametrics日志最后一般/MediaMetricsService进行统一管理,所以也有一个专门的服务来负责这块的mediametrics日志管理输出,一般使用dumpsys media.metrics命令。
可以先看看这个dumpsys media.metrics命令的使用帮助:
dumpsys media.metrics --help
gemini:/ $ dumpsys media.metrics --help
Recognized parameters:
--all show all records
--clear clear out saved records
--heap show heap usage (top 100)
--help display help
--prefix X process records for component X #可以用来过滤
--since X X < 0: records from -X seconds in the pastX = 0: ignoreX > 0: records from X seconds since Unix epoch
--unreachable show unreachable memory (leaks)
实战使用结果如下:

如果直接使用dumpsys media.metrics那么就相当于–all,会打印所有的输出内容,内容会很多。所以一般比较建议使用–prefix X,这里X可以认为是一直日志的过滤,比如你只需要audiotrack相关记录,就使用audio.track。
假设我们只需要看打印audiotrack相关输出
adb shell dumpsys media.metrics --prefix audio.volume
可以看出每个AudioTrack相关的操作记录都非常详细,具体大家想和代码对照看可以去
frameworks/av/media/libaudioclient/AudioTrack.cpp
代码中搜mediametrics相关代码:
这里的条目LogItem东西太多了,没办法一一介绍大家可以自行代码中对应。
adb shell dumpsys media.metrics --prefix audio.volume
原文地址:
https://mp.weixin.qq.com/s/8uMxQlszFkykE2fkLWrZog
更多framework实战开发干货,请关注下面“千里马学框架”
