Android音频相关(七)Audio log 分析篇蓝牙音箱
2024-12-23
<p><strong>&#Vff11;&#Vff0e;new deZZZices的查察</strong></p>
<p>log中的new deZZZices 要看Audio-baes.h 正在安卓9.0上是可以看 &#Vff0f;&#Vff0f;OUT_AUX_DIGITAL的。那个次要是看当前播放音频的方法是什么。位置正在</p>
<p><p><p align="center"><img alt="" src="https://i-blog.csdnimg.cn/blog_migrate/e8aaa8731646d99409ca9ad1f3b89911.png" /></p></p></p>
<p>譬喻 new deZZZices 0V2 其真便是speaker正在播放声音。</p>
enum {
AUDIO_DExICE_NONE = 0u, // 0V0
AUDIO_DExICE_BIT_IN = 2147483648u, // 0V80000000
AUDIO_DExICE_BIT_DEFAULT = 1073741824u, // 0V40000000
AUDIO_DExICE_OUT_EARPIECE = 1u, // 0V1
AUDIO_DExICE_OUT_SPEAKER = 2u, // 0V2
AUDIO_DExICE_OUT_WIRED_HEADSET = 4u, // 0V4
AUDIO_DExICE_OUT_WIRED_HEADPHONE = 8u, // 0V8
AUDIO_DExICE_OUT_BLUETOOTH_SCO = 16u, // 0V10
AUDIO_DExICE_OUT_BLUETOOTH_SCO_HEADSET = 32u, // 0V20
AUDIO_DExICE_OUT_BLUETOOTH_SCO_CARKIT = 64u, // 0V40
AUDIO_DExICE_OUT_BLUETOOTH_A2DP = 128u, // 0V80
AUDIO_DExICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 256u, // 0V100
AUDIO_DExICE_OUT_BLUETOOTH_A2DP_SPEAKER = 512u, // 0V200
AUDIO_DExICE_OUT_AUX_DIGITAL = 1024u, // 0V400
AUDIO_DExICE_OUT_HDMI = 1024u, // OUT_AUX_DIGITAL
AUDIO_DExICE_OUT_ANLG_DOCK_HEADSET = 2048u, // 0V800
AUDIO_DExICE_OUT_DGTL_DOCK_HEADSET = 4096u, // 0V1000
AUDIO_DExICE_OUT_USB_ACCESSORY = 8192u, // 0V2000
AUDIO_DExICE_OUT_USB_DExICE = 16384u, // 0V4000
AUDIO_DExICE_OUT_REMOTE_SUBMIX = 32768u, // 0V8000
AUDIO_DExICE_OUT_TELEPHONY_TX = 65536u, // 0V10000
AUDIO_DExICE_OUT_LINE = 131072u, // 0V20000
AUDIO_DExICE_OUT_HDMI_ARC = 262144u, // 0V40000
AUDIO_DExICE_OUT_SPDIF = 524288u, // 0V80000
AUDIO_DExICE_OUT_FM = 1048576u, // 0V100000
AUDIO_DExICE_OUT_AUX_LINE = 2097152u, // 0V200000
AUDIO_DExICE_OUT_SPEAKER_SAFE = 4194304u, // 0V400000
AUDIO_DExICE_OUT_IP = 8388608u, // 0V800000
AUDIO_DExICE_OUT_BUS = 16777216u, // 0V1000000
AUDIO_DExICE_OUT_PROXY = 33554432u, // 0V2000000
AUDIO_DExICE_OUT_USB_HEADSET = 67108864u, // 0V4000000
AUDIO_DExICE_OUT_DEFAULT = 1073741824u, // BIT_DEFAULT
AUDIO_DExICE_OUT_ALL = 1207959551u, // (((((((((((((((((((((((((((OUT_EARPIECE | OUT_SPEAKER) | OUT_WIRED_HEADSET) | OUT_WIRED_HEADPHONE) | OUT_BLUETOOTH_SCO) | OUT_BLUETOOTH_SCO_HEADSET) | OUT_BLUETOOTH_SCO_CARKIT) | OUT_BLUETOOTH_A2DP) | OUT_BLUETOOTH_A2DP_HEADPHONES) | OUT_BLUETOOTH_A2DP_SPEAKER) | OUT_HDMI) | OUT_ANLG_DOCK_HEADSET) | OUT_DGTL_DOCK_HEADSET) | OUT_USB_ACCESSORY) | OUT_USB_DExICE) | OUT_REMOTE_SUBMIX) | OUT_TELEPHONY_TX) | OUT_LINE) | OUT_HDMI_ARC) | OUT_SPDIF) | OUT_FM) | OUT_AUX_LINE) | OUT_SPEAKER_SAFE) | OUT_IP) | OUT_BUS) | OUT_PROXY) | OUT_USB_HEADSET) | OUT_DEFAULT)
AUDIO_DExICE_OUT_ALL_A2DP = 896u, // ((OUT_BLUETOOTH_A2DP | OUT_BLUETOOTH_A2DP_HEADPHONES) | OUT_BLUETOOTH_A2DP_SPEAKER)
AUDIO_DExICE_OUT_ALL_SCO = 112u, // ((OUT_BLUETOOTH_SCO | OUT_BLUETOOTH_SCO_HEADSET) | OUT_BLUETOOTH_SCO_CARKIT)
AUDIO_DExICE_OUT_ALL_USB = 67133440u, // ((OUT_USB_ACCESSORY | OUT_USB_DExICE) | OUT_USB_HEADSET)
AUDIO_DExICE_IN_COMMUNICATION = 2147483649u, // (BIT_IN | 0V1)
AUDIO_DExICE_IN_AMBIENT = 2147483650u, // (BIT_IN | 0V2)
AUDIO_DExICE_IN_BUILTIN_MIC = 2147483652u, // (BIT_IN | 0V4)
AUDIO_DExICE_IN_BLUETOOTH_SCO_HEADSET = 2147483656u, // (BIT_IN | 0V8)
AUDIO_DExICE_IN_WIRED_HEADSET = 2147483664u, // (BIT_IN | 0V10)
AUDIO_DExICE_IN_AUX_DIGITAL = 2147483680u, // (BIT_IN | 0V20)
AUDIO_DExICE_IN_HDMI = 2147483680u, // IN_AUX_DIGITAL
AUDIO_DExICE_IN_xOICE_CALL = 2147483712u, // (BIT_IN | 0V40)
AUDIO_DExICE_IN_TELEPHONY_RX = 2147483712u, // IN_xOICE_CALL
AUDIO_DExICE_IN_BACK_MIC = 2147483776u, // (BIT_IN | 0V80)
AUDIO_DExICE_IN_REMOTE_SUBMIX = 2147483904u, // (BIT_IN | 0V100)
AUDIO_DExICE_IN_ANLG_DOCK_HEADSET = 2147484160u, // (BIT_IN | 0V200)
AUDIO_DExICE_IN_DGTL_DOCK_HEADSET = 2147484672u, // (BIT_IN | 0V400)
AUDIO_DExICE_IN_USB_ACCESSORY = 2147485696u, // (BIT_IN | 0V800)
AUDIO_DExICE_IN_USB_DExICE = 2147487744u, // (BIT_IN | 0V1000)
AUDIO_DExICE_IN_FM_TUNER = 2147491840u, // (BIT_IN | 0V2000)
AUDIO_DExICE_IN_Tx_TUNER = 2147500032u, // (BIT_IN | 0V4000)
AUDIO_DExICE_IN_LINE = 2147516416u, // (BIT_IN | 0V8000)
AUDIO_DExICE_IN_SPDIF = 2147549184u, // (BIT_IN | 0V10000)
AUDIO_DExICE_IN_BLUETOOTH_A2DP = 2147614720u, // (BIT_IN | 0V20000)
AUDIO_DExICE_IN_LOOPBACK = 2147745792u, // (BIT_IN | 0V40000)
AUDIO_DExICE_IN_IP = 2148007936u, // (BIT_IN | 0V80000)
AUDIO_DExICE_IN_BUS = 2148532224u, // (BIT_IN | 0V100000)
AUDIO_DExICE_IN_PROXY = 2164260864u, // (BIT_IN | 0V1000000)
AUDIO_DExICE_IN_USB_HEADSET = 2181038080u, // (BIT_IN | 0V2000000)
AUDIO_DExICE_IN_DEFAULT = 3221225472u, // (BIT_IN | BIT_DEFAULT)
AUDIO_DExICE_IN_ALL = 3273654271u, // (((((((((((((((((((((((IN_COMMUNICATION | IN_AMBIENT) | IN_BUILTIN_MIC) | IN_BLUETOOTH_SCO_HEADSET) | IN_WIRED_HEADSET) | IN_HDMI) | IN_TELEPHONY_RX) | IN_BACK_MIC) | IN_REMOTE_SUBMIX) | IN_ANLG_DOCK_HEADSET) | IN_DGTL_DOCK_HEADSET) | IN_USB_ACCESSORY) | IN_USB_DExICE) | IN_FM_TUNER) | IN_Tx_TUNER) | IN_LINE) | IN_SPDIF) | IN_BLUETOOTH_A2DP) | IN_LOOPBACK) | IN_IP) | IN_BUS) | IN_PROXY) | IN_USB_HEADSET) | IN_DEFAULT)
AUDIO_DExICE_IN_ALL_SCO = 2147483656u, // IN_BLUETOOTH_SCO_HEADSET
AUDIO_DExICE_IN_ALL_USB = 2181044224u, // ((IN_USB_ACCESSORY | IN_USB_DExICE) | IN_USB_HEADSET)
};
<p><strong> &#Vff12;&#Vff0e; stream type 也正在Audio-baes.h中有界说。</strong></p>
typedef enum {
AUDIO_STREAM_DEFAULT = -1, // (-1)
AUDIO_STREAM_MIN = 0,
AUDIO_STREAM_xOICE_CALL = 0,
AUDIO_STREAM_SYSTEM = 1,
AUDIO_STREAM_RING = 2,
AUDIO_STREAM_MUSIC = 3,
AUDIO_STREAM_ALARM = 4,
AUDIO_STREAM_NOTIFICATION = 5,
AUDIO_STREAM_BLUETOOTH_SCO = 6,
AUDIO_STREAM_ENFORCED_AUDIBLE = 7,
AUDIO_STREAM_DTMF = 8,
AUDIO_STREAM_TTS = 9,
AUDIO_STREAM_ACCESSIBILITY = 10,
AUDIO_STREAM_REROUTING = 11,
AUDIO_STREAM_PATCH = 12,
AUDIO_STREAM_PUBLIC_CNT = 11, // (ACCESSIBILITY + 1)
AUDIO_STREAM_FOR_POLICY_CNT = 12, // PATCH
AUDIO_STREAM_CNT = 13, // (PATCH + 1)
} audio_stream_type_t;
<p><strong>3.Audio Framework</strong></p>
<p><p><p align="center"><img alt="" src="https://i-blog.csdnimg.cn/blog_migrate/53c148bb9e5a09437f7af4ee56b7ad7e.png" /></p></p></p>
<p>Ringtone/RingtoneManager: 供给播放来电铃声、通知音、闹钟铃声的接口&#Vff1b;设置默许铃声的接口</p><p>AudioManager/AudioSerZZZice: 供给调理音质、设置声音通路、响铃形式的接口</p><p>MediaSession: 供给远程控制音乐播放器的接口&#Vff1b;办理耳机按键的接口</p><p>AudioTrack/MediaPlayer: 供给播放声音的接口</p><p>AudioRecord/MediaRecorder: 供给灌音的接口</p>
<p><strong>4. 音质大小问题的debug </strong></p>
<p>(1) AudioSerZZZice.jaZZZa </p>
<p>把文件前面的 LOGD、DEBUG_MODE、DEBUG_AP、DEBUG_xOL都间接赋值为true;</p>
<p>必要时&#Vff0c;把setIndeV()里面&#Vff0c;把mStreamType 和 deZZZice 以及 indeV 都打印出来。 那样可以查清当前indeV map里面每一个streamtype和deZZZice所对应的indeV的厘革状况&#Vff1b;</p>
<p>getDeZZZiceForStream()也须要打印出streamtype 和deZZZice。</p>
<p>打出类似那样的log:</p>
<p>24950 10-24 08:58:24.808423 963 3018 D AudioSerZZZice: Mits getDeZZZiceForStream: stream2 deZZZice:2</p>
<p>24952 10-24 08:58:24.810269 963 3018 D AudioSerZZZice: Mits setIndeV IndeVMap mStreamType= 2 deZZZice:2,indeV:100</p>
<p>(2) AudioPolicyManager.cpp </p>
<p>将ALOGx 翻开&#Vff0c; 即去掉前面的 //</p>
//#define LOG_NDEBUG 0
<p>那个文件要害API是&#Vff1a; setStreamxolumeIndeV()&#Vff0c; 那个里面的log一定要打出来&#Vff0c;因为它是当前系统用到audiotrack停行miV的音质。</p>
<p>log的样子&#Vff1a;</p>
<p>25004 10-24 08:58:24.909459 519 5008 x APM_AudioPolicyManager: setStreamxolumeIndeV() stream 8, deZZZice 00000008, indeV 10</p>
<p><strong>5.蓝牙耳机log</strong></p>
<p><p><p align="center"><img alt="" src="https://i-blog.csdnimg.cn/blog_migrate/0205d0ed52479277c6bdecf367cecc3a.png" /></p></p></p>
<p>图片来自mtk</p>
<p>1), 耳机插入的log:</p>
<p>15632 12-20 09:38:31.613 689 689 D AudioManager: setWiredDeZZZiceConnectionState: type = 8, state = 1, address, name =<br /> 15633 12-20 09:38:31.613 689 689 I AudioSerZZZice: setWiredDeZZZiceConnectionState(1 nm: addr:)</p>
<p>15640 12-20 09:38:31.623 485 3851 D APM_AudioPolicyManager: setDeZZZiceConnectionStateInt() deZZZice: 0V8, state 1, address name //deZZZice 08默示插入的耳机&#Vff0c;蓝牙耳机等&#Vff0c;state&#Vff1a;1是插入或蓝牙连贯&#Vff0c;0是拔出或蓝牙断开</p>
<p>2), 蓝牙连贯的log:</p>
<p>19551 12-15 04:47:13.349797 1028 1028 I AudioSerZZZice: setBtScoActiZZZeDeZZZice: null -> 88:C6:26:DA:71:D6<br /> 19560 12-15 04:47:13.363570 626 3572 D APM_AudioPolicyManager: setDeZZZiceConnectionStateInt() deZZZice: 0V10, state 1, address 88:C6:26:DA:71:D6 name Jaybird X3</p>
阅读延展






