更新记录

1.0.0(2026-07-23) 下载此版本

初版插件


平台兼容性

uni-app(3.8.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × - ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

其他

多语言 暗黑模式 宽屏模式
× ×

轻牛JS蓝牙库

demo使用

下载

git clone https://gitee.com/yolandaqingniu/qn_mp_plugin_demo

安装依赖

yarn

安装依赖后

1. 使用小程序开发者工具打开项目,打开时将将appid改为客户自己的小程序appid
2. 打开后调试器会报错提示需要授权使用插件,直接申请即可通过
3. 重新编译或重新打开项目
4. 工具 --> 构建npm, 注意检查是否勾选本地设置的使用npm模块
5. 预览,可以进行测试了

demo页面说明

1、setting设置页面,用来设置一些用户信息和插件内部的配置项

该界面第一行用来指定跳转到自动页面还是手动控制页面

2、measuring测量页面,模拟实际应用场景,有测量报告页面

3、setWifi,配网页面,与双模称有关

4、deepReport,八电级深度报告展示页面

使用流程介绍

1、初始化

先把插件实例化,并设置蓝牙事件监听类和设备事件监听类

然后在page的onReady事件中,调用初始化方法

注意!安卓手机通常都需要打开定位开关才能使用蓝牙功能,苹果手机则需要获得蓝牙权限

//引入插件
const { QNMPPlugin, QNConsts } = requirePlugin('QNBleApi');

/**
 * 微信的本地日志功能,需要用户手动反馈才能拿到日志文件
 */
const logger = () => {
  const wxlogger =
    wx.getLogManager &&
    wx.getLogManager({
      level: 0,
    });
  const log = (...params) => {
    console.log(...params);
    wxlogger && wxlogger.log(...params);
  };
  return {
    log,
  };
}

 onLoad: function (options) {
    // 初始化蓝牙
    this.bleApi = new QNMPPlugin({
      appId: APPID, // 必须, 客户小程序的appid, 需要配置才能使用,
      logger: logger(), // 非必须,日志功能,最好有,方便排查问题,可以替换为客户自己的
    });
    // 错误监听
    this.bleApi.onError = (err) => { console.error('捕捉到错误', err.detail); };
    // 初始化成功后会进行回调,主要用于蓝牙开始扫描发现设备
    this.bleApi.onReady = ({
      bleEnableState, // 表示当前蓝牙是否为开启状态
    }) => {
      if (bleEnableState) {
        this.bleApi.startBleDeviceDiscovery();
      } else {
        console.log('蓝牙状态为关闭');
      }
    };
    // 设置蓝牙监听事件
    this.bleApi.setBleEventListener(this.bleEventListener());

    // 初始化
    // checkBleAvailable 为检测蓝牙权限是否可用,安卓为位置开关和蓝牙权限
    // iOS为蓝牙权限
    // checkBleAvailable由用户自己实现,并在页面中进行对应的蓝牙权限使用提示
    checkBleAvailable().then(() => this.bleApi.init())
  }

2、启动扫描

调用 this.bleApi.startBleDeviceDiscovery(),会启动蓝牙扫描

扫描的数据会在this.bleApi.setBleEventListener(this);中的 onBleDeviceFound 回调,其中参数是扫描到的设备对象

3、创建连接

调用 this.bleApi.createBleConnection(device, deviceEventListener, operation) 会进行ble的连接

  • device指的是onBleDeviceFound回调中发现的设备
  • deviceEventListener指的是对应所接设备的事件监听,主要用于获取用户测量数据等
  • operation对应设备创建连接时所需参与

4、处理数据

连接成功后,会在deviceEventListener中的, onGetUnsteadyWeightonGetScaleData等方法回调一些数据

最终稳定的数据会在 onGetScaleData中回调。在这个方法中可以用demo提供的报告数据类生成报告数据类

5、停止蓝牙活动

在离开页面的时候,需要调用this.bleApi.stop() 来停止当前的蓝牙活动

// !!! 一定要调用停止扫描,防止退出页面后还有监听事件,并执行对应操作
onUnload: function () {
  this.stopBle();
},

事件监听说明

插件中主要提供两个事件监听回调

  • 蓝牙事件监听回调,回调蓝牙相关的事件,比如蓝牙开关变化,连接成功,扫描到数据等
  • 设备事件回调,回调设备端的事件,该回调需要在连接成功后,才能生效,不同的设备,可能回调的时间不一样

蓝牙事件回调

interface QNBleEventListener {
    /**
     * 蓝牙开关状态变化,available 为true 蓝牙已打开,false 是蓝牙已关闭。
     * 用于处理展示蓝牙状态
     */
    onBluetoothEnableChange: (payload: { available: boolean }) => void;
    /**
     * 回调启动了蓝牙扫描
     */
    onStartDiscoveryDevice: () => void;
    /**
     * 回调停止了蓝牙扫描
     */
    onStopDiscoveryDevice: () => void;
    /**
     * 回调扫描到的蓝牙设备
     * 主要用于对配对的设备进行连接
     */
    onBleDeviceFound: (device: QNBleDevice) => void;
    /**
     * 设备连接成功
     */
    onConnected: (payload: { deviceId: string }) => void;
    /**
     * 设备断开连接
     */
    onDisconnected: (payload: { deviceId: string }) => void;
    /**
     * 设备连接超时
     */
    onConnectOverTime: (payload: { deviceId: string }) => void;
    // onError: QNBleErrorListener
  }

设备事件回调

体脂秤

  • 官网无法查看,下载demo后查看设备事件回调

厨房秤

  • 官网无法查看,下载demo后查看设备事件回调

身高一体机

  • 官网无法查看,下载demo后查看设备事件回调

多用户蓝牙WiFi秤

  • 官网无法查看,下载demo后查看设备事件回调

隐私、权限声明

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

蓝牙、位置信息、网络权限

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

会访问服务器地址third-api.yolanda.hk,主要用于秤体测量数据的分析以及支持一些插件配置服务;插件本身不会自动采集任何信息,只是依托与蓝牙功能与秤体硬件进行联通,必要时会要求使用者在使用API是提供诸如身高、年龄等的用户信息;所有通过蓝牙获取到的或要求用户提供的数据,均用于支持体脂秤的正常工作,且插件及插件所访问的服务器不会存储用户敏感信息,最终用户的测量信息会通过回调返回给业务内容,由用户自行管理

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

许可协议

MIT协议

暂无用户评论。