android adb 查看音频,adb shell dumpsys audio使用

前言

工作中也常用到

至于这个命令能做啥,接下来我们简单的讲解一下

PS : 本文在Android 9.0上测试的,4.2时dumpsys audio不一定有这么多信息。

正文

dumpsys audio出来的信息有很多,比如查看各类型的音量值,当前焦点的持有者,以及焦点申请记录等等。

一、查看各类型的音量值

dumpsys后包含如下信息(节选,各种类型的值都有)

下面我们以STREAM_MUSIC类型说明

Stream volumes (device: index)

...

- STREAM_MUSIC:

Muted: false # 是否在静音状态

Min: 0 # 支持的最小音量

Max: 15 # 支持的最大音量

streamVolume:0 # 当前的音量值

Current: 2 (speaker): 0, 4000000 (usb_headset): 3, 40000000 (default): 5

Devices: speaker

...

这一句的意思是;多媒体分为扬声器(speaker)和耳机音量(usb_headset)。

冒号后面跟的是当前的音量值。

Current: 2 (speaker): 0, 4000000 (usb_headset): 3, 40000000 (default): 5

二、查看当前焦点的持有者

Audio Focus stack entries (last is top of stack):

source:android.os.BinderProxy@5569875 -- pack: com.la.audiotoolstwo -- client: android.media.AudioManager@4dcf949com.la.audiotoolstwo.MainActivity@75781fa -- gain: GAIN_TRANSIENT -- flags: -- loss: LOSS_TRANSIENT -- notified: true -- uid: 10142 -- attr: AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MOVIE flags=0x800 tags= bundle=null -- sdk:29

source:android.os.BinderProxy@7dbd174 -- pack: com.la.audiotoolsthree -- client: android.media.AudioManager@4dcf949com.la.audiotoolsthree.MainActivity@75781fa -- gain: GAIN_TRANSIENT -- flags: DELAY_OK -- loss: none -- notified: true -- uid: 10143 -- attr: AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MOVIE flags=0x800 tags= bundle=null -- sdk:29

上面是两个当前焦点队列中的申请信息。

我们以最新(也就是第二条)的简单的分析一下

gain: GAIN_TRANSIENT # 申请临时获取焦点

flags: DELAY_OK #申请添加的flag,这里是允许延迟获取焦点

loss: none # 当前焦点状态,none表示没有丢失

attr: AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_MOVIE flags=0x800 # 表示申请的场景和用途

扩展一下

焦点的队列中被移除有如下几种情况

丢失永久焦点

app主动abandon焦点

app异常退出,系统会主动移除

PS:关于第三点的日志打印

MediaFocusControl( 2001): AudioFocus removeFocusStackEntryOnDeath(): removing entry for android.os.BinderProxy@595e126

三、查看焦点申请记录

记录开机后到当前有谁requestAudioFocus和abandonAudioFocus的信息。

当然,这不是很准确的,只记忆主动申请和主动释放的状态。

Audio event log: focus commands as seen by MediaFocusControl

01-02 08:04:03:898 requestAudioFocus() from uid/pid 10141/5453 clientId=android.media.AudioManager@4dcf949com.la.audiotools.MainActivity@75781fa callingPack=com.la.audiotools req=1 flags=0x1 sdk=29

01-02 08:04:47:680 abandonAudioFocus() from uid/pid 10141/5453 clientId=android.media.AudioManager@4dcf949com.la.audiotools.MainActivity@75781fa

01-02 08:23:16:811 requestAudioFocus() from uid/pid 10142/6151 clientId=android.media.AudioManager@4dcf949com.la.audiotoolstwo.MainActivity@75781fa callingPack=com.la.audiotoolstwo req=2 flags=0x0 sdk=29

01-02 08:25:24:476 requestAudioFocus() from uid/pid 10143/6221 clientId=android.media.AudioManager@4dcf949com.la.audiotoolsthree.MainActivity@75781fa callingPack=com.la.audiotoolsthree req=2 flags=0x1 sdk=29

01-02 08:33:14:696 requestAudioFocus() from uid/pid 10144/6420 clientId=android.media.AudioManager@4dcf949com.la.audiotoolsfour.MainActivity@75781fa callingPack=com.la.audiotoolsfour req=1 flags=0x1 sdk=29

01-02 08:37:32:071 requestAudioFocus() from uid/pid 10143/6581 clientId=android.media.AudioManager@4dcf949com.la.audiotoolsthree.MainActivity@75781fa callingPack=com.la.audiotoolsthree req=2 flags=0x1 sdk=29

从上面看最后申请焦点的com.la.audiotoolsthree,但是最后焦点不一定在他那,所以这个需要结合上面(二、查看当前焦点的持有者)一起结合分析。

参考文章

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值