背景

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

目标

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

需求分析

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

工具

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

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

1.初始化蓝牙适配器 openBluetoothAdapter。

2.获取蓝牙适配器状态getBluetoothAdapterState,如果蓝牙可用则,则寻找附近设备;如果不可用,则提示蓝牙未开启并监听蓝牙状态onBluetoothAdapterStateChange。

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

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

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在各种情况下均能正常调用)。

微信小程序实现连接蓝牙设备跑步APP相关推荐

  1. APP 转让问题记录-跳转微信小程序正在连接

    问题: APP 跳转到微信小程序一直在连接中,未能跳转到指定的微信小程序 具体问题描述: APP 转让到其他开发者账号后,进行更新上架成功后,跳转微信小程序失败,因为转让到其他 APP 后,teamI ...

  2. 微信小程序同时连接两台蓝牙设备

    微信小程序同时连接两台蓝牙设备 自己测试了微信小程序的蓝牙接口是否可以同时连接两台蓝牙设备并同时接收数据,实践测试发现,可以同时连接多台蓝牙设备但是不可以同时接收数据,监测接收数据的接口 wx.onB ...

  3. 微信小程序通过低功耗蓝牙设备进行定位及测距(二)

    定位及测距的原理 微信小程序搜索附近蓝牙设备,通过指定蓝牙名称获取信号轻度rssi,再通过信号强度转化为距离,进而实现定位和测距.(具体实现看代码) 信号响度转距离的公式 代码实现 var point ...

  4. 微信小程序蓝牙连接步骤

    微信小程序蓝牙连接步骤  注意,微信小程序的低功耗蓝牙,获取附近蓝牙时,ios和android获取的deviceid 是不一样的.android获取的是mac地址,ios获取的是经过内部转换加密过的. ...

  5. 微信小程序 Node连接本地MYSQL

    微信小程序 Node连接本地MYSQL 搭建Node环境 小程序中js发送请求 原博客基础上略微修改 搭建Node环境 前提:MYSQL已经创建好数据库 + 安装好node 项目中,新建一个文件ser ...

  6. pos请求 微信小程序_微信小程序蓝牙连接小票打印机实例代码详解

    1.连接蓝牙 (第一次发表博客) 第一步打开蓝牙并搜索附近打印机设备// startSearch: function() { var that = this wx.openBluetoothAdapt ...

  7. 微信小程序实质是什么? Hybrid App

    微信小程序是一种不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开应用.微信小程序实质是Hybrid技术的应用.Hybrid App(混合模式移动应用). 小程序能够更多的可以更多的调用手机本 ...

  8. 微信小程序之校园二手交易系统app毕业设计ssm

    微信小程序之校园二手交易系统app毕业设计ssm

  9. java计算机毕业设计基于安卓Android/微信小程序的大学生签到管理系统APP

    项目介绍 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化,网络化和电子化.网上管理,它将是直接管理签到系统app的最新形式.本论文是以构建签到系统ap ...

最新文章

  1. python读取文件夹下文件
  2. HTMLCollection元素的For循环
  3. slf4j 日志接口 统一
  4. YII1 MVC初认识(二)
  5. 1689: 营救小明(bfs+priority_queue逆向思维)
  6. CSRF的绕过与利用
  7. python入门到熟练要多久_python_入门到熟练_day02
  8. java.io.Serializab接口
  9. Excel精度问题。
  10. CycleGAN与pix2pix详解
  11. ubuntu18.04 卸载Anaconda3
  12. 如何实现自己的股票量化交易接口?
  13. 禁止微信中长按出现 复制文本和在浏览器中打开
  14. php deflate 解压,PHP编码gzdeflate与Golang解码DEFLATE
  15. 大豆技术面分析_大豆高产栽培技术分析,科学施肥很关键,建议收藏
  16. 工作流应用 电子表单签核
  17. **图片元信息Exif**
  18. day18_项目框架搭建1
  19. leetcode378.有序矩阵中第K小的元素(中等)
  20. 芯片IC附近为什么放0.1uF的电容?难道1uF不行吗?

热门文章

  1. websocket测试工具,支持ws wss客户端
  2. DLT645通信规约DTU 智能远程抄表
  3. 拆装微型计算机的心得体会,微机课程设计心得
  4. Coding and Paper Letter(十九)
  5. vegas pro18最新中文版下载激活码安装教程
  6. 自动化测试的前沿技术分享
  7. 矛与盾:用VB打造驱动级键盘记录器,能过QQ密码框(源码)
  8. CAD二次开发 ZOOM 居中视野
  9. 基于JavaEE的同学录校友录管理系统_JSP网站设计_SqlServer数据库设计
  10. 关于“短”的算法(二)