Audio相关的几个ADB Log查看方法


ADB安装

![Mac可以使用brew cask install android-platform-tools命令来安装ADB,但是Homebrew也有一些坑,需要自己查一查资料解决一下。
adb version

安装完成后可以使用adb version命令查看一下是否安装成功。

调试设备

安卓手机在版本号上连续点击7次,就能开启开发者模式,在里面可以开启USB调试权限。把安卓手机用数据线连接到电脑后,就可以进行ADB调试。
adb devices
#使用adb devices命令,可以查看连接的设备。

查看audio事件的log

使用adb shell dumpsys audio命令,可以查看一些音频焦点的信息和音频事件的log。
audio log

①:音频焦点堆栈的情况

  • 当前音频焦点堆栈的情况
  • 哪些应用申请了音频焦点
  • 申请焦点的具体信息

②:音频焦点的Event Log:主要是哪个应用在什么时间申请/丢弃了焦点(可惜这里不能查看到申请焦点返回的结果)

③:各种音频流的情况:Android系统中有10来种音频流,用来表示不同类型的声音的音量。这里的信息有:

  • 音频流是否被静音
  • 音频流的最低音量(这里有个细节,有的音频流类型的最小音量是0,而有的是1)
  • 音频流的最高音量
  • 当前的音量状态(从这里可以看出,同一种音频流,在不同类型的设备中,音量可能是不同的,这种设计真的很赞)
  • 当前的设备
    audio

④:响铃模式

  • 手机的响铃模式,常见的有:响铃、静音、振动(这里有个Internal和External不知道是什么意思,猜测可能是内部和外部的AudioPolicy)
  • 响铃模式影响的音频流(在静音模式下,有些音频流会被静音掉,比如:来电铃声、按键声)

⑤:PlayBack监听

  • Player的类型:从截图上看有两种,MediaPlayer和SoundPool,这里播放的主要是RingTone和Sonification场景。另外,在AudioFocus章节中有提到,SoundPool播放是没有申请音频焦点的。
  • PlayBack事件:MediaPlayer和SoundPool的播放事件

查看AudioFlinger的log

使用adb shell dumpsys media.audio_flinger命令,可以查看一些AudioFlinger的log。
audioflinger

①:AudioMixer的信息

  • AudioMixer Tracks:AudioMixer的输入是AudioTracks,最多支持32个,AudioMiexer把多个AudioTrack的PCM流混合到一起;
  • AudioTrack的信息:截图中有3个AudioTrack 0、1、2,这里展示了这3个AudioTrack的Flag、采样率等信息。