怎样利用微信小程序蓝牙Bug
虽然微信小程序蓝牙的开放让很多人为之振奋,毕竟它的开放又让小程序的功能完善了一大步,但是由于蓝牙模块处于初级阶段,所以还存在很多Bug。怎样才能利用微信小程序蓝牙Bug玩出新花样呢?开发者们还是要多熟悉和掌握有关于小程序蓝牙的相关知识才行,一起来学习下吧!
微信小程序蓝牙的开发是指基于蓝牙4.0的低功耗蓝牙开发。
通常在我遇到的不懂蓝牙或者了解一点蓝牙的朋友看来,往往将BLE等同于蓝牙4.0,其实不然。
蓝牙4.0是协议,4.0是协议版本号,蓝牙4.0是2010年6月由SIG发布的蓝牙标准,它有两种模式:
1、BLE(Bluetooth low energy)只能与4.0协议设备通信,适应节能且仅收发少量数据的设备(如手环、智能体温计),称之为低功耗蓝牙;
2、BR/EDR(Basic Rate / Enhanced Data Rate),向下兼容(能与3.0/2.1/2.0通信),适应收发数据较多的设备(如耳机、手机、平板)。这个模式常常也有人称之为“传统蓝牙”或“经典蓝牙”;
可以这样理解,蓝牙4.0协议包含BLE,BLE隶属于蓝牙4.0协议的一部分。
对于小程序蓝牙相关开发者来说,着重学习低功耗蓝牙,即BLE。
1、GATT,当有人提到GATT的时候,你就可以想象为BLE。
BLE技术是基于GATT进行通信的,GATT是一种属*传输协议,简单的讲可以认为是一种属*传输的应用层协议。
每一个设备中存在很多的“service”(服务),service中还包含有多个“Characteristic”(特征值),每个Characteristic具备不同的权限(读、写、通知)。
在蓝牙实际的微信小程序数据存储与交换中,就是通过读、写、通知这些“Characteristic”来实现的。
需要注意的是,除了那些蓝牙技术联盟定义为标准的service(服务)和characteristic之外,硬件设备的开发者也可以自己定义,这就是蓝牙开发过程中难点,软件开发者需要向硬件开发者(厂商)了解service、characteristic的相关作用,比如小米手环,哪些service、characteristic是用来读取步数、哪些又是用来设置手环震动方式的,这些需要软件开发者和硬件开发者双方沟通协作的。
任何BLE功能的实现都要对characteristic进行操作,主要包括有三种:
1、读取特征值
2、写入特征值
3、特征值的变化通知
比如小米手环的计步功能的可以由两种实现:
1、每隔一段时间读取一下步数。
2、实时显示步数,即每走一步更新一次。
很显然1是通过读取特征值,2是通过特征值变化通知实现的,分别解析value值后即可得到相应的步数。
了解了BLE基础知识后,我们就可以通过微信小程序连接小米手环的实例进一步熟悉小程序蓝牙的开发:
1、因为我们不是小米官方的开发人员,所以我们只能反编译小米运动app来得到部分可以得到的characteristic数据(步数uuid、电量uuid、震动uuid)。
2、通过wx.openBluetoothAdapter初始化蓝牙设备。
3、通过wx.getBluetoothAdapterState获取本机的蓝牙状态。
4、通过wx.startBluetoothDevicesDiscovery搜索周边的蓝牙,因为周边一定有其它的蓝牙设备。
5、通过wx.onBluetoothDeviceFound搜索回调事件可以得到搜索到的蓝牙设备,如果是小米手环一代(设备名:MI1A),则进行记录该设备信息。
6、通过wx.createBLEConnection连接小米手环蓝牙设备。
7、通过wx.getBLEDeviceServices获取蓝牙设备所有service服务。
8、因为小米手环有很多service服务,需要循环遍历每个service服务并通过wx.getBLEDeviceCharacteristics获取该service服务的Characteristics进行格式化封装、记录。
9、再次循环遍历封装好的service、characteristic,匹配到上面我们提到的步数uuid、电量uuid、震动uuid,如果匹配到,我们也将对应的service、characteristic数据分别进行记录。
10、根据以上获取到的数据,我们便可以进行微信小程序和小米手环的数据交互了,比如读取手环的步数信息、发送震动通知、读取手环剩余电量等信息。
上文从小米手环为例,向大家讲述了如何利用微信小程序蓝牙Bug,而不是因为Bug导致小程序蓝牙的开发失败。只有这样,你才能获得足够好的小程序使用体验,有没有心动呢?快来试试吧!
怎么实现微信小程序蓝牙打印功能?
微信小程序蓝牙开发怎么操作?
微信小程序蓝牙API使用指南