做蓝牙音频开发的同学都知道,两台设备建立A2DP连接的第一步,不是直接传输音频数据,而是先通过AVDTP信令通道完成一轮完整的摸底交互:先找到对方有哪些可用的音视频流端点,再逐个查询每个端点支持的编码格式、保护机制等核心能力,最后才能选中匹配的端点完成配置与建流。这几步交互看似流程简单,实则是整个音频链路的基石,市面上绝大多数的兼容性问题、播放无声问题、配对后连接失败问题,追根溯源都能在这几步信令交互里找到根因。
目录
一、DISCOVER信令:先摸清对端的流端点家底
1.1 命令帧:极简设计的2字节请求
1.2 响应帧:紧凑排列的SEP信息列表
1.3 实战:逐字节拆解真实抓包响应
1.4 开发中最容易踩的两个坑
二、GET_CAPABILITIES:深挖单个端点的核心能力
2.1 命令帧:指定目标端点地址
2.2 响应帧:TLV格式的可扩展能力列表
2.3 核心能力详解:以SBC编码为例
三、GET_ALL_CAPABILITIES:全量能力的完整画像
3.1 两个能力查询的核心区别
3.2 帧格式与实现差异
3.3 场景选择的实用原则
3.4 实战:全量能力响应报文逐段拆解
四、完整交互流程与工程调试经验
4.1 完整交互时序
4.2 四类常见问题与排查思路
4.3 抓包调试的核心技巧
五、测验
本文把端点发现、能力查询这两组核心信令彻底讲透,从帧格式的每一个比特位定义,到真实抓包的逐字节拆解,再到工程开发里的常见坑点与调试技巧,一次性梳理成完整的知识体系,看完既能应对面试,也能直接解决工作里的实际问题。
一、DISCOVER信令:先摸清对端的流端点家底
就像走进一家陌生的餐厅,坐下第一件事不是直接点菜,而是先了解店里有哪些菜系、每个菜系的基本定位。DISCOVER命令就是发起端抛出的第一个问题:你这边一共有多少个可用的流端点,每个端点是发送数据还是接收数据,属于音频还是视频类型。
这是所有AVDTP交互的起点,也是两台设备第一次交换音视频相关的信息。只有完成了发现流程,后续的能力查询、配置、建流等操作才有明确的寻址目标。