更新记录

1.0.1(2024-09-16)

调整为数据发送默认16进制字符串模式 接收为16进制字符串

1.0.0(2024-09-16)

初始版本


平台兼容性

HbuilderX/cli最低兼容版本
4.24

uni-app

Vue2 Vue3
?
app-vue app-nvue app-android app-ios app-harmony
? ? ? ? ?
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
? ? ? ? ? ? ? ? ?
微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序 钉钉小程序 快手小程序 飞书小程序 京东小程序
? ? ? ? ? ? ? ? ?
快应用-华为 快应用-联盟
? ?

uni-app x

app-android app-ios
? ?
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
? ? ? ? ? ? ? ? ?

bluetooth-manager uni-APi插件

  • 支持异常断开检测,断开,连接,扫描,配置连接服务uuid(默认串口服务uuid),重复连接检测, 数据发送,接收
  • 理论支持vue2 未实验
  • 理论支持多台设备连接 手头设备有限 未实验
  • 有问题反馈就处理
  • uni-app uni-app-x

数据类型

type Device = {
  name: string;
  address: string;
  rssi: number,
};

API接口说明

  • 初始化蓝牙适配器
initBluetoothAdapter(options: {
  success?: () => void;
  fail?: (res: ApiFailImpl) => void;
  complete?: () => void;
}): void;
  • 设置扫描到设备回调(传入null可取消回调)
onScan((device: Device) => {

})
  • 设备接收到数据回调
onDataReceived((address: string, data: string) => {
  toast(address + '收到数据:' + data) // 收到数据:102030405060708090A0B0C0D0E0F0
})
  • 设备异常断开回调
onDisconnect((address: string) => {
  toast(address + '异常断开')
})
  • 连接到指定设备 (需要验证权限)
uni.showLoading()
connectToDevice({
  address: device.address,
  //uuid: "xxxx-xxxx-...", // 连接到指定服务
  success() {
    toast('连接设备成功')
    connectedDevices.value.push(device);
  },
  fail(e: any) {
    toast(e.errMsg || '连接设备失败');
    console.error(e);
  },
  complete() {
    uni.hideLoading();
  }
})
  • 断开指定设备
disconnectDevice({
  address: device.address,
  success() {
    toast('断开设备成功')
  },
  fail(e: any) {
    toast(e.errMsg || '断开设备失败')
    console.error(e);
  }
})
  • 向指定设备写入数据
writeData({
  address: device.address,
  data: '102030405060708090A0B0C0D0E0F0',
  type?: 'hex' | 'text' // 默认 hex
  success() {
    toast('发送数据成功')
  },
  fail(e: any) {
    toast(e.errMsg || '发送数据失败')
    console.error(e);
  }
})
  • 开始扫描设备 (需要验证权限)
startScanning({
  success() {
    console.log('ok')
    isScan.value = true
  },
  fail(e: any) {
    toast(e.errMsg || '失败')
    console.error(e);
  }
})
  • 停止扫描设备
stopScanning({
  success() {
    console.log('ok')
    isScan.value = false
  },
  fail(e: any) {
    toast(e.errMsg || '失败')
    console.error(e);
  }
})

主要接口类型

export type DefaultOptions = {
  success?: () => void;
  fail?: (res: ApiFailImpl) => void;
  complete?: () => void;
}

export type Device = {
  name: string;
  address: string;
  rssi: number,
}

export type ConnectToDeviceOptions = {
  address: string;
  uuid?: string;
  success?: () => void;
  fail?: (res: ApiFailImpl) => void;
  complete?: () => void;
}

export type DisconnectToDeviceOptions = {
  address: string;
  success?: () => void;
  fail?: (res: ApiFailImpl) => void;
  complete?: () => void;
}

export type WriteDataOptions = {
  address: string;
  data: string;
  success?: () => void;
  fail?: (res: ApiFailImpl) => void;
  complete?: () => void;
}

注意

  • 不会主动提示消息,错误消息需要自行在fail回调中展示e.errMsg toast(e.errMsg || '操作失败')
  • 安卓需要配置蓝牙相关权限,当前版本仅作权限检查, 未作权限动态申请,需要开发者在调用相关接口前自行检查权限并申请
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:ignore="CoarseFineLocation"/>

隐私、权限声明

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

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:ignore="CoarseFineLocation"/>

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

插件不采集任何数据

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

暂无用户评论。

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