微信小程序实现链接蓝牙设备跑步APP

背景

微信小程序兴起,有变成超级APP的趋势,经过微信提供的小程序api,能够经过微信调用到手机原生的支持。小程序

目标

经过微信小程序实现来实现跑步类App的功能。微信小程序

需求分析

跑步类App须要的两个核心的数据是:心率,GPS。(固然有些App没有连接心率设备,那就不要获取实时心率了)。api

工具

到微信公众平台申请小程序帐号,下载微信开发者工具(预览功能可让手机扫一扫预览小程序)。微信

图片描述

核心功能一:链接蓝牙设备

1.初始化蓝牙适配器 openBluetoothAdapter。微信开发

图片描述

2.获取蓝牙适配器状态getBluetoothAdapterState,若是蓝牙可用则,则寻找附近设备;若是不可用,则提示蓝牙未开启并监听蓝牙状态onBluetoothAdapterStateChange。微信公众平台

图片描述

3.开始寻找附近设备startBluetoothDevicesDiscovery,找到附近的蓝牙列表getBluetoothDevices,并同时监听onBluetoothDeviceFound,发现新设备则添加到蓝牙列表中。工具

图片描述

图片描述

4.在蓝牙列表选择蓝牙设备,获取对应的deviceId。spa

5.建立蓝牙链接createBLEConnection,以deviceId为参数,建立成功后调用stopBluetoothDevicesDiscovery方法,中止寻找蓝牙设备(寻找设备须要花费大量资源)。图片

图片描述

6.获取蓝牙设备服务getBLEDeviceServices,拿到serviceId。资源

7.获取该设备全部特征值getBLEDeviceCharacteristics,拿到characterId,至此链接设备的三个参数都拿到了(deviceId,serviceId,characterId)。

图片描述

8.开启notify通讯notifyBLECharacteristicValueChange。

图片描述

9.监听onBLECharacteristicValueChange传输的消息,到这一步蓝牙设备实时发送的消息就接收到了。

图片描述

核心功能二:获取手机GPS

调用wx的api,getLocation便可调用当前的GPS信息、速度、海拔等,计算gps两点之间的距离就能够获取整段距离,调用小程序的map组件能够将整段的GPS绘制成跑步路线。

图片描述

图片描述

遇到的问题

微信小程序api的getLocation功能缺陷:Ios设备在息屏和后台运行的状况下getLocation均没法正常调用,只有切换到前台运行时,才能正常使用(使用的是苹果7)。Android设备部分设备在息屏和后台运行状况下getLocation没法正常调用(本人实测,华为mate10 后台+息屏状况下没法调用,可是honor7X在各类状况下均能正常调用)。

相关文章
相关标签/搜索