更新记录

1.3.1(2020-04-28)

iOS:

  • 处理初始化后自动断线重连问题
  • 处理 deviceId 非 UUID 问题
  • 支持 deviceId 直连设备,无需先扫描
  • 修复已知问题

1.3.0(2020-04-26)

  • 支持 iOS 平台
  • 修正文档

1.2.0(2020-01-13)

增加计步、电量数据获取方法。

查看更多

平台兼容性

Android Android CPU类型 iOS
armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


VpBluetooth SDK

VpBluetooth SDK

使用

引入插件

const VpBluetooth = uni.requireNativePlugin("UUCoder-VpBluetooth");

初始化模块

const result = VpBluetooth.init(event => {
  switch(event.name) {
    case "onSearchStarted":
      console.log("开始扫描设备");
      break;
    case "onDeviceFounded":
      console.log("扫描到设备:", event.data);
      break;
    case "onSearchStopped":
      console.log("停止扫描设备");
      break;
    case "onSearchCanceled":
      console.log("取消扫描设备");
      break;
  }
});
console.log("VpBluetooth.init: ", result);

开始扫描设备

VpBluetooth.startScanDevice();

停止扫描设备

VpBluetooth.stopScanDevice();

连接到设备

const result = VpBluetooth.connectDevice("E1:C3:7F:97:08:6D", result => {
  if (result.state !== "SUCCESS") {
    console.log("连接设备失败");
    return;
  }

  switch(result.type) {
    case "connectResponse":
      console.log("连接设备成功,是否为 DFU 模式:", result.isoadModel);
      break;
    case "notifyResponse":
      console.log("设备监听已就绪");
      break;
  }
});
console.log("VpBluetooth.connectDevice: ", result);

校验密码

// 默认密码 0000
const result = VpBluetooth.confirmDevicePwd("0000", result => {
  // - onPwdDataChange
  // {
  //     "type": "onPwdDataChange",
  //     "data": {
  //         "deviceVersion": "02.13.04",
  //         "wearDetectFunction": "\"UNSUPPORT\"",
  //         "openNightTurnWriste": "\"SUPPORT_OPEN\"",
  //         "deviceTestVersion": "02.13.04.00",
  //         "mStatus": "\"CHECK_AND_TIME_SUCCESS\"",
  //         "deviceNumber": 1039,
  //         "findPhoneFunction": "\"UNSUPPORT\"",
  //         "haveDrinkData": false
  //     }
  // }

  // - onFunctionSupportDataChange
  // {
  //     "type": "onFunctionSupportDataChange",
  //     "data": {
  //         "allMsgLength": 17,
  //         "wathcDay": 3,
  //         "heartDetect": "\"SUPPORT\"",
  //         "weChatSport": "\"SUPPORT\"",
  //         "drink": "\"UNSUPPORT\"",
  //         "screenLightTime": "\"SUPPORT\"",
  //         "camera": "\"SUPPORT\"",
  //         "alarm2": "\"SUPPORT\"",
  //         "precisionSleep": "\"SUPPORT\"",
  //         "longseat": "\"SUPPORT\"",
  //         "spo2HAdjuster": "\"SUPPORT\"",
  //         "sportmodelday": 3,
  //         "originProtcolVersion": 3,
  //         "countDown": "\"SUPPORT\"",
  //         "newCalcSport": "\"SUPPORT\"",
  //         "screenStyleFunction": "\"SUPPORT\"",
  //         "spo2HBreathBreak": "\"UNSUPPORT\"",
  //         "contactMsgLength": 4,
  //         "nightTurnSetting": "\"SUPPORT\"",
  //         "hidFuction": "\"UNSUPPORT\"",
  //         "fatigue": "\"UNSUPPORT\"",
  //         "bp": "\"SUPPORT\"",
  //         "lowPower": "\"SUPPORT\"",
  //         "beathFunction": "\"UNSUPPORT\"",
  //         "sportModel": "\"SUPPORT\"",
  //         "screenLight": "\"SUPPORT\"",
  //         "screenstyle": 4,
  //         "ecg": "\"SUPPORT\"",
  //         "heartWaring": "\"SUPPORT\"",
  //         "women": "\"UNSUPPORT\"",
  //         "multSportModel": "\"UNSUPPORT\"",
  //         "hrvFunction": "\"SUPPORT\"",
  //         "angioAdjuster": "\"UNSUPPORT\"",
  //         "spo2H": "\"SUPPORT\""
  //     }
  // }

  switch(result.type) {
    case "onPwdDataChange":
      console.log("密码信息:", result.data);
      break;
    case "onFunctionSupportDataChange":
      console.log("设备信息:", result.data);
      break;
  }
});
console.log("VpBluetooth.confirmDevicePwd: " + result);

同步用户信息

/**
 * 同步用户信息
 * @param {number} 性别:1-男,0-女
 * @param {number} 身高CM
 * @param {number} 体重KG
 * @param {number} 年龄
 * @param {number} 每日目标步数
 */
VpBluetooth.syncPersonInfo(1, 168, 58, 24, 10000, result => {
  // result.status
  // OPRATE_SUCCESS - 成功
  // OPRATE_FAIL - 失败
  // UNKNOW - 未知错误
});

开始测量心率

VpBluetooth.startDetectHeart(result => {
  // 测量前
  // {
  //     "status": "STATE_INIT",
  //     "value": 0
  // }

  // 测量中
  // {
  //     "status": "STATE_HEART_NORMAL",
  //     "value": 76
  // }

  // 测量错误
  // {
  //     "status": "STATE_HEART_WEAR_ERROR",
  //     "value": 0
  // }
});

停止测量心率

VpBluetooth.stopDetectHeart();

开始测量血氧

VpBluetooth.startDetectSPO2H(result => {
  // 测量前
  // {
  //     "state": "OPEN",
  //     "value": 0
  // }

  // 测量中
  // {
  //     "state": "OPEN",
  //     "value": 98
  // }

  // 测量错误
  // {
  //     "state": "OPEN",
  //     "value": 1
  // }

  // 测量结束
  // {
  //     "state": "CLOSE",
  //     "value": 1
  // }
});

停止测量血氧

VpBluetooth.stopDetectSPO2H();

开始测量血压

VpBluetooth.startDetectBP(result => {
  // 正常
  // {
  //    "status": "STATE_BP_NORMAL",
  //    "progress": 100,                // 测量进度
  //    "highPressure": 120,        // 收缩压
  //    "lowPressure": 90               // 舒张压
  // }

  // 异常
  // {
  //    "status": "STATE_BP_BUSY",
  //    "progress": 0,
  //    "highPressure": 0,
  //    "lowPressure": 0
  // }
});

停止测量血压

VpBluetooth.stopDetectBP();

读取计步数据

VpBluetooth.readSportStep(result => {
    // 数据
  // {
  //     "dis": 0.032,          // 距离(km)
  //     "calcType": 2,         // 计算方式, 0 表示传统算法,1 表示新算法公式,2表示运动模式的设备
  //     "step": 42,                // 步数
  //     "kcal": 2.1                // 卡路里(kcal)
  // }
});

读取电量

VpBluetooth.readBattery(result => {
    // 数据
  // {
  //     "batteryLevel": 2      // 电量等级:1-4,4表示满电
  // }
});

断开连接

VpBluetooth.disconnectWatch();

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问