要搜索的蓝牙设备主 service 的 uuid 列表。某些蓝牙设备会广播自己的主 service 的 uuid。如果设置此参数,则只搜索广播包有对应 uuid 的主服务的蓝牙设备。建议主要通过该参数过滤掉周边不需要处理的其他蓝牙设备。
问: 主uuid是怎么查到的呢?
比如蓝牙打印机,我使用18F0
作为筛选,可以正确筛选的到Printer001
设备。那么18F0
是怎么获得的呢?有什么依据呢?
- 打印信息:
- 使用LightBlue来查看信息:
可以看到,在advertisServiceUUIDS中,以及APP打印的信息中,均看到了
18F0
的身影,但是我们还是不能够确认这种想法是否合理。
- 现在我们用
FEE7
来筛选另一个蓝牙设备来做测试:
可以看到,FEE7依旧是取的是advertisServiceUUIDs列表中,第一个元素的,第三、第四两个字节作为筛选条件。
2.建立连接
- 建立连接后,需要发现主服务和主特征值:
可以看到,我们共发现了4个主服务。那么我们要选哪个服务呢?暂时可以理解为选和主advertisServiceUUIDs中“第一个”相同的作为发现主特征值的那个服务。
- 我们使用第一个服务来获取特征值:
获取到特征值后,我们就可以使用这个服务和这个服务对应的特征值(write 和 notify)来进行操作了(注意,write和notify需要使用他们所属的服务)。
我们通过特征值可以发现,第三和第四字节与lightBlue上的标识相同。并且与服务的不同,也仅仅是第三和第四位不相同而已。