本文围绕 Bluedroid 蓝牙协议栈中 A2DP Sink(音频接收端)服务的启用流程展开,深入解析从 BTIF 层触发到 BTA 层初始化、协议栈集成、SDP 服务发现记录创建及 AVRCP 控制连接建立的全链路流程。重点分析功能特性配置、事件驱动机制、资源管理(如流控制块 SCB)及多模块协作逻辑,揭示蓝牙音频接收端服务生命周期管理的核心实现。
一、概述
A2DP(Advanced Audio Distribution Profile)是蓝牙音频传输的核心协议,负责将音频流从源设备(如手机)传输到接收端设备(如耳机)。A2DP Sink 服务的启用是设备作为音频接收端的基础,涉及 BTIF(蓝牙接口层)、BTA(蓝牙应用层)、AVDT(音频 / 视频分发传输协议)、AVCT(音频 / 视频控制传输协议)及 SDP(服务发现协议)等多模块协作。
流程核心可分为以下阶段:
BTIF 层触发与配置:通过btif_av_sink_execute_service函数,根据系统属性(如延迟报告、源 / 接收端共存)配置 BTA AV 功能特性,并调用BTA_AvEnable触发 BTA 层服务初始化。
BTA 层服务初始化:BTA 层通过消息机制(bta_sys_sendmsg)将启用请求传递至主线程,经事件分发(bta_sys_e
评论前必须登录!
注册