uniapp BLE低功耗蓝牙插件 支持安卓 iOS 鸿蒙NEXT 微信小程序

xl-ble插件

概述

本SDK提供了一套完整的蓝牙低功耗(BLE)设备交互接口,采用模块化设计,将功能接口与回调监听分离,便于开发者灵活使用。

  • 支持蓝牙扫描、连接、断开;

  • 支持字节数据、字符串数据写入;

  • 蓝牙状态监听、连接状态监听、数据回传监听、数据写入是否完成监听;

  • 支持GBK编码;

导入

javascript 复制代码
import * as ble from '@/uni_modules/xl-ble';

功能接口说明

扫描设备

javascript 复制代码
// callback: 发现设备回调
ble.startScan((device) => {
  console.log(`发现设备: ${JSON.stringify(device)}`);
});

停止扫描

javascript 复制代码
ble.stopScan();

连接设备

javascript 复制代码
// 参数1: 设备id
// 参数2(可选):指定服务与特征,未指定内部会自动匹配
ble.connect(
  deviceId,
  // {
  // 	seviceUuid: '0000ff00-0000-1000-8000-00805f9b34fb',
  // 	writeUuid: '0000ff02-0000-1000-8000-00805f9b34fb',
  // 	notifyUuid: '0000ff01-0000-1000-8000-00805f9b34fb'
  // },
)

断开设备

javascript 复制代码
ble.disconnect()

写入数据

  • 写入字节数组

    javascript 复制代码
    // 参数为字节数组,需设备支持的指令,这点很重要
    ble.writeBytes([0x10, 0xff, 0x30])
  • 写入字符串

    javascript 复制代码
    // 参数1: 字符串内容,传的字符串需设备支持的指令,这点很重要
    // 参数2(可选): 字符串编码, 默认 "UTF_8" 编码, 传 "GBK" 使用GBK编码
    ble.writeString('ABC')
    ble.writeString('ABC', 'GBK')

设置MTU分包大小

javascript 复制代码
ble.setMtu(100)

蓝牙事件监听

蓝牙状态监听
javascript 复制代码
ble.onBluetoothStatusChanged((isOn) => {
  uni.showToast({
    title: isOn ? "蓝牙已开启" : "蓝牙已关闭",
    icon: 'none'
  });
});
蓝牙连接状态监听
javascript 复制代码
ble.onConnectionStateChange((connectionState) => {
  uni.showToast({
    title: connectionState.msg,
    icon: 'none'
  })
  switch (connectionState.state) {
    case 'connectFail':
				// 连接失败
      break;
    case 'disconnected':
				// 断开连接
      break;
    case 'connected':
      // 断开成功
      break;
  }
});
蓝牙数据回传监听
javascript 复制代码
ble.onDataReceived((data) => {
  let result = String.fromCharCode(...data);
  console.log(`收到蓝牙数据: ${data}`)
  console.log(`收到蓝牙数据转字符串: ${result}`);
});
数据写入是否完成监听
javascript 复制代码
ble.onWriteComplete((isComplete) => {
  console.log(isComplete ? "写入完成" : "写入失败");
})

蓝牙权限

  • 安卓

    html 复制代码
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
  • iOS

    html 复制代码
    <key>NSBluetoothAlwaysUsageDescription</key>
    <string>开启蓝牙</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>蓝牙</string>
    <key>UIBackgroundModes</key>
    <array>
        <string>bluetooth-central</string>
    </array>

类型定义

设备信息

typescript 复制代码
interface BLEDevice {
  name: string       // 设备名称
  deviceId: string   // 设备唯一标识
  rssi: number       // 信号强度
}

连接配置

typescript 复制代码
interface ConnectOptions {
  serviceUuid: string   // 主服务UUID
  writeUuid: string     // 写入特征UUID
  notifyUuid: string    // 通知特征UUID
  autoConnect?: boolean // 是否自动重连
}

服务信息

typescript 复制代码
interface ServiceAndCharacteristics {
  service: string         // 服务UUID
  characteristics: string[] // 特征值列表
}

连接状态

typescript 复制代码
type ConnectionState = {
  status: 'connected' | 'disconnected' | 'failed'
  message?: string
}
相关推荐
andr_gale1 天前
02_uniapp自定义上凸效果的底部TabBar
前端·javascript·uni-app·移动端
不爱说话郭德纲1 天前
uni-app x iOS 扫码模糊怎么办?AVFoundation 灰尘级别摄像头助你超广角聚焦
前端·uni-app·app
byte轻骑兵1 天前
【BlueZ 】核心设计理念:模块化 + DBus 通信的底层逻辑
linux·蓝牙·bluez·电脑蓝牙·嵌入式蓝牙
CHB2 天前
uni-app x 蒸汽模式 性能测试基准报告 Benchmark【Android版】
android·ios·uni-app
游戏开发爱好者84 天前
系统状态:专为iPhone和iPad设计的实时系统性能监控工具全面介绍
android·ios·小程序·uni-app·iphone·webview·ipad
2501_915909064 天前
全面解析iOS应用上架到App Store的完整流程与关键注意事项
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915106324 天前
iOS 证书类型及作用说明 账号证书与签名配置的完整解读
android·ios·小程序·https·uni-app·iphone·webview
2501_916008895 天前
移动安全之 APP 加固,保障移动应用安全的重要手段
安全·macos·ios·小程序·uni-app·iphone·xcode
2501_915106325 天前
Python爬虫从零开始:七天掌握HTTP协议、数据解析与反爬策略
android·ios·小程序·https·uni-app·iphone·webview
90后的晨仔5 天前
uni-app 项目目录结构全解:每个文件、每个文件夹的作用与配置详解
vue.js·uni-app