当前位置: 首页 > Web前端 > HTML5

微信小程序实现连接蓝牙设备运行APP

时间:2023-04-05 19:22:36 HTML5

背景微信小程序正在兴起,有成为超级应用的趋势。通过微信提供的小程序API,我们可以通过微信调用手机的原生支持。目标是通过微信小程序实现运行app的功能。需求分析运行APP需要的两个核心数据是心率和GPS。(当然,有些APP没有连接心率设备,所以不能获取实时心率)。工具到微信公众平台申请小程序号,下载微信开发者工具(预览功能可手机扫描预览小程序)。核心功能一:连接蓝牙设备1.初始化蓝牙适配器openBluetoothAdapter。2.获取蓝牙适配器状态getBluetoothAdapterState,如果蓝牙可用,则搜索附近的设备;如果不可用,会提示蓝牙未开启,并在BluetoothAdapterStateChange上监听蓝牙状态。3.开始寻找附近的设备startBluetoothDevicesDiscovery,找到附近的蓝牙列表getBluetoothDevices,同时监听onBluetoothDeviceFound,将新设备添加到蓝牙列表中。4.在蓝牙列表中选择一个蓝牙设备,获取对应的deviceId。5、创建蓝牙连接createBLEConnection,以deviceId为参数,创建成功后调用stopBluetoothDevicesDiscovery方法,停止搜索蓝牙设备(查找设备需要占用大量资源)。6、获取蓝牙设备服务getBLEDeviceServices,获取serviceId。7、获取设备的所有特征值getBLEDeviceCharacteristics,获取characterId,获取连接设备的三个参数(deviceId,serviceId,characterId)。8.启用通知通信notifyBLECharacteristicValueChange。9.监听onBLECharacteristicValueChange发送的消息。此时会收到蓝牙设备实时发送的消息。核心功能2:获取手机GPS并调用wxapi,getLocation可以调用当前GPS信息,速度,高度等,计算两个GPS点之间的距离得到全程距离,调用小程序的地图组件得到GPS的整个距离段绘制成跑步路线。遇到的问题是微信小程序api的getLocation函数有缺陷:在Ios设备在屏幕或后台运行时getLocation无法正常调用,只有切换到前台才能正常使用(使用苹果7)。部分Android设备在熄屏后台运行时无法正常调用getLocation。