flutter_blue使用

本文介绍了FlutterBlue库在Flutter中进行蓝牙操作的详细流程,包括监测蓝牙状态、搜索设备、连接设备、发现服务、读写特征值及订阅等关键步骤,适用于开发蓝牙功能的Flutter应用。

优化后的版本(flutter_blue优化(FlutterBlue.instance.scan搜索重复、搜索结果处理、更新之前保存缓存数据、保存连接成功的设备)_echo_Ae的博客-优快云博客

使用流程:

1. 监听手机蓝牙状态(FlutterBlue.instance.state)

2.搜索周边蓝牙(FlutterBlue.instance.startScan(timeout: Duration(seconds: 2));)

3.监听搜索到的周边蓝牙(FlutterBlue.instance.scanResults)

4.停止搜索周边蓝牙(FlutterBlue.instance.stopScan();)

5.连接蓝牙(device.connect();)

6.获取服务id(device.discoverServices())

7.获取特征值(服务对象.characteristics)

8.开启订阅(特征值对象.setNotifyVa

`flutter_blue_plus` 是一个用于在 Flutter 应用中实现蓝牙低功耗(BLE)功能的插件。以下是使用 `flutter_blue_plus` 进行开发的相关信息: #### 1. 添加依赖 在 `pubspec.yaml` 文件中添加 `flutter_blue_plus` 依赖: ```yaml dependencies: flutter_blue_plus: ^1.6.1 ``` 然后运行 `flutter pub get` 来获取依赖。 #### 2. 权限配置 - **Android**:在 `android/app/src/main/AndroidManifest.xml` 中添加以下权限: ```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**:在 `ios/Runner/Info.plist` 中添加以下权限: ```xml <key>NSBluetoothAlwaysUsageDescription</key> <string>我们需要访问蓝牙来连接设备</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>我们需要访问蓝牙来连接设备</string> <key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>我们需要访问位置来扫描蓝牙设备</string> <key>NSLocationWhenInUseUsageDescription</key> <string>我们需要访问位置来扫描蓝牙设备</string> ``` #### 3. 导包和初始化 在 Dart 文件中导入 `flutter_blue_plus` 并初始化: ```dart import 'package:flutter_blue_plus/flutter_blue_plus.dart'; FlutterBluePlus flutterBlue = FlutterBluePlus.instance; ``` #### 4. 扫描设备 ```dart // 开始扫描 flutterBlue.startScan(timeout: Duration(seconds: 4)); // 监听扫描结果 flutterBlue.scanResults.listen((results) { for (ScanResult r in results) { print('发现设备: ${r.device.name} - ${r.device.id}'); } }); // 停止扫描 flutterBlue.stopScan(); ``` #### 5. 连接设备 ```dart BluetoothDevice device = ...; // 从扫描结果中获取的设备 device.connect(); // 监听连接状态 device.connectionState.listen((state) { if (state == BluetoothDeviceConnectionState.connected) { print('设备已连接'); } }); ``` #### 6. 发现服务和特征 ```dart // 发现服务 List<BluetoothService> services = await device.discoverServices(); services.forEach((service) { service.characteristics.forEach((characteristic) { print('发现特征: ${characteristic.uuid}'); }); }); ``` #### 7. 读写特征 ```dart // 读取特征值 List<int> value = await characteristic.read(); print('读取到的值: $value'); // 写入特征值 await characteristic.write([0x01, 0x02, 0x03]); ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值