前言:
蓝牙我们知道在外设方面用的比较多,况且目前在医疗运动等方便使用也比较广泛,博主个人对于外设这一块其实挺看重的,未来必定是可穿戴设备的天下,在达不到完全把功能集成到穿戴设备的技术和降低成本的条件下,外设是一个很好的选择,蓝牙无疑起到决定性的作用。
最近在看蓝牙,关于蓝牙,也许你很了解这个名词,但是你并不知道它的原理,先推荐几篇大神写的博客,初步了解下:
http://www.cocoachina.com/ios/20150915/13454.html
http://www.cocoachina.com/ios/20150917/13456.html
里面也有原作者的代码下载,整理来说写的很详细,基本功能都实现的很好,我们所需要做的就是根据自己的需求简单修改代码就好。
蓝牙有两种情况:中心设备(central)和外设(peripheral)
从其字面理解,中心设备就是用来接收并处理外设发送数据的端,外设自然就是发射消息端,这是在相对层面来说,中心也可以向外设发送数据,不过一般都是发送指令来控制外设,这一点理解就好。
在开发蓝牙之前首先你要了解蓝牙开发的一点限制,如果仅最低支持蓝牙4.0,那么OK,但是要支持2.0,如果你是安卓方面或者iOS越狱手机,无关紧要,但要是想上线到App Store的话,需要硬件厂商有MFI的授权(make for ipad ,iphone, itouch 专们为苹果设备制作的设备),这个对生产厂商有一定要求,需要有一定规模,且为国际企业提供硬件,要求比较高,所以一般都是放弃的。博主比较推崇的是蓝牙4.0 BLE - 开发使用CoreBluetooth 框架,因低功耗而受推崇。
中心设备(central)
将我们的手机作为中心设备,来接收外设发送的数据,如手环。这种情况是最简单也最好处理的,不需要设置UUID和一些蓝牙的参数。需要处理的就是扫描设备->发现设备->连接设备->接收广播->处理服务和特征->展示服务和特征。
在此可能还会有设备断开重连,自动连接,绑定设备的一些操作:
断开重连:连接后可获取到设备的UUID并保存,在断开代理中检测到断开后,查找搜索到的设备的UUID是否和保存的UUID一致,若一致则连接;
自动连接:第一次连接保留了外接设备的UUID,再次打开蓝牙一旦检测到外接设备的UUID和保存的一致则自动连接;
绑定设备:设备都会有唯一Mac地址,一般很少会写进外接设备中,绑定设备在外接设备中也不多见,我们所见到的也不过是断开重连和自动连接的结合使用,好像绑定了一样,这两个功能足以满足用户需要,如果需要绑定则需要外接设备提供Mac地址,因为设备UUID并不是唯一的,这种情况发生在我们使用另外一台设备来连接外接设备,只有在同一台设备上,外设的UUID是不变的。
外设(peripheral)
外设就像是一个广播,工作时无时无刻不在向外广播着,广播的内容我们叫做服务,每一个服务可以有多个特征,在代理中,设备建立连接后可以拿到服务和特征的值。
总结
以上是手机作为中心设备来扫描外设的原理和思路,代码部分请参考上面博客给出的,博主这里提供个Demo,非博主原创Demo,也算给作者正名了,下载地址,如果需要手机来做外设,请参考Demo中给出的实例,不再说明。