更新记录
1.0.1(2023-02-10)
获取蓝牙列表,连接蓝牙
平台兼容性
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原生插件配置”->”云端插件“列表中删除该插件重新选择
插件使用文档
一.引入插件
const bluetooth = uni.requireNativePlugin('LY-BluetoothWeight');
二.使用
- 初始化
//isPrimitive=false回调数据转成保留2位小数数据,isPrimitive=true蓝牙返回的原始数据流(已转成字符串)
bluetooth.initBluetooth({isPrimitive:false})
- 扫描蓝牙
bluetooth.discoveryBluetooth((res) => {//多次回调,可添加到数组展示蓝牙列表
//res数据:{"status":5,"data":{"name":"蓝牙名称","address":"蓝牙地址"}}
if (res.status == 5) {
this.bluetoothList = this.bluetoothList.concat(res.data)
}
});
- 连接蓝牙(未配对弹配对框待配对成功连接蓝牙,已配对直接连接)
res.status | 说明 | res.data |
---|---|---|
0 | 没有配对蓝牙 | 无 |
1 | 读取数据 | res.data(返回电子秤数据,已保留两位小数) |
2 | 蓝牙连接成功 | 无 |
3 | 蓝牙已断开 | 无 |
bluetooth.connectBlutoothWithName({
blutoothName: bluetoothName//蓝牙名称
}, (res) => {
switch (parseInt(res.status)) {
case 0: {
uni.showToast({
title: '请先配对电子秤',
icon: 'error'
})
}
break;
case 1: {
this.weight = res.data;
}
break;
case 2: {
uni.showToast({
title: '蓝牙连接成功',
icon: 'success'
})
}
break;
case 3: {
uni.showToast({
title: '蓝牙已断开',
icon: 'error'
})
}
break;
default:
break;
}
})
- 断开蓝牙(该插件在当前页面销毁时会自动断开蓝牙,也可调用下面方法在当前页面断开蓝牙)
bluetooth.disconnectBluetooth();
- 完整示例
<template>
<view style="display: flex;flex-direction: column;width: 750rpx;">
<view class="header">
<text style="margin-bottom: 40rpx;">{{weight}}kg</text>
<view class="btn_view">
<view class="btn" style="margin-right: 40rpx;" @click="connectBluetooth('BT04')">
连接指定蓝牙
</view>
<view class="btn" style="margin-right: 40rpx;" @click="discovery">
获取蓝牙列表
</view>
<view class="btn" @click="disconnect">
断开蓝牙
</view>
</view>
</view>
<view class="list">
<view class="cell" v-for="(item,index) in bluetoothList" :key="'bluetooth'+index"
@click.stop="connectBluetooth(item.name)">
<text style="color:blueviolet;">名称:{{item.name}}</text>
<text style="color: blue;">地址:{{item.address}}</text>
</view>
</view>
</view>
</template>
<script>
const bluetooth = uni.requireNativePlugin('BluetoothModule');
// const bluetooth = uni.requireNativePlugin('LY-BluetoothWeight');
export default {
data() {
return {
weight: "",
bluetoothList: []
}
},
onLoad() {
bluetooth.initBluetooth()
},
methods: {
connectBluetooth(bluetoothName) {
if (bluetoothName == "") {
uni.showToast({
title: '蓝牙名称为空',
icon: 'none'
})
return
}
bluetooth.connectBlutoothWithName({
blutoothName: bluetoothName
}, (res) => {
switch (parseInt(res.status)) {
case 0: {
uni.showToast({
title: '请先配对电子秤',
icon: 'error'
})
}
break;
case 1: {
this.weight = res.data;
}
break;
case 2: {
uni.showToast({
title: '蓝牙连接成功',
icon: 'success'
})
}
break;
case 3: {
uni.showToast({
title: '蓝牙已断开',
icon: 'error'
})
}
break;
default:{
}
}
})
},
discovery() {
bluetooth.discoveryBluetooth((res) => {
if (res.status == 5) {
this.bluetoothList = this.bluetoothList.concat(res.data)
}
});
},
// 断开蓝牙
disconnect(){
bluetooth.disconnectBluetooth();
}
}
}
</script>
<style>
.header {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 750rpx;
background-color: aqua;
padding: 20rpx 0;
}
.btn_view {
display: flex;
align-items: center;
flex-direction: row;
justify-content: center;
}
.list {
width: 750rpx;
display: flex;
flex-direction: column;
}
.cell {
display: flex;
flex-direction: column;
justify-content: center;
padding: 10rpx;
box-sizing: border-box;
background-color: antiquewhite;
}
.btn {
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
padding: 15rpx 15rpx;
background-color: coral;
box-sizing: border-box;
}
</style>