前言
关于安卓蓝牙开发,网上大部分都是2.0和4.0低功耗蓝牙的开发,2.0蓝牙开发就不赘述了,这里着重说一下4.0/5.0 BLE开发。其实,4.0和5.0蓝牙协议对于android开发者而言,都是一套API,18年之后的手机蓝牙硬件基本上都支持蓝牙5.0,至于4.0和5.0的区别在于,划重点!5.0辐射范围更广,高达300米,其次是最大发送包的字节数位256b(4.0是32个字节),具体数值不太确定了,不过大致应该是这样。
特性characteristic
如何扫描设备,建立连接,很多博客都已经写的很详细了,我这里着重介绍一下如何收发数据。通过特性值来完成收发。
获取服务端的数据方式有两种,一种是read,这种操作读一次获取一个包,效率很差。
第二种就是常用的通知notify方式,只有需要传输数据的时候或者说数据有效时,server才开始notify或者indicate数据到client,至于开关就是后面提到的CCDD,这里踩了很多坑,关于CCDD。
一个characteristic包含三种条目:characteristic 声明,characteristic的值,以及characteristic的描述符(可以多个描述符)。
Characteristic Declaration:在蓝牙开发中用不到。
Characteristic value:数据值。
Characteristic descriptor:就是数据的额外信息,CCCD是一种特殊characterristic descriptor。
先看一张表:
图片.png
不管是characteristic declaration,characteristic value 还是characteristic descriptor来实现的时候,我们都是用attribute来表达。
Attribute handle:Client 访问Server的Attribute,都是通过这个句柄handle来访问的
Attribute Type:Attribute类型,BLE中我们使用UUID来定义数据类型,有个基地址,
0000xxxx-0000-1000-8000-00805F9B34FB。type是拼在XXXX那。
Attribute value :数据真正的值,0到512字节长。
Attribute permission:Attribute的权限属性。这里不再详细展开
总结
在蓝牙5.0开发中,主要碰到蓝牙5.0协议 安卓API不变,还有一个就是这个CCDD,一直搞不太懂,做一下踩坑记录,希望之后大家碰到类似的问题能从这篇文章得到启发。之后还会如何更新组包的问题。
网友评论