背景

微信小程序兴起,有变成超级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在各种情况下均能正常调用)。

最新文章

  1. hdu 5718(Oracle)大数加法
  2. volley_之基本使用
  3. JBOSS最大连接数配置和jvm内存配置
  4. Authentication in .NET Web Api
  5. [转]ubuntu安装光盘修复grub-rescue引导失败问题
  6. 理解smart pointer之三:unique_ptr
  7. JSP页面中<%! %>和<% %>的区别
  8. 6.24 AppCan移动开发者大会:议程重大更新,报名即将关闭
  9. Programming Concepts
  10. Thread和Runnable差别
  11. Hadoop 2.6.5 FileSystem和Configuration两个对象的探究
  12. 关于加载font-awesome文字显示不出来
  13. day06 内存地址 小数据池缓存机制
  14. leetcode(java)
  15. SQL注入之Sqli-labs系列第十二关
  16. Apache Kafka学习 (一)
  17. Bioconductor应用领域之基因芯片
  18. 【Linux】进程管理
  19. 转 关于window10安装jdk,配置环境变量,javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题。
  20. Delphi映射模式实验

热门文章

  1. c语言深度解剖(笔记)
  2. FTP服务器搭建基础工具:Serv-U 14.0.2使用教程
  3. 磁盘冗余列阵Raid技术知识与实践
  4. 【转载】MyBatis批量插入数据(insert)
  5. RabbitMQ安装&简单使用
  6. SpringBoot事务隔离等级和传播行为
  7. idea插件,配置
  8. Spring HttpServletRequest对象的获取
  9. python 画正态曲线
  10. css3之媒体查询