当前位置: 首页 > news >正文

dumpsys--音频服务状态信息

Audio相关的信息获取指令:
dumpsys media.audio_flinger
dumpsys media.audio_policy
dumpsys audio

media.audio_flinger

dumpsys media.audio_flinger 用于获取 AudioFlinger 服务的详细状态信息。

1. 命令作用
该命令输出当前系统的 音频设备状态、活跃音频流、混音策略、硬件配置 等信息,常用于:
调试音频播放/录制问题(无声、杂音、延迟)。
检查音频设备是否正常识别(如耳机、蓝牙设备)。
分析音频性能(延迟、采样率、缓冲区大小)。
2. 使用方法

adb shell dumpsys media.audio_flinger

3. 关键输出解析
(1)硬件设备状态

Hardware status:HAL version: 3.0Module: primary (Audio HW: Qualcomm)Devices:- Device: 0x8 (Speaker), State: ON, Sample Rate: 48000 Hz, Format: AUDIO_FORMAT_PCM_16_BIT- Device: 0x4 (Wired Headset), State: OFF- Device: 0x80000000 (Bluetooth A2DP), State: OFF

HAL version:音频硬件抽象层版本(如 2.0/3.0)。
Devices:列出所有音频设备(扬声器、耳机、蓝牙等)及其状态(ON/OFF)。
Sample Rate/Format:当前设备的采样率和音频格式(如 AUDIO_FORMAT_PCM_16_BIT)。
(2)活跃音频流(Playback Threads)

Output thread 0x7a8f4e00:Name: AudioOut_7Sample rate: 48000 HzFormat: AUDIO_FORMAT_PCM_16_BITChannel mask: AUDIO_CHANNEL_OUT_STEREOActive tracks:- Track: 0x7a8f4e10, Session: 123, Volume: 1.0, Stream: MUSIC

Output thread:音频输出线程(每个线程对应一个播放流)。
Active tracks:当前正在播放的音频流(如 MUSIC、VOICE_CALL)。
Volume:音量大小(0.0 ~ 1.0)。
(3)混音策略(Mixer Config)

AudioMixer configurations:- Mixer 0: Input buffer (FrameCount: 1024, SampleRate: 48000)- Mixer 1: Output buffer (FrameCount: 256, SampleRate: 44100)

(4)音频策略(Audio Policy)

Audio Policy Manager:- Preferred device for STREAM_MUSIC: Speaker- Forced use for COMMUNICATION: NONE- Current BT device: None

Preferred device:默认音频路由(如音乐流默认输出到扬声器)。
Forced use:强制路由策略(如通话时强制切换到听筒)。

4. 常见问题排查
(1)音频无声
检查 Active tracks 是否有目标音频流(如 MUSIC)。
确认输出设备的 State 是否为 ON。
检查音量是否被设置为 0。
(2)蓝牙音频无法切换
查看 Current BT device 是否识别到蓝牙设备。
检查 Audio Policy 是否允许蓝牙路由。
(3)音频延迟高
分析 Mixer configurations 中的 FrameCount(缓冲区越大,延迟越高)。
检查 Sample rate 是否匹配(如 48kHz vs 44.1kHz 可能导致重采样延迟)。

5. 总结
dumpsys media.audio_flinger 重点关注 硬件设备状态、活跃音频流、混音策略 三部分。结合 logcat 查看音频相关日志(过滤 AudioFlinger 或 AudioPolicy)

media.audio_policy

1. 命令作用
该命令用于获取 AudioPolicyManager 的完整状态信息:

  • 当前音频设备连接状态
  • 音频流的路由策略
  • 音量曲线配置
  • 强制音频使用场景(如通话、媒体播放)
  • 策略规则和混音行为

2. 使用方法

adb shell dumpsys media.audio_policy

3. 关键输出解析
(1)音频设备状态

