微信小程序興起,有變成超級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傳輸的消息,到這一步藍牙設備實時發送的消息就接收到了。
調用wx的api,getLocation便可調用當前的GPS信息、速度、海拔等,計算gps兩點之間的距離就能夠獲取整段距離,調用小程序的map組件能夠將整段的GPS繪製成跑步路線。
微信小程序api的getLocation功能缺陷:Ios設備在息屏和後臺運行的狀況下getLocation均沒法正常調用,只有切換到前臺運行時,才能正常使用(使用的是蘋果7)。Android設備部分設備在息屏和後臺運行狀況下getLocation沒法正常調用(本人實測,華爲mate10 後臺+息屏狀況下沒法調用,可是honor7X在各類狀況下均能正常調用)。