更新记录
0.1.0(2024-04-01)
0.1.0 (2024-03-29)
- 基于原生Android开发的 uni-app 插件,实现低功耗蓝牙(BLE)通信;
- 扫描蓝牙设备,连接蓝牙设备,实时读取通知数据;
- 向连接的蓝牙设备写入数据;
- DFU(强制升降级模式);
- OTA;
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
dodo-uniplugin-ble
插件测试平台
-
测试手机:vivo、小米、摩托罗拉;
-
测试系统:Android 12;
-
设备不需要root;
功能简介
-
基于原生Android开发的 uni-app 插件,实现低功耗蓝牙(BLE)通信;
-
扫描蓝牙设备,连接蓝牙设备,实时读取通知数据;
-
向连接的蓝牙设备写入数据;
-
DFU(强制升降级模式);
-
OTA;
特别说明
-
蓝牙OTA是针对SILICON芯片开发与测试;
-
文档中所有的UUID需要根据自己芯片的手册查询或让蓝牙硬件开发人员提供;
使用方法
引用
// #ifdef APP-PLUS
const ble = uni.requireNativePlugin('dodo-uniplugin-ble')
// #endif
API
-
在调用方法前,首先必须进行初始化,设置扫描时间
let scanTime = 1000 * 30 //设置扫描时间 30秒 ble.initBle((res) => { console.log(res) }, scanTime)
-
扫描蓝牙设备
ble.searchBle((res) => { console.log(res) //扫描结果 }, res => { console.log(res) //扫描时间结束后执行 })
-
连接蓝牙设备
let address= "B4:3A:31:10:98:78" //蓝牙设备的地址(MAC)
let notifyUuid="00002a05-0000-1000-8000-00805f9b34fb"//接收notify数据的uuid
let timeOut=1000 * 3 //连接超时时间,可根据实际情况进行设置
ble.bleConnect( address, notifyUuid, timeOut,
connectSuccess => {//连接成功
console.log("ConnectSuccess:" + JSON.stringify(connectSuccess))
},
connectFail => {//连接失败
console.log("ConnectFail:" + JSON.stringify(connectFail))
},
serviceList => { //获取蓝牙设备的服务列表
console.log(JSON.parse(serviceList))
},
serviceDiscoveryFail => {//获取蓝牙设备的服务列表失败
console.log("ServiceDiscoveryFail:" + JSON.stringify(serviceDiscoveryFail))
},
receiveMessage => {//接收数据
console.log(this.ab2hex(receiveMessage).toUpperCase())
},
pgss => {//上传OTA文件进度
console.log(pgss)
},
readMessage => {//发送读取数据命令后,从此处接收蓝牙设备返回的数据
console.log(this.ab2hex(readMessage).toUpperCase())
})
- 读取数据
//读取指定UUID的数据值
let readUUid="00002a00-0000-1000-8000-00805f9b34fb"
ble.readBLECharacteristicValue(readUUid, (res) => {
console.log(res)
})
- 写入数据
//读取指定UUID的数据值
let readUUid="00002a00-0000-1000-1111-00805f9b34fb"
let hexStr="1122334455"
ble.writeBLECharacteristicHex(readUUid, hexStr, (res) => {
console.log(res)
})
- 断开连接
ble.disConnectBle((res) => {
console.log(res)
})
- 获取当前连接状态
ble.bleStatus((res) => {
console.log(res)
})
- 进入OTA模式
//蓝牙芯片不同,此命令也不同
let otaControlUUID = "00002a00-0000-1000-2221-00805f9b34fb"
let otaWriteUUID = "00002a00-0000-1000-3331-00805f9b34fb"
ble.inOtaModel(otaControlUUID, otaWriteUUID, (res) => {
console.log(res)
}
})
- 上传升级文件
//上传升级文件
let path="/storage/emulated/0/Download/WeiXin/ota.gbl"
ble.otaDfu(path, res => {
console.log(res)
})
如果觉得可以就点个👍吧,您的关注就是我们的动力!
有使用问题或项目定制需求,联系微信
- rick6655(请备注添加原因)