蓝牙 A2DP(Advanced Audio Distribution Profile)是蓝牙音频传输的核心协议,其 Sink 角色(音频接收方)负责将对端设备(如手机)发送的编码音频数据解码并播放。本文基于 Android 平台开源代码,系统解析 A2DP Sink 的音频播放全流程,涵盖数据接收、缓冲入队、解码触发、SBC 解码、PCM 格式转换及 AAudio 流输出等关键环节,揭示多模块协作实现低延迟、高稳定性音频播放的技术细节。
一、流程概述
蓝牙 A2DP Sink 的音频播放本质是 “接收→缓冲→解码→输出” 的闭环流程,涉及蓝牙协议栈、音频队列管理、定时器调度、SBC/AAC解码、PCM 格式转换及 AAudio 硬件输出等模块。核心目标是将对端设备发送的 SBC 编码音频数据,高效转换为可播放的原始 PCM 数据,并通过扬声器 / 耳机输出。
蓝牙 A2DP Sink 作为音频接收端,其播放流程可分为四大核心阶段:
-
数据接收与缓冲:蓝牙协议栈接收编码音频数据包,缓冲至内存队列
-
解码调度:定时器触发工作线程,从队列取出数据并解码
-
格式转换:将整数 PCM 转为浮点格式,适配音频框架
<