flutter如何使用flutterblueplus搜索指定服务设备
在Flutter中,如何使用flutterblueplus库搜索指定服务的蓝牙设备?我已经尝试了基本的扫描方法,但不知道如何筛选特定UUID服务的设备。希望能提供示例代码说明如何设置服务UUID过滤条件,并在扫描结果中只显示符合要求的设备。
2 回复
使用FlutterBluePlus搜索指定服务设备的步骤:
- 初始化并启动扫描
- 设置扫描过滤器,指定目标服务UUID
- 监听扫描结果,筛选匹配设备
- 连接目标设备
示例代码:
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 搜索指定服务的设备,可以按照以下步骤操作:
-
添加依赖
在pubspec.yaml中添加:dependencies: flutter_blue_plus: ^1.30.0 -
权限配置
- 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>
- Android:在
-
扫描指定服务的设备
使用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(); } -
连接设备
获取到目标设备后,可进行连接:Future<void> connectToDevice(BluetoothDevice device) async { await device.connect(); print("已连接到设备: ${device.platformName}"); }
注意事项:
- 确保设备蓝牙已开启。
- 实际 UUID 需替换为目标服务的正确值。
- 扫描结束后及时调用
stopScan()节省电量。
通过以上步骤即可筛选出提供特定服务的 BLE 设备。

