Ble蓝牙
ble蓝牙即低功耗蓝牙,也是目前比较流行的一种。它相比于经典蓝牙不同在于他有独有的体系和协议,经典蓝牙更多的是基于socket。
广播包
基本的搜索-绑定-配对-通信就不多赘述了,主要是需要注意一个叫蓝牙广播包的一个东西,BLE 外设开始工作时,会发出广播让中心设备发现,广播的数据包中带有外设的相关信息,比如设备的MAC地址,名字,Service 列表的uuid等等。 代码参考如下:
//设置广播报文
mAdvertiseData = AdvertiseData.Builder()
//设置广播包中是否包含设备名称。
.setIncludeDeviceName(true)
//设置广播包中是否包含发射功率
.setIncludeTxPowerLevel(true)
//设置UUID
.addServiceUuid(ParcelUuid(UUID_SERVICE2))
.build()
//设置广播扫描响应报文(可选)
mScanResponseData = AdvertiseData.Builder()
//自定义服务数据,将其转化为字节数组传入
.addServiceData(ParcelUuid(UUID_SERVICE2), byteArrayOf(2,3,4))
//设备厂商自定义数据,将其转化为字节数组传入
.addManufacturerData(0x06, byteArrayOf(1,2,3))
.build()
0x06代表 非完整的 128 bit UUID 具体Type可参考下面文章
广播包解析格式
既然涉及到广播包就要涉及到解析,可参考这位大佬的文章:blog.csdn.net/ganduwei/ar…
需要注意的坑
- Sercice 和 Characteristic都有他们独立的uui,外围设备和中心设备的uuid对应上才能进行读写通信
- UUID格式(自定义):0x0000xxxx-0000-1000-8000-00805F9B34FB (xxxx)为自定义
- 切勿在蓝牙回调方法里面做延时操作或复杂好耗时运算
分享
-
如果没接触过ble开发的小伙伴可以先看下面这位大佬的文章有个大概了解: www.jianshu.com/p/3a372af38…
-
好用的开源ble框架(FastBle):github.com/Jasonchenli…