更新记录

1.0.2(2021-11-29)

(1)更新MTU设置方法 (2)插件名称修改为 KY-KunYuBluetooth 具体引用修改为 uni.requireNativePlugin("KY-KunYuBluetooth");

1.0.1(2021-08-05)

更新接口文档


平台兼容性

Android Android CPU类型 iOS
适用版本区间:6.0 - 11.0 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原生插件配置”->”云端插件“列表中删除该插件重新选择


1、插件介绍

KunYuBluetooth 插件主要解决 uniapp中蓝牙协议对接BUG问题,具体为 notify 与 indicate 协议监听不生效,无法获取监听数据问题。并且增加对蓝牙多设备同时通讯的支持,避免资源冲突。

该插件所有API调用方式及参数沿用uniapp中原有的方式,并且将uniapp所有的接口都重新实现了一遍,并且优化业务代码,实现更加高性能的对接及蓝牙传输,并且简化了蓝牙连接步骤,提供简化连接步骤API,简化连接步骤。

该插件可以友好实现与原生Android蓝牙对接,当前实现了与多家医疗器械产品的对接,比如:欧姆龙血压计、脉搏波血压计、好糖血糖仪、三诺血糖仪、各厂家体重秤等产品,并且提供简化连接步骤,提高连接性能。

该插件只支持Android,IOS不支持,具体打包参考下面文档

Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android Android 云打包另见文档 https://www.cnblogs.com/nanyang520/p/11930864.html

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

2、使用说明

该插件所有接口名称及返回参数都和uniapp插件使用一致,具体接口使用和返回都可参考uniapp蓝牙文档。

具体地址:

蓝牙

https://uniapp.dcloud.io/api/system/bluetooth

低功耗蓝牙

