文章目录
一、preface
1、资料快车
1、Android 4.2蓝牙介绍(邓凡平) :https://blog.csdn.net/Innost/article/details/9187199
2、Bluedroid蓝牙代码介绍(Wireless Link-韦东山专题-系统完整): https://blog.csdn.net/xiaoxiaopengbo/category_12834409.html
3、Android 蓝牙源码刨析(轻骑兵) :https://blog.csdn.net/weixin_37800531/category_12836122_2.html
4、高通&MTK蓝牙专栏: https://blog.csdn.net/weixin_47456647/category_11603865.html
5、书籍:
1)低功耗蓝牙开发权威指南
2)低功耗蓝牙智能硬件开发实战
3)蓝牙技术基础
6、Specification
蓝牙官方当前可获取的sepc文档:https://www.bluetooth.com/specifications/archived-specifications/
蓝牙core specifications:https://www.bluetooth.com/specifications/bluetooth-core-specification/
7、课程- 蓝牙HOST-于忠军
2、概述
1)Android协议栈的内容很多(有AI的情况下可以不深入,掌握基本流程),先掌握框架(基础) 再根据实际需求深入某一个章节;
2)掌握基本场景
1)打开、扫描、连接、回连流程;
2)STR开关机流程;
2、术语名词
1)Bluetooth profile - 各种协议(蓝牙设备间的交互方式和数据格式)的简称
1、A2DP(Advanced Audio Distribution Profile);
2、AVRCP(Audio/Video Remote Control Profile);
3、HID(Human interface Device Profile)- 用于蓝牙键盘、鼠标输入设备
4、GATT(Generic Attribute Profile)- BLE profile用于低功耗蓝牙设备的数据交互
5、HFP(Hands-Free Profile)- 车载蓝牙和免提设备;
6、HSP(Headset Profile)- 蓝牙耳机的基本功能;
7、SPP (Serial Port Profile) - 模拟串行端口连接
3)
HCI : Host Controller Interface
4、蓝牙基础
1、蓝牙协议栈
谁来制定?SIG : Special interest group - 负责制定蓝牙协议,仿照网络协议制定蓝牙的各种协议
为何需要蓝牙协议栈?无线通信 无法像有线那样可以明确发送方和接收方,必须依赖协议栈来工作,复杂度大大提高;
2、经典蓝牙和BLE
1)蓝牙技术可以细分为经典蓝牙和BLE蓝牙两大类,两种技术的协议栈和芯片设计都是不同的,对于协议栈 整体架构不变 每一个层级的内容会有所不同,这也导致蓝牙架构会相对混乱;
2)经典蓝牙发展较久,由于历史原因 随着功能不断增加和完善,使得架构也变得臃肿不清晰;
3)BLE则吸收经典蓝牙的设计经验,架构设计得比较清晰,同时相对经典蓝牙,BLE比较简单!
3、蓝牙单模、经典蓝牙、双模
"模" 指代的是工作模式
1)蓝牙单模,只支持经典蓝牙 或 低功耗蓝牙 (BLE);
2)蓝牙双模,同时支持经典蓝牙和BLE
3)蓝牙图标识别
https://blog.csdn.net/Hh20161314/article/details/104497644

4、蓝牙控制器/工作模式
1、BR/EDR : 经典蓝牙的工作模式,Basic Rate(1Mbps) / Enhanced Data Rate(3Mbps,同时降低功耗),也通常代表经典蓝牙,因为这样不仅可以区分经典蓝牙/BLE 还可以区分经典蓝牙的具体工作模式,一举两得!
2、LE :蓝牙的低功耗、低速率工作模式 - Bluetooth Low Energy 即表示BLE
3、BR/EDR Controller 、AMP Controller、LE Controller

5、蓝牙设备
蓝牙相较于WIFI,WIFI场景比较单一(两种STA、P2P,通信设备一般是网关和手机,相对固定),而蓝牙的设备则多种多样(不同设备的兼容性也不同,需要进行匹配工作),场景也较多,因此造成蓝牙问题比较杂乱!
1)蓝牙dongle
相当于外挂模块,单蓝牙设备,注意要与板载的模组互斥
6、蓝牙版本
1)不同蓝牙版本的综合指南
https://www.mokosmart.com/zh-CN/guide-on-different-bluetooth-versions/
2)概述
1、Bluetooth 2.1+EDR/3.0/4.x/5.0 拆解如下
2.1+EDR : 经典蓝牙
3.0 :支持AMP
4.x :BLE
5.0 : BLE
2、版本号划分:
经典蓝牙版本:蓝牙 1.0 -- 3.0
低功耗蓝牙版本:蓝牙 4.0 -- 6.0
3)蓝牙版本演进总览

7、蓝牙UUID
Universally Unique Identifier,通用唯一标识符
- UUID 是一个 **128 位**(16 字节)的数字,用于**唯一标识**一个实体。在蓝牙中,UUID 用来标识**服务(Service)**、**特征(Characteristic)**、**描述符(Descriptor)** 等。
- 为了节省空间,蓝牙规范定义了一些**标准 UUID**,它们可以简写为 16 位或 32 位。例如:
- `0x1800` → 通用访问服务(Generic Access Service)
- `0x180A` → 设备信息服务(Device Information Service)
设备通过广播或 SDP(Service Discovery Protocol)提供自己支持的服务的 UUID
8、蓝牙PIN
PIN是什么?
PIN是一串数字(通常为 4--16 位),用于传统配对(Legacy Pairing) 过程中验证设备身份。常见于蓝牙 2.0/2.1 时代的耳机、键盘等设备(例如 0000 或 1234)。
作用
设备认证:用户在配对时输入 PIN 码,两端设备用其生成链路密钥(Link Key),从而建立加密连接。
防止中间人攻击:虽然传统 PIN 机制较为简单,但仍是当时的主要安全手段。
在现代蓝牙中:蓝牙 2.1 以后引入了安全简单配对(SSP),通常不再需要用户输入 PIN,而是通过"数值比较"或"Just Works"方式。但在一些老设备或特定场景中,PIN 仍被使用。
注意:在 BLE 配对中,也有类似 PIN 的"密码"(Passkey),用于 6 位数字的输入或确认。