Audio Devices:- Device: 0x8 (Speaker)Type: OUT_SPEAKER, State: AVAILABLE- Device: 0x4 (Wired Headset)Type: OUT_WIRED_HEADSET, State: UNAVAILABLE- Device: 0x80000000 (Bluetooth A2DP)Type: OUT_BLUETOOTH_A2DP, State: AVAILABLE
  • State:AVAILABLE(可用)/UNAVAILABLE(不可用)
  • Type:设备类型(扬声器、耳机、蓝牙等)

(2)音频流路由策略

Stream Routes:STREAM_MUSIC:- Primary Output: Speaker- Fallback: Wired Headset (when connected)STREAM_VOICE_CALL:- Force Route: Earpiece

显示每种音频流(音乐、通话等)的 首选设备 和 回退策略。

(3)音量曲线配置

Volume Curves:STREAM_MUSIC:- Index: 10, dB: -20.0 (Speaker)- Index: 5, dB: -40.0 (Headset)

不同设备上音量等级的 分贝映射。

(4)强制音频策略

Forced Use Cases:- FOR_COMMUNICATION: NONE- FOR_MEDIA: SPEAKER

强制特定场景使用指定设备(如媒体播放强制扬声器)

(5)混音行为

Mixing Rules:- Allow playback on VOICE_CALL (exclusive: true)- Duck MUSIC when NOTIFICATION plays

4. 常见问题排查
(1)设备未被识别

# 检查设备是否在列表中
adb shell dumpsys media.audio_policy | grep -A 10 "Audio Devices"

可能原因:

  • 硬件未连接/驱动未加载
  • 设备未在音频策略配置文件中声明(audio_policy_configuration.xml)

(2) 音频路由错误

# 确认当前路由决策
adb shell dumpsys media.audio_policy | grep "Active routes"
  • 检查设备连接状态
  • 验证策略规则是否冲突
  • 检查强制使用场景

(3)音量异常

# 对比音量曲线与实际音量
adb shell dumpsys media.audio_policy | grep -A 5 "Volume Curves"

修改 /system/etc/audio_policy_engine.xml 中的音量配置

5. 关键配置文件
Android音频策略由以下文件控制:

文件路径及作用
/vendor/etc/audio_policy_configuration.xml 主配置文件
/system/etc/audio_policy_engine.xml 策略规则和音量曲线
/system/etc/audio_policy_volumes.xml 音量等级定义

6. 自动化测试

# 测试所有音频流的路由
for stream in MUSIC VOICE_CALL NOTIFICATION; doadb shell cmd media.audio_policy dump | grep -A 5 "STREAM_$stream"
done

audio

1. 命令作用
该命令是Android 的音频服务诊断命令,整合了以下子模块信息

  • AudioFlinger(音频混合/输出)
  • AudioPolicyManager(路由策略)
  • AudioService(音量/焦点管理)
  • 硬件设备状态

2. 使用方法

adb shell dumpsys audio

3. 关键输出解析
(1)音频设备状态

Audio Devices:- DEVICE_OUT_SPEAKER (Speaker): Available- DEVICE_OUT_WIRED_HEADSET (Headset): Unavailable- DEVICE_OUT_BLUETOOTH_A2DP (BT A2DP): Available, Addr: 11:22:33:AA:BB:CC
  • 设备类型:输出/输入设备(如扬声器、耳机、蓝牙等)
  • 状态:Available(可用)/Unavailable(不可用)
  • 蓝牙设备:显示MAC地址(若连接)

(2)音频流路由

Stream Volumes:STREAM_MUSIC:- Device: Speaker, Index: 10/15, Current: -14 dB- Device: Headset, Index: 8/15, Current: -22 dB
Active Streams:STREAM_MUSIC (ID: 3) → SpeakerSTREAM_VOICE_CALL (ID: 0) → Earpiece
  • 音量等级:各设备上的音量索引和实际分贝值
  • 活动流:当前播放的音频流及其路由设备

(3)音频焦点管理

