引导语
人工智能自1956年提出以来,一直默默无闻,近年来人工智能的发展得到重视逐渐发展起步,智能硬件、智能手环、智能家居等等逐渐走进人们的生活,大大方便人们的同时也带来了全新的用户体验和互联网一个新的发展方向。
前言
最近公司也在做硬件设备,作为一名iOS开发人员,主要负责手机软件、硬件的连接方面,开发连接硬件使用的SDK,其中主要模块是蓝牙连接,通过蓝牙与硬件设备连接,发送指令使硬件工作。
功能说起来很简单,但是寻找了好几天的蓝牙方面的Demo,看到了很多前人大神们封装的Bluetooth方法,感觉对于我等小白实在是有点深奥,方法繁多,不知从何处下手。所以最后考虑再三,还是从底层基础入手,自己重新整理、封装了一份蓝牙的查找、连接、写入、断开的类,本着程序员的开源精神,分享出来,欢迎大家指正。
下面 ,我对封装类从功能方面分类进行说明:
系统蓝牙状态监听
这个很方便,在系统蓝牙方法centralManagerDidUpdateState中就可以实时获取到蓝牙状态的改变,所以用一个Block回调就可以得到状态,根据状态变化做对应操作即可。
方法代码如下:
/**
系统当前蓝牙的状态
@param stateBlock 实时返回当前蓝牙状态
*/
- (void)returnBluetoothStateWithBlock:(FZStateUpdateBlock)stateBlock;
蓝牙搜索
蓝牙搜索的功能方法中,用系统原生的方法scanForPeripheralsWithServices:options:,在蓝牙搜索的代理方法centralManager:didDiscoverPeripheral:advertisementData:RSSI:里获取搜索结果,用Block返回搜索结果。另外添加了方法通过设置参数nameStr来筛选返回的设备名称,nameStr为设备模糊搜索参数,设备中包含nameStr字段即可返回搜索结果。
封装后的代码调用方法如下:
/**
* 开始搜索蓝牙外设,每次在block中返回一个蓝牙外设信息
*
* @param nameStr 模糊搜索设备名称,目标设备名称包含字段
* 返回的block参数可参考CBCentralManager 的 centralManager:didDiscoverPeripheral:advertisementData:RSSI:
*
* @param discoverBlock 搜索到蓝牙外设后的回调
*/
- (void)scanForPer