蓝牙协议包括两种技术:Basic Rate(简称BR)和Low Energy(简称LE)。这两种技术,都包括搜索(discovery)管理、连接(connection)管理等机制,但它们是不能互通的!这也是蜗蜗抱怨蓝牙协议不优雅的原因之一。详细参考 http://www.wowotech.net/sort/bluetooth 。
而LE提供的功能是小量数据的传递功能。像音乐和话音这种功能,必须有BR提供。
Beacon技术则是利用了LE的广告功能。
BR蓝牙的主从在连接之前,需要进行配对。而LE的连接是无需配对的,直接连接,如需配对,也是在连接完成之后进行,而配对的目的也是为了提供安全服务,如果对数据安全没有要求,完全就不用配对,连接完成之后,直接进行数据的收发即可。http://blog.chinaunix.net/uid-28852942-id-5700019.html 这个网页,说明了host在连接完成后,如何触发配对:
1:手机连接上后立刻 调用安全请求api sd_ble_gap_authenticate。
这样手机收到后就会发送配对请求
LE的GATT是连接完成后数据收发的profile。而广告和连接建立过程的profile则是GAP。GAP提供了SM(配对就属于SM的内容)相关的操作界面。http://www.wowotech.net/bluetooth/le_security_manager.html 最后有这么一段话:放心,蓝牙协议不会给我们提供这么简陋的接口的,参考上面图片1,SM之上不是还有GAP吗?对了,真正使用SM功能之前,需要再经过GAP进行一次封装。
LE连接后的数据收发是按照Service->characteristic这个模式来的。实际上是对characteristic进行读写。
LE蓝牙的开发,在IOS上的请参考:https://www.jianshu.com/p/38a4c6451d93 蓝牙开发 Bluetooth蓝牙CoreBluetooth 蓝牙中心设备的实现 蓝牙外设的实现 有OC和Swift的Demo。在android上的请参考:https://www.jianshu.com/p/29a730795294 和 https://www.jianshu.com/p/a274e17fc66a。我就按照上面两个参考,完成了将一部iphone作为外设,将android手机作为中心设备,成功进行了两者间的数据收发。