本文档为学习蓝牙记录总结及其后续查看,更多为了自用,看到建议快速略读,及其根据总结去看参考文章,对下面的文章作者感谢。
- 蓝牙的低功耗通信(ble)
- 低功耗蓝牙协议中gap和gatt协议
- Gatt协议中的服务(service)和CharActeristic解析:可读/可订阅/可写
- 低功耗蓝牙的连接流程
- 扫描低功耗蓝牙设备
- 连接低功耗的蓝牙设备
- 蓝牙设备间的CharActeristic如何区分可读/可写/可订阅
- 蓝牙设备间的CharActeristic的两种订阅方式(订阅方式相同不同的是订阅后的desc设置过程不一样)
- 蓝牙设备间的广播通信机制
- 低功耗蓝牙协议中gap和gatt协议
- 蓝牙的音频通信协议A2DP及其音频控制通信协议AVRCP协议
- 音频通信协议A2DP
- 蓝牙设备的扫描(和BLE不同标准蓝牙设备扫描)
- 蓝牙设备的连接(需要先配对后连接)
- 蓝牙设备的数据监听(Android:通过广播监听连接状态及其是否开始播放的状态)
- 音频蓝牙控制协议AVRCP协议
- 和A2DP协议一样也是通过profile进行通信
- 通过mark标识符进行命令标识
- 蓝牙按键命令解析及其到音频的转换都是Android底层封装好的且不对外开放,即AVRCP定义的广播和AVRCP的控制类不像A2DP对外开放,都被隐藏掉。
- Android底层对上层开放的是转换后的按键事件,上层app可以根据按键事件处理对应的业务逻辑。
- 音频通信协议A2DP
- 蓝牙耳机及其其他控制器的按键是怎么转化到上层app的
- 如2所述:AVRCP协议,串口通信解析并通过按键到操作符的映射转换为按键事件
- 上层app在需要处理逻辑的页面像按键事件和触摸事件一样对应逻辑处理即可。
参考文章:
蓝牙ble通信及其gatt协议
Android9.0:蓝牙协议总结
android官网:ble解析
BlE协议解读:Gap/Gatt/Service/CharActeristic
BLE模块数据手册:专业论文
实战参考:
android与BLE之间的通信
Android蓝牙BLE通信:扫描
AndroidBLE通信:连接/发现服务/发现特征值/监听特征值
大神封装文档:BLE多功能实现项目(基于google的ble工程)
上面封装项目代码github
上面封装项目代码开源广场
CharActeristic:官方串口通信特征值的16进制标识符
如何获取服务及其特征值和特征值的读取写入
订阅特征值不起作用的解决方法:貌似不管用音频通信协议A2DP和音频控制协议AVRCP
蓝牙A2DP协议解析
蓝牙设备A2DP协议连接的时候如何过滤非A2DP协议设备
AVRCP协议
蓝牙音乐之AVRCP
AVRCP的framework层实现
A2DP蓝牙AVRCP +模块1.3+蓝牙耳机等按键事件分析:
蓝牙按键事件与系统事件分析详解
车载蓝牙音乐对A2DP和AVRCP协议的使用
如何监听蓝牙耳机的按键
蓝牙自拍杆的原理
android官网:如何处理多输入系统的校验及其是否支持游戏校验等