更新记录
1.0.0(2026-07-24)
- 首发
lizhao-bleAndroid BLE Central UTS API 插件,支持 uni-app Vue2/Vue3、nvue 与 uni-app x。 - 提供蓝牙适配器开关与状态、设备扫描与筛选、连接/断开、服务与特征发现、特征读写、通知订阅和状态监听。
- 提供 MTU 协商、RSSI 读取、UTF-8 文本写入、Hex 写入、串行分包写入、多连接和受控自动重连。
- 提供
getCapabilities与getRuntimeState,用于在展示业务入口前判断能力并读取运行态快照。 - 保留
openBtBluetooth、startScanBle、connectBle等兼容别名,以及filterNames/fliterNames、scanComplete/scanComplate拼写兼容。 - Android 5.0+ 为真实实现;iOS、Harmony、Web、微信小程序与支付宝小程序保留类型一致的降级入口,核心 API 明确返回
9014001,不伪造成功。 - Android 12+ 需要蓝牙扫描与连接运行时权限;Android 11 及以下扫描可能需要位置权限。
- 包含 uni-app 与 uni-app x 最小示例、完整 API 文档、错误码、权限说明和上架前回归清单。
平台兼容性
uni-app(5.07)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | √ | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.07)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | × | × | × |
lizhao-ble
当前版本:1.0.0
lizhao-ble 是面向 uni-app / uni-app x 的 Android BLE Central UTS API 插件。它封装适配器、扫描、连接、服务/特征发现、读写、通知、MTU、RSSI、自动重连和分包写入,适合传感器、门锁、仪表、医疗外设与自定义蓝牙协议等业务。
功能特色
- Android BLE Central 完整链路:适配器、扫描、连接、服务发现、特征发现、读、写、通知和多连接。
- 常用链路增强:MTU 协商、RSSI 读取、UTF-8 文本写入、Hex 写入和串行分包写入。
- 连接策略可控:支持自动重连开关、最大尝试次数与重连间隔,不会无限重试。
- 运行状态可观测:
getCapabilities用于能力探测,getRuntimeState用于读取设备、连接和通知订阅快照。 - API 兼容性:保留常见方法别名,并兼容
filterNames/fliterNames、scanComplete/scanComplate两组拼写。 - 平台边界真实:Android 为实际实现;其他平台返回明确错误,不伪造扫描、连接或写入成功。
接入方式选择
| 场景 | 推荐方式 | 说明 |
|---|---|---|
| 标准 BLE 外设通信 | 规范 API | 依次打开适配器、扫描、连接、发现服务/特征,再读写或订阅通知 |
| 长指令或大数据写入 | writeBLECharacteristicValueChunked |
按 chunkSize 串行写入,上一包成功后才发送下一包 |
| 文本或十六进制协议 | writeBLECharacteristicValueByText / writeBLECharacteristicValueByHex |
业务侧无需手动转换 ArrayBuffer |
| 不稳定链路 | createBLEConnection 自动重连参数 |
设置有限次数和间隔,避免无限重试 |
| 多端项目 | getCapabilities |
展示 BLE 入口前先检查 supported 和具体能力字段 |
| 打印机专用协议 | 单独封装业务插件 | 本插件只提供通用 BLE Central,不包含厂商打印 SDK、排版或打印任务 |
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| uni-app Android | 支持 | Vue2、Vue3、app-vue、app-nvue;Android 5.0+ |
| uni-app x Android | 支持 | UVUE;Android 5.0+ |
| iOS | 不支持 | 保留类型一致的降级入口,核心 API 返回 9014001 |
| HarmonyOS | 不支持 | 保留类型一致的降级入口,核心 API 返回 9014001 |
| Web | 不支持 | 保留类型一致的降级入口,核心 API 返回 9014001 |
| 微信小程序 | 不支持 | 保留类型一致的降级入口,核心 API 返回 9014001 |
| 支付宝小程序 | 不支持 | 保留类型一致的降级入口,核心 API 返回 9014001 |
环境与安装
- HBuilderX 5.07+
- Android 5.0+(API 21+)
- 通过 HBuilderX 将插件导入项目的
uni_modules/lizhao-ble - 页面和其他插件只能从插件根目录导入,不要导入
utssdk内部文件
// 正确:从插件根目录导入。
import * as Ble from '@/uni_modules/lizhao-ble'
Android 调试必须使用包含本插件 Kotlin 混编代码、Manifest 权限和 UTS 生成物的自定义基座。标准基座或旧自定义基座不能承载新导入的原生代码。
权限准备
插件已在 AndroidManifest.xml 声明所需权限,但 Android 危险权限仍需业务应用在运行时向用户申请:
| 系统版本 | 运行时权限 | 用途 |
|---|---|---|
| Android 12+ | BLUETOOTH_SCAN |
扫描附近 BLE 设备 |
| Android 12+ | BLUETOOTH_CONNECT |
读取适配器状态、连接设备和 GATT 通信 |
| Android 6–11 | ACCESS_FINE_LOCATION |
系统对 BLE 扫描的兼容要求 |
请在调用扫描、连接等 API 前完成授权。插件检测到权限缺失时会进入 fail,返回 9014013,不会绕过系统授权。
现代 Android 版本通常不允许普通应用静默打开系统蓝牙。如果蓝牙关闭,请先引导用户在系统设置或系统授权界面中打开蓝牙,再调用插件 API。
最小可运行示例
uni-app(Vue2 / Vue3)
<script>
import * as Ble from '@/uni_modules/lizhao-ble'
export default {
onLoad() {
// 先注册监听,避免漏掉扫描开始后的首批设备。
Ble.onBluetoothDeviceFound((devices) => {
console.log('发现 BLE 设备', devices)
})
// 运行时权限应在此之前由业务应用完成申请。
Ble.openBluetoothAdapter({
success: () => {
Ble.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: (res) => {
console.log('扫描已启动', res)
},
fail: (err) => {
console.log('扫描失败', err)
}
})
},
fail: (err) => {
console.log('打开蓝牙适配器失败', err)
}
})
},
onUnload() {
// 页面销毁时停止扫描并清理监听,避免持续占用蓝牙资源。
Ble.stopBluetoothDevicesDiscovery({})
Ble.offBluetoothDeviceFound()
Ble.closeBluetoothAdapter({})
}
}
</script>
uni-app x(UVUE)
<script setup lang="uts">
import {
openBluetoothAdapter,
startBluetoothDevicesDiscovery,
onBluetoothDeviceFound,
offBluetoothDeviceFound,
stopBluetoothDevicesDiscovery
} from '@/uni_modules/lizhao-ble'
import type {
OpenBluetoothAdapterOptions,
StartBluetoothDevicesDiscoveryOptions,
StopBluetoothDevicesDiscoveryOptions
} from '@/uni_modules/lizhao-ble'
// 类型只从插件根目录导入,避免依赖插件内部文件结构。
class BleDemoOptions {
success?: (res: any) => void
fail?: (err: any) => void
complete?: (res: any) => void
allowDuplicatesKey?: boolean
}
onLoad(() => {
onBluetoothDeviceFound((devices) => {
console.log('发现 BLE 设备', devices)
})
const openOptions = new BleDemoOptions()
openOptions.success = (_res: any) => {
const scanOptions = new BleDemoOptions()
scanOptions.allowDuplicatesKey = false
scanOptions.fail = (err: any) => {
console.log('扫描失败', err)
}
startBluetoothDevicesDiscovery(scanOptions as StartBluetoothDevicesDiscoveryOptions)
}
openOptions.fail = (err: any) => {
console.log('打开蓝牙适配器失败', err)
}
openBluetoothAdapter(openOptions as OpenBluetoothAdapterOptions)
})
onUnload(() => {
const stopOptions = new BleDemoOptions()
stopBluetoothDevicesDiscovery(stopOptions as StopBluetoothDevicesDiscoveryOptions)
offBluetoothDeviceFound()
})
</script>
推荐调用顺序
- 申请当前 Android 版本所需的运行时权限。
- 注册
onBluetoothDeviceFound、onBLEConnectionStateChange等监听器。 - 调用
openBluetoothAdapter。 - 调用
startBluetoothDevicesDiscovery,拿到目标deviceId后停止扫描。 - 调用
createBLEConnection。 - 调用
getBLEDeviceServices与getBLEDeviceCharacteristics。 - 根据特征属性执行读取、写入或
notifyBLECharacteristicValueChange。 - 页面退出时关闭通知、断开连接、停止扫描并移除监听器。
常见增强示例
自动重连
import * as Ble from '@/uni_modules/lizhao-ble'
// 仅在非主动断开时尝试有限次数重连。
Ble.createBLEConnection({
deviceId: 'AA:BB:CC:DD:EE:FF',
timeout: 10000,
autoReconnect: true,
reconnectAttempts: 3,
reconnectInterval: 2000,
success(res) {
console.log('连接成功', res)
},
fail(err) {
console.log('连接失败', err)
}
})
MTU 与 RSSI
import * as Ble from '@/uni_modules/lizhao-ble'
// 实际 MTU 由 Android 系统和外设共同决定。
Ble.requestBLEMTU({
deviceId: 'AA:BB:CC:DD:EE:FF',
mtu: 185,
success(res) {
console.log('协商后的 MTU', res.mtu)
}
})
// RSSI 读取要求设备已经连接。
Ble.readBLEDeviceRSSI({
deviceId: 'AA:BB:CC:DD:EE:FF',
success(res) {
console.log('当前 RSSI', res.RSSI)
}
})
文本、Hex 与分包写入
import * as Ble from '@/uni_modules/lizhao-ble'
const target = {
deviceId: 'AA:BB:CC:DD:EE:FF',
serviceId: '0000fff0-0000-1000-8000-00805f9b34fb',
characteristicId: '0000fff2-0000-1000-8000-00805f9b34fb'
}
// UTF-8 文本写入。
Ble.writeBLECharacteristicValueByText({
...target,
text: 'ping'
})
// Hex 支持空格、冒号、短横线和 0x 前缀。
Ble.writeBLECharacteristicValueByHex({
...target,
hex: '70 69 6e 67'
})
// 长数据按 20 字节串行写入,每包间隔 20 ms。
Ble.writeBLECharacteristicValueChunked({
...target,
value: new TextEncoder().encode('long payload').buffer,
chunkSize: 20,
interval: 20
})
完整示例
- uni-app:
uni_modules/lizhao-ble/example/uniapp/ble.vue - uni-app x:
uni_modules/lizhao-ble/example/uniappx/index.uvue
示例页用于功能回归,不会替业务应用自动申请系统权限,也不会替代真实 BLE 外设验收。
API 列表
| 分类 | API |
|---|---|
| 适配器 | openBluetoothAdapter、closeBluetoothAdapter、getBluetoothAdapterState |
| 扫描 | startBluetoothDevicesDiscovery、stopBluetoothDevicesDiscovery、getBluetoothDevices、getConnectedBluetoothDevices |
| 扫描监听 | onBluetoothAdapterStateChange、offBluetoothAdapterStateChange、onBluetoothDeviceFound、offBluetoothDeviceFound |
| 连接 | createBLEConnection、closeBLEConnection、onBLEConnectionStateChange、offBLEConnectionStateChange |
| GATT | getBLEDeviceServices、getBLEDeviceCharacteristics、readBLECharacteristicValue、writeBLECharacteristicValue |
| 写入增强 | writeBLECharacteristicValueByText、writeBLECharacteristicValueByHex、writeBLECharacteristicValueChunked |
| 链路增强 | requestBLEMTU、readBLEDeviceRSSI |
| 通知 | notifyBLECharacteristicValueChange、onBLECharacteristicValueChange、offBLECharacteristicValueChange |
| 诊断 | getCapabilities、getRuntimeState |
通用回调参数
除 onXxx/offXxx 监听器外,异步 API 的 options 均支持以下回调:
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.success | function | 否 | 操作成功时触发一次 | 无 | 无 |
| options.fail | function | 否 | 操作失败时触发一次,参数为 BleFail |
无 | 无 |
| options.complete | function | 否 | success 或 fail 之后触发一次 | 无 | 无 |
适配器 API
openBluetoothAdapter(options)
说明
初始化 Android 蓝牙适配器。调用前应已获得权限并确保系统蓝牙可用。
支持平台
Android 5.0+;其他平台通过 fail 返回 9014001。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | OpenBluetoothAdapterOptions | 是 | 打开参数 | 无 | success / fail / complete |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| available | boolean | 系统蓝牙是否可用 |
closeBluetoothAdapter(options)
说明
停止扫描、关闭当前连接并释放插件维护的适配器状态。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | CloseBluetoothAdapterOptions | 是 | 关闭参数 | 无 | success / fail / complete |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| available | boolean | 关闭后的适配器可用状态 |
getBluetoothAdapterState(options)
说明
获取当前适配器和扫描状态。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | GetBluetoothAdapterStateOptions | 是 | 查询参数 | 无 | success / fail / complete |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| available | boolean | 系统蓝牙是否可用 |
| discovering | boolean | 当前是否正在扫描 |
扫描与设备 API
startBluetoothDevicesDiscovery(options)
说明
启动 BLE 扫描。名称筛选采用不区分大小写的包含匹配;服务 UUID 由 Android 扫描过滤器处理。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.services | Array<string> | 否 | 按广播服务 UUID 过滤 | [] |
UUID 字符串数组 |
| options.allowDuplicatesKey | boolean | 否 | 是否持续回调重复设备 | false |
true / false |
| options.filterNames | Array<string> | 否 | 按 name/localName 包含匹配 | [] |
名称关键字数组 |
| options.fliterNames | Array<string> | 否 | filterNames 的旧拼写兼容字段 |
[] |
名称关键字数组 |
| options.interval | number | 否 | 兼容字段,当前 Android 原生扫描不使用 | 0 |
无 |
| options.powerLevel | string | 否 | 兼容字段,当前 Android 固定低延迟扫描 | high |
low / medium / high |
| options.scanComplete | function | 否 | 停止扫描成功时触发 | 无 | 无 |
| options.scanComplate | function | 否 | scanComplete 的旧拼写兼容字段 |
无 | 无 |
| options.success | function | 否 | 扫描成功启动时触发 | 无 | 无 |
| options.fail | function | 否 | 扫描启动失败时触发 | 无 | 无 |
| options.complete | function | 否 | 启动结果完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| discovering | boolean | 是否已进入扫描状态 |
stopBluetoothDevicesDiscovery(options)
说明
停止当前扫描,并在成功后触发 scanComplete/scanComplate。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.scanComplete | function | 否 | 停止成功后触发 | 无 | 无 |
| options.scanComplate | function | 否 | 旧拼写兼容字段 | 无 | 无 |
| options.success | function | 否 | 停止成功时触发 | 无 | 无 |
| options.fail | function | 否 | 停止失败时触发 | 无 | 无 |
| options.complete | function | 否 | 停止结果完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| discovering | boolean | 停止成功后为 false |
getBluetoothDevices(options)
说明
返回插件本次运行期间已发现的设备列表。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | GetBluetoothDevicesOptions | 是 | 查询参数 | 无 | success / fail / complete |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| devices | Array<BleDevice> | 已发现设备列表 |
getConnectedBluetoothDevices(options)
说明
返回当前由插件维护的已连接设备列表。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.services | Array<string> | 否 | 兼容字段;当前 Android 返回插件维护的全部连接 | [] |
服务 UUID 数组 |
| options.success | function | 否 | 查询成功时触发 | 无 | 无 |
| options.fail | function | 否 | 查询失败时触发 | 无 | 无 |
| options.complete | function | 否 | 查询完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| devices | Array<BleDevice> | 已连接设备列表 |
连接 API
createBLEConnection(options)
说明
连接目标设备,并可配置受控自动重连。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 扫描结果中的设备 ID | 无 | 无 |
| options.timeout | number | 否 | 连接超时,单位 ms | 10000 |
大于 0 |
| options.autoReconnect | boolean | 否 | 非主动断开后是否自动重连 | false |
true / false |
| options.reconnectAttempts | number | 否 | 自动重连最大尝试次数 | 0 |
大于等于 0 |
| options.reconnectInterval | number | 否 | 重连间隔,单位 ms | 2000 |
大于等于 0 |
| options.success | function | 否 | 连接成功时触发 | 无 | 无 |
| options.fail | function | 否 | 连接失败或超时时触发 | 无 | 无 |
| options.complete | function | 否 | 连接结果完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| deviceId | string | 已连接设备 ID |
| connected | boolean | 连接成功时为 true |
closeBLEConnection(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 要断开的设备 ID | 无 | 无 |
| options.success | function | 否 | 断开成功时触发 | 无 | 无 |
| options.fail | function | 否 | 断开失败时触发 | 无 | 无 |
| options.complete | function | 否 | 断开结果完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| deviceId | string | 已断开设备 ID |
| connected | boolean | 断开成功时为 false |
服务与特征 API
getBLEDeviceServices(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.success | function | 否 | 服务发现成功时触发 | 无 | 无 |
| options.fail | function | 否 | 服务发现失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| services | Array<BleService> | 服务列表,包含 uuid/isPrimary |
getBLEDeviceCharacteristics(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.serviceId | string | 是 | 服务 UUID | 无 | 无 |
| options.success | function | 否 | 特征发现成功时触发 | 无 | 无 |
| options.fail | function | 否 | 特征发现失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| characteristics | Array<BleCharacteristic> | 特征列表及 read/write/notify 等属性 |
readBLECharacteristicValue(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.serviceId | string | 是 | 服务 UUID | 无 | 无 |
| options.characteristicId | string | 是 | 可读特征 UUID | 无 | 无 |
| options.success | function | 否 | 读取成功时触发 | 无 | 无 |
| options.fail | function | 否 | 读取失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| deviceId | string | 设备 ID |
| serviceId | string | 服务 UUID |
| characteristicId | string | 特征 UUID |
| value | ArrayBuffer | 读取到的原始字节 |
writeBLECharacteristicValue(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.serviceId | string | 是 | 服务 UUID | 无 | 无 |
| options.characteristicId | string | 是 | 可写特征 UUID | 无 | 无 |
| options.value | ArrayBuffer | 是 | 待写入原始字节 | 无 | 无 |
| options.writeNoResponse | boolean | 否 | 是否优先使用无响应写入 | false |
true / false |
| options.success | function | 否 | 写入成功时触发 | 无 | 无 |
| options.fail | function | 否 | 写入失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
写入增强 API
writeBLECharacteristicValueByText(options)
在 writeBLECharacteristicValue 的设备、服务、特征和回调参数基础上,使用以下字段:
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.text | string | 是 | 按 UTF-8 编码写入的文本 | 无 | 无 |
| options.writeNoResponse | boolean | 否 | 是否优先使用无响应写入 | false |
true / false |
writeBLECharacteristicValueByHex(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.hex | string | 是 | 十六进制文本 | 无 | 可包含空格、冒号、短横线、0x |
| options.writeNoResponse | boolean | 否 | 是否优先使用无响应写入 | false |
true / false |
writeBLECharacteristicValueChunked(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.serviceId | string | 是 | 服务 UUID | 无 | 无 |
| options.characteristicId | string | 是 | 可写特征 UUID | 无 | 无 |
| options.value | ArrayBuffer | 是 | 待分包数据 | 无 | 无 |
| options.chunkSize | number | 否 | 每包字节数 | 20 |
1-512 |
| options.interval | number | 否 | 包间隔,单位 ms | 0 |
大于等于 0 |
| options.writeNoResponse | boolean | 否 | 是否优先使用无响应写入 | false |
true / false |
| options.success | function | 否 | 全部分包写完后触发 | 无 | 无 |
| options.fail | function | 否 | 任一分包失败时触发 | 无 | 无 |
| options.complete | function | 否 | 整体操作结束时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| chunks | number | 实际成功写入的分包数量 |
链路增强 API
requestBLEMTU(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.mtu | number | 是 | 期望 MTU | 无 | 23-517 |
| options.success | function | 否 | 协商成功时触发 | 无 | 无 |
| options.fail | function | 否 | 协商失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| deviceId | string | 设备 ID |
| mtu | number | 系统和外设最终协商结果 |
readBLEDeviceRSSI(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.success | function | 否 | 读取成功时触发 | 无 | 无 |
| options.fail | function | 否 | 读取失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| deviceId | string | 设备 ID |
| RSSI | number | 当前接收信号强度 |
通知 API
notifyBLECharacteristicValueChange(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.deviceId | string | 是 | 已连接设备 ID | 无 | 无 |
| options.serviceId | string | 是 | 服务 UUID | 无 | 无 |
| options.characteristicId | string | 是 | notify/indicate 特征 UUID | 无 | 无 |
| options.state | boolean | 是 | true 开启,false 关闭 |
无 | true / false |
| options.success | function | 否 | 设置成功时触发 | 无 | 无 |
| options.fail | function | 否 | 设置失败时触发 | 无 | 无 |
| options.complete | function | 否 | 操作完成时触发 | 无 | 无 |
监听 API
监听器均持续有效,直到调用对应 offXxx。offXxx() 不传 listener 时清空该类全部监听器。
| API | listener 类型 | 事件参数 | 释放方式 |
|---|---|---|---|
onBluetoothAdapterStateChange(listener) |
(BleAdapterState) => void |
available/discovering |
offBluetoothAdapterStateChange(listener?) |
offBluetoothAdapterStateChange(listener?) |
可选 | 无 | 不传参数时清空全部适配器监听 |
onBluetoothDeviceFound(listener) |
(Array<BleDevice>) => void |
本批发现设备 | offBluetoothDeviceFound(listener?) |
offBluetoothDeviceFound(listener?) |
可选 | 无 | 不传参数时清空全部设备监听 |
onBLEConnectionStateChange(listener) |
(BleConnectionState) => void |
连接状态、时间、MTU | offBLEConnectionStateChange(listener?) |
offBLEConnectionStateChange(listener?) |
可选 | 无 | 不传参数时清空全部连接监听 |
onBLECharacteristicValueChange(listener) |
(BleCharacteristicValue) => void |
设备/服务/特征/value | offBLECharacteristicValueChange(listener?) |
offBLECharacteristicValueChange(listener?) |
可选 | 无 | 不传参数时清空全部特征监听 |
诊断 API
getCapabilities(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | GetCapabilitiesOptions | 是 | 能力查询参数 | 无 | success / fail / complete |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| supported | boolean | 当前设备是否具备 BLE Central 能力 |
| platform | string | 当前平台标识 |
| adapter | boolean | 适配器能力 |
| discovery | boolean | 扫描能力 |
| connection | boolean | 连接能力 |
| serviceDiscovery | boolean | 服务发现能力 |
| characteristicDiscovery | boolean | 特征发现能力 |
| read | boolean | 特征读取能力 |
| write | boolean | 特征写入能力 |
| notify | boolean | 通知订阅能力 |
| mtu | boolean | MTU 协商能力 |
| rssi | boolean | RSSI 读取能力 |
| chunkedWrite | boolean | 分包写入能力 |
| textWrite | boolean | 文本写入能力 |
| hexWrite | boolean | Hex 写入能力 |
| autoReconnect | boolean | 自动重连能力 |
| multiConnection | boolean | 多连接能力 |
| requiresCustomBase | boolean | App 调试是否需要自定义基座 |
| restrictedReason | string | 不支持时的原因 |
getRuntimeState(options)
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | GetRuntimeStateOptions | 是 | 运行态查询参数 | 无 | success / fail / complete |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| adapterState | BleAdapterState | 适配器与扫描状态 |
| knownDevices | Array<BleDevice> | 当前进程已发现设备 |
| connectedDeviceIds | Array<string> | 当前连接设备 ID |
| notificationSubscriptions | Array<BleNotifySubscription> | 当前通知订阅 |
| lastError | BleFail | null | 最近一次插件错误 |
| lastUpdatedAt | number | 最近更新时间戳 |
兼容别名
兼容别名与规范 API 参数、回调和平台边界完全相同。新项目建议使用规范 API。
| 兼容别名 | 规范 API |
|---|---|
openBtBluetooth |
openBluetoothAdapter |
closeBtBluetooth |
closeBluetoothAdapter |
startScanBle |
startBluetoothDevicesDiscovery |
stopScanBle |
stopBluetoothDevicesDiscovery |
onBluetoothFound |
onBluetoothDeviceFound |
offBluetoothFound |
offBluetoothDeviceFound |
connectBle |
createBLEConnection |
disconnectBle |
closeBLEConnection |
getConnectedBluetoothServices |
getBLEDeviceServices |
getConnectedBluetoothCharacteristics |
getBLEDeviceCharacteristics |
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9014001 | platform unsupported | 当前平台、设备能力或 App 上下文不支持 |
| 9014002 | invalid options | 必填参数缺失、MTU/Hex/分包参数非法 |
| 9014003 | bluetooth adapter unavailable | 系统蓝牙适配器不可用 |
| 9014004 | bluetooth adapter not opened | 尚未初始化或打开适配器 |
| 9014005 | start discovery failed | 启动扫描失败 |
| 9014006 | stop discovery failed | 停止扫描失败 |
| 9014007 | BLE connection failed | 连接、断开或重连失败 |
| 9014008 | BLE service not found | 服务发现失败或服务不存在 |
| 9014009 | BLE characteristic not found | 特征发现失败或特征不存在 |
| 9014010 | read characteristic failed | 特征值或 RSSI 读取失败 |
| 9014011 | write characteristic failed | 写入、分包写入或 MTU 协商失败 |
| 9014012 | notify characteristic failed | 通知订阅设置失败 |
| 9014013 | permission denied | Android 蓝牙或位置运行时权限不足 |
| 9014014 | operation timeout | BLE 操作超时 |
| 9014015 | system error | 系统蓝牙调用或适配器关闭失败 |
失败对象包含 errSubject='lizhao-ble'、errCode、errMsg 和可选 details/data。
自定义基座与发布
- 首次导入插件、升级插件原生代码或权限后,需要重新制作 Android 自定义基座。
- 仅更新 wgt/appResource 不能替换旧基座中已经编译的 UTS/Kotlin 原生代码。
- 正式发布 App 时,使用当前插件源码重新执行原生联编或云打包。
- 付费插件试用需要使用与当前 appid、包名匹配的自定义基座;旧工程或其他账号生成的基座不能作为当前试用证据。
注意事项
- BLE 外设协议并不统一;服务 UUID、特征 UUID、字节序、校验、分包和响应规则由具体设备协议决定。
chunkSize=20是兼容默认值。协商更大 MTU 后,仍应按外设实际可接受长度设置分包大小。writeNoResponse=true只适用于声明writeWithoutResponse的特征;不支持时应改用有响应写入。- 自动重连仅处理非主动断开;主动调用
closeBLEConnection或closeBluetoothAdapter会清理重连状态。 - 页面销毁时应停止扫描、关闭不再使用的通知和连接,并移除持续监听器。
- 自动编译不能替代 Android 真机与真实 BLE 外设验收。
作者系列 UTS 插件
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识与隐私策略 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-bg-audio |
背景音频、队列、倍速与事件 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成与听书方案 | 查看插件 |
lizhao-share-plus |
系统分享与远程文件分享 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-icon-pro |
SVG 图标、多主题与缓存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏与 AirPlay 路由入口 | 查看插件 |
lizhao-call-kit |
电话、短信与通讯录能力 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒与诊断 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器检测、风险评分与证据 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6485
赞赏 5
下载 12453335
赞赏 1935
赞赏
京公网安备:11010802035340号