Audio Focus Stack:- UID: 10123, Client: com.spotify.musicStream: MUSIC, Gain: GAIN, Flags: DUCKING- UID: 10145, Client: com.android.phoneStream: VOICE_CALL, Gain: GAIN_TRANSIENT
  • 焦点持有者:应用包名、音频流类型
  • 焦点行为:DUCKING(闪避)、TRANSIENT(短暂持有)

(4)音量策略

Volume Groups:- Group: MUSICMin Volume: 0, Max Volume: 25Curves:Speaker: 0dB at index 15, -40dB at index 0Headset: -6dB at index 15, -46dB at index 0
  • 音量范围:每组设备的最小/最大音量索引
  • 曲线映射:索引与分贝值的对应关系

(5)Audio Patches

Audio Patches:- Patch ID: 1Sources: Playback Thread ID 12 (MUSIC)Sinks: Device OUT_SPEAKER

音频路径:显示音频数据从源(如播放线程)到目标设备的路由

4. 常见问题排查
(1)无声问题

# 确认目标设备状态
adb shell dumpsys audio | grep -A 5 "DEVICE_OUT_SPEAKER"
# 验证音频流是否活跃
adb shell dumpsys audio | grep "Active Streams"
# 检查焦点是否被抢占
adb shell dumpsys audio | grep "Audio Focus"

(2) 音量异常

# 验证音量曲线
adb shell dumpsys audio | grep -A 10 "Volume Curves"

5. 调试技巧
(1)动态修改音量

# 设置媒体流音量(索引值)
adb shell cmd media.volume set --stream 3 --index 10

(2) 强制路由

# 强制媒体流到耳机
adb shell cmd media.audio_policy set-force-use FOR_MEDIA OUT_WIRED_HEADSET

6. 关键配置文件
Android 音频行为由以下文件控制:

文件路径及作用
/vendor/etc/audio_policy_configuration.xml 设备路由策略
/system/etc/audio_policy_volumes.xml 音量曲线定义
/system/etc/audio_effects.conf 音效配置

7.测试脚本

#!/bin/bash
# 检查所有音频流状态
for stream in MUSIC VOICE_CALL NOTIFICATION; doecho "==== $stream ===="adb shell dumpsys audio | grep -A 5 "STREAM_$stream"
done
http://www.xdnf.cn/news/2593.html

相关文章:

  • ASP.NET Core Web API 配置系统集成
  • 解决 VSCode 中 NVM 配置后无法识别 Node 和 NPM 的问题
  • 京东3D空间视频生成技术探索与应用
  • 游戏引擎学习第230天
  • [图论]Kruskal
  • Windows快速切换屏幕/桌面
  • 如何自学机器学习?零基础到实战的完整路径
  • 超详细VMware虚拟机扩容磁盘容量-无坑版
  • 探索关系型数据库 MySQL
  • 驱动-自旋锁
  • opencv函数展示2
  • 4.17学习总结
  • 智能云图库-12-DDD重构
  • 【从零实现高并发内存池】thread cache、central cache 和 page cache 回收策略详解
  • DSO:牛津大学推出的物理一致性3D模型优化框架
  • Java与MySQL数据库连接的JDBC驱动配置教程
  • Java基础知识面试题(已整理Java面试宝典pdf版)
  • Operator 开发入门系列(一):Hello World
  • 什么是分库分表?
  • Linux中NFS服务设置
  • 《MySQL:MySQL表结构的基本操作》
  • 【天梯赛练习】L2-035 完全二叉树的层序遍历
  • 阿里云服务器的docker环境安装nacos--实践
  • 开源一体化白板工具Drawnix本地部署打造毫秒级响应的远程协作空间
  • 中介者模式(Mediator Pattern)
  • 目标检测概述
  • LeetCode 2176.统计数组中相等且可以被整除的数对:两层遍历模拟
  • Ubuntu 20.04.6编译安装COMFAST CF-AX90无线网卡驱动
  • Delphi Ini文件对UTF8支持不爽的极简替代方案
  • SpringAI+DeepSeek大模型应用开发——4 对话机器人