flutter如何使用flutterblueplus搜索指定服务设备

在Flutter中,如何使用flutterblueplus库搜索指定服务的蓝牙设备?我已经尝试了基本的扫描方法,但不知道如何筛选特定UUID服务的设备。希望能提供示例代码说明如何设置服务UUID过滤条件,并在扫描结果中只显示符合要求的设备。

2 回复

使用FlutterBluePlus搜索指定服务设备的步骤:

  1. 初始化并启动扫描
  2. 设置扫描过滤器,指定目标服务UUID
  3. 监听扫描结果,筛选匹配设备
  4. 连接目标设备

示例代码:

flutterBluePlus.scanResults.listen((results) {
  for (var result in results) {
    if (result.advertisementData.serviceUuids
        .contains(目标服务UUID)) {
      // 找到目标设备
    }
  }
});

更多关于flutter如何使用flutterblueplus搜索指定服务设备的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 flutter_blue_plus 搜索指定服务的设备,可以按照以下步骤操作:

  1. 添加依赖
    pubspec.yaml 中添加:

    dependencies:
      flutter_blue_plus: ^1.30.0
    
  2. 权限配置

    • Android:在 AndroidManifest.xml 中添加蓝牙权限:
      <uses-permission android:name="android.permission.BLUETOOTH" />
      <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      
    • iOS:在 Info.plist 中添加:
      <key>NSBluetoothAlwaysUsageDescription</key>
      <string>需要蓝牙权限以扫描设备</string>
      
  3. 扫描指定服务的设备
    使用 scan 方法并传入目标服务的 UUID(例如 0000180d-0000-1000-8000-00805f9b34fb):

    import 'package:flutter_blue_plus/flutter_blue_plus.dart';
    
    // 开始扫描
    void startScan() {
      FlutterBluePlus.startScan(
        timeout: const Duration(seconds: 10),
        withServices: [Guid("0000180d-0000-1000-8000-00805f9b34fb")], // 替换为目标服务 UUID
      );
    
      // 监听扫描结果
      FlutterBluePlus.scanResults.listen((results) {
        for (ScanResult result in results) {
          if (result.device.platformName.isNotEmpty) {
            print("发现设备: ${result.device.platformName}, RSSI: ${result.rssi}");
          }
        }
      });
    }
    
    // 停止扫描
    void stopScan() {
      FlutterBluePlus.stopScan();
    }
    
  4. 连接设备
    获取到目标设备后,可进行连接:

    Future<void> connectToDevice(BluetoothDevice device) async {
      await device.connect();
      print("已连接到设备: ${device.platformName}");
    }
    

注意事项

  • 确保设备蓝牙已开启。
  • 实际 UUID 需替换为目标服务的正确值。
  • 扫描结束后及时调用 stopScan() 节省电量。

通过以上步骤即可筛选出提供特定服务的 BLE 设备。

回到顶部