[https://uniapp.dcloud.io/api/system/ble]()

2.1、引入插件

const KY_UNI = uni.requireNativePlugin("KY-KunYuBluetooth");

2.2、常用方法

1、初始化蓝牙

KY_UNI.openBluetoothAdapter( (res) => {
                    // kyBlue.showToast("成功:"+JSON.stringify(res)+"---"+this.title);
                    this.blueStatus = "成功:---"+res.code+"--"+res.message;
                    uni.showToast({title:res.message,icon:'none'});
                    // this.list.push("成功:"+JSON.stringify(res)+"---"+this.title)
                },
                (res) => {
                    // kyBlue.showToast("失败:"+JSON.stringify(res)+"---"+this.title);
                    this.blueStatus = "失败:---"+res.code+"--"+res.message;
                    uni.showToast({title:res.message,icon:'none'});
                });

2、启动蓝牙搜索

KY_UNI.startBluetoothDevicesDiscovery(
                    {
                        services:[],
                        allowDuplicatesKey:false,
                        interval:"0"
                    },
                    (result)=> {
                        this.blueScanStatus = "开启搜索成功:---"+result.code+"--"+result.message;
                        this.blueScanListen = "----准备监听----";
                        uni.showToast({title:result.message,icon:'none'});
                    },
                    (result)=> {

                        this.blueScanStatus = "开启搜索失败:---"+result.code+"--"+result.message;
                        this.blueScanListen = "----重新扫描----";
                        uni.showToast({title:result.message,icon:'none'});
                    }
                );

3、停止蓝牙搜索

KY_UNI.closeBluetoothAdapter( (res) => {
                    // kyBlue.showToast("成功:"+JSON.stringify(res)+"---"+this.title);
                    this.blueStatus = "关闭成功:---"+res.code+"--"+res.message;
                    uni.showToast({title:res.message,icon:'none'});
                    // this.list.push("成功:"+JSON.stringify(res)+"---"+this.title)
                },
                (res) => {
                    // kyBlue.showToast("失败:"+JSON.stringify(res)+"---"+this.title);
                    this.blueStatus = "关闭失败:---"+res.code+"--"+res.message;
                    uni.showToast({title:res.message,icon:'none'});
                });

4、开启搜索监听

KY_UNI.onBluetoothDeviceFound(
                   (res) => {
                       var a = res;
                       // uni.showToast({title:""+JSON.stringify(res),icon:'none'});
                       var tempResult = res.devices;
                       if(tempResult.length>0){
                        this.blueScanInfo = "---"+tempResult[0].name+"--"+tempResult[0].deviceId;
                       }else{
                        this.blueScanInfo = "Device Not Find";
                       }
                       // this.list.push("---"+tempResult[0].name+"--"+tempResult[0].deviceId);
                   }
                );

5、开启连接蓝牙

KY_UNI.createBLEConnection(
                    {
                        deviceId:this.deviceId,
                        timeout:"0"
                    },
                    (result)=> {
                        this.blueConnect = "等待连接成功:---"+result.code+"--"+result.message;
                        uni.showToast({title:result.message,icon:'none'});
                    },
                    (result)=> {
                        this.blueConnect = "等待连接失败:---"+result.code+"--"+result.message;
                        uni.showToast({title:result.message,icon:'none'});
                    }
                );

6、开启连接监听

KY_UNI.onBLEConnectionStateChange(
                   (res) => {
                       var a = res;
                       uni.showToast({title:""+JSON.stringify(res),icon:'none'});
                       this.blueConnect = "连接状态---"+res.connected+"--"+res.deviceId;
                       // this.list.push("---"+tempResult[0].name+"--"+tempResult[0].deviceId);
                   }
                );

7、获取蓝牙服务值

KY_UNI.getBLEDeviceServices(
                    {
                        deviceId:this.deviceId
                    },
                    (result)=> {
                        this.BlueServices = "成功服务值----:"+JSON.stringify(result);
                        uni.showToast({title:JSON.stringify(result),icon:'none'});
                    },
                    (result)=> {

                        this.BlueServices = "失败服务值----:"+JSON.stringify(result);
                        uni.showToast({title:JSON.stringify(result),icon:'none'});
                    }
                );

8、获取服务特征值

KY_UNI.getBLEDeviceCharacteristics(
                    {
                        deviceId:this.deviceId,
                        serviceId:this.AServiceId
                    },
                    (result)=> {
                        this.BlueServices = "成功服务值----:"+JSON.stringify(result);
                        uni.showToast({title:JSON.stringify(result),icon:'none'});
                    },
                    (result)=> {

                        this.BlueServices = "失败服务值----:"+JSON.stringify(result);
                        uni.showToast({title:JSON.stringify(result),icon:'none'});
                    }
                );

9、设置服务协议

KY_UNI.notifyBLECharacteristicValueChange(
                    {
                        deviceId:this.deviceId,
                        serviceId:this.AServiceId,
                        characteristicId:this.BCharactorsId,
                        protocol:this.protocol
                    },
                    (result)=> {
                        this.notifyStatus = "设置协议----:"+JSON.stringify(result);
                        uni.showToast({title:JSON.stringify(result),icon:'none'});
                    },
                    (result)=> {

                        this.notifyStatus = "设置协议----:"+JSON.stringify(result);
                        uni.showToast({title:JSON.stringify(result),icon:'none'});
                    }
                );

10、开启服务协议通讯监听

KY_UNI.onBLECharacteristicValueChange(
                   (res) => {
                       uni.showToast({title:""+JSON.stringify(res),icon:'none'});
                       this.notifyValue = "监听数值---"+JSON.stringify(res.value);
                       // this.list.push("---"+tempResult[0].name+"--"+tempResult[0].deviceId);
                   }
                );

11、写数据

KY_UNI.writeBLECharacteristicValue(
                {
                    deviceId:this.deviceId,
                    serviceId:this.AServiceId,
                    characteristicId:this.writeCharatorsId,
                    value:this.writeData
                },
                (result)=> {
                    this.writeStatus = "写数据成功----:"+JSON.stringify(result);
                    uni.showToast({title:JSON.stringify(result),icon:'none'});
                },
                (result)=> {

                    this.writeStatus = "写数据失败----:"+JSON.stringify(result);
                    uni.showToast({title:JSON.stringify(result),icon:'none'});
                }
                );

12、关闭蓝牙适配器

KY_UNI.closeBluetoothAdapter( (res) => {
                    // kyBlue.showToast("成功:"+JSON.stringify(res)+"---"+this.title);
                    this.blueStatus = "关闭成功:---"+res.code+"--"+res.message;
                    uni.showToast({title:res.message,icon:'none'});
                    // this.list.push("成功:"+JSON.stringify(res)+"---"+this.title)
                },
                (res) => {
                    // kyBlue.showToast("失败:"+JSON.stringify(res)+"---"+this.title);
                    this.blueStatus = "关闭失败:---"+res.code+"--"+res.message;
                    uni.showToast({title:res.message,icon:'none'});
                });

3、其他接口参考请参考

蓝牙

https://uniapp.dcloud.io/api/system/bluetooth

低功耗蓝牙

[https://uniapp.dcloud.io/api/system/ble]()

隐私、权限声明

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

android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.BLUETOOTH_SCAN android.permission.BLUETOOTH_ADVERTISE android.permission.BLUETOOTH_CONNECT android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_COARSE_LOCATION

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

插件不采集任何数据

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

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