You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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后直接发起连接。

内容的提问来源于stack exchange,提问作者Adeeb K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:46:00