本文深入分析Android Bluetooth協議棧中A2DP音頻流啟動的完整流程,從應用層調用
btif_av_stream_start()
開始,穿越BTIF、BTA、AVDTP多層架構,最終通過L2CAP發送AVDTP啟動命令。揭示狀態機驅動、異步消息傳遞、流控制等核心機制。并通過代碼與日志結合的方式,揭示藍牙音頻流從 “啟動請求” 到 “媒體傳輸” 的核心機制,為理解藍牙音頻可靠性保障(如重傳、資源管理)提供清晰視角。
一、概述
藍牙音頻流的啟動是一個跨層協作的復雜過程,涉及應用層、框架層(BTIF、BTA)、協議層(AVDTP)和傳輸層(L2CAP)的緊密交互。整體流程可分為以下階段:
-
應用層觸發:用戶操作(如 “播放音樂”)觸發音頻流啟動請求,通過 BTIF 模塊的
btif_av_stream_start
發起流程,定位活躍設備并分發啟動事件。 -
框架層處理:BTIF 狀態機(
BtifAvStateMachine
)在 “已連接” 狀態下接收事件,通過 BTA_AV 的BTA_AvStart
接口向底層發送啟動命令,同時處理低延遲模式等配置。 -
AVDTP 協議層交互:AVDTP 連接控制塊(CCB)接收啟動請求,驗證流狀態(
avdt_scb_verify
),構建并發送AVDT_SIG_START
命令(含流端點