如何使用flutter_blue_plus通过UUID连接蓝牙设备?
使用flutter_blue_plus通过UUID连接蓝牙设备
可以的,flutter_blue_plus支持通过蓝牙设备的UUID发起连接,具体实现方式分两种场景:
场景1:扫描时通过服务UUID筛选设备
启动蓝牙扫描后,可在扫描结果中过滤出广播了目标服务UUID的设备,再发起连接:FlutterBluePlus.startScan(timeout: Duration(seconds: 4)); FlutterBluePlus.scanResults.listen((results) { for (ScanResult result in results) { // 匹配目标服务UUID,注意Android/iOS的UUID大小写差异 final targetUuid = "0000ffe0-0000-1000-8000-00805f9b34fb"; final isMatch = result.advertisementData.serviceUuids?.contains( Platform.isAndroid ? targetUuid.toUpperCase() : targetUuid ) ?? false; if (isMatch) { FlutterBluePlus.stopScan(); _connectToDevice(result.device); break; } } }); Future<void> _connectToDevice(Device device) async { try { await device.connect(); // 连接成功后可发现服务、读写特征值等 List<BluetoothService> services = await device.discoverServices(); } catch (e) { print("连接失败: $e"); } }场景2:已知设备UUID直接连接
若你已提前获取到设备的蓝牙标识UUID(格式通常为XX:XX:XX:XX:XX:XX),可直接通过ID创建设备实例并连接:Future<void> connectByDeviceUuid(String deviceUuid) async { try { Device targetDevice = await Device.fromId(deviceUuid); await targetDevice.connect(); // 后续操作:发现服务、交互特征值等 } catch (e) { print("连接异常: $e"); } }注意事项
- 需确保已配置对应平台的蓝牙权限:Android需申请
BLUETOOTH_SCAN、BLUETOOTH_CONNECT;iOS需在Info.plist中添加NSBluetoothAlwaysUsageDescription权限描述。 - 部分设备可能不广播服务UUID,这种情况下无法通过扫描筛选,只能提前保存设备UUID后直接发起连接。
- 需确保已配置对应平台的蓝牙权限:Android需申请
内容的提问来源于stack exchange,提问作者Adeeb K
相关产品推荐
相关产品推荐

