介绍
FlutterBlue是一款flutter对蓝牙插件,旨在提供来自两个平台(iOS和Android)的最大功能。
使用FlutterBlue实例,您可以扫描并连接到附近的设备(BluetoothDevice)。一旦连接到设备,BluetoothDevice对象就可以发现服务(BluetoothService),特征(BluetoothCharacteristic)和描述符(BluetoothDescriptor)。然后,BluetoothDevice对象用于直接与特征和描述符交互。
基本用法
生成实例
FlutterBlue flutterBlue = FlutterBlue.instance;
扫描设备操作
var scanSubscription = flutterBlue.scan().listen((scanResult) {
device = scanResult.device;
print('${device.name} found! rssi: ${scanResult.rssi}');
});
scanSubscription.cancel();
连接设备
await device.connect();
device.disconnect();
搜索设备
List<BluetoothService> services = await device.discoverServices();
services.forEach((service) {
});
读写特征值characteristics
相信有些小伙伴不太了解characteristics是干什么用的,BLE的基本关系是:
一个蓝牙4.0的终端device可以包含多个Service,
一个Service可以包含多个Characteristic,一个Characteristic包含一个Value和多个Descriptor,
一个Descriptor包含一个Value。
简单的说蓝牙设备正是通过Characteristic来进行设备间的交互的(如读、写、订阅等操作),
详细介绍可以参考 [https://www.jianshu.com/p/d991f0fdec63]
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List<int> value = await c.read();
print(value);
}
await c.write([0x12, 0x34])
读写描述符descriptors
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
List<int> value = await d.read();
print(value);
}
await d.write([0x12, 0x34])
设置通知和监听特征值characterisic的value变化
await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
});
常用API
FlutterBlue API
|
Android |
iOS |
Description |
| scan |
:white_check_mark: |
:white_check_mark: |
开始蓝牙低功耗设备的扫描 |
| state |
:white_check_mark: |
:white_check_mark: |
获取蓝牙适配器的当前状态 |
| onStateChanged |
:white_check_mark: |
:white_check_mark: |
蓝牙适配器的状态变化流 |
BluetoothDevice API
|
Android |
iOS |
Description |
| connect |
:white_check_mark: |
:white_check_mark: |
建立设备连接 |
| disconnect |
:white_check_mark: |
:white_check_mark: |
取消一个激活active的或者挂起pending的设备device连接 |
| discoverServices |
:white_check_mark: |
:white_check_mark: |
通过提供的远程设备device尽可能的搜索服务services,及它的特征值characteristics和描述符descriptors |
| services |
:white_check_mark: |
:white_check_mark: |
获取设备device列表,要求discoverServices()已经执行完成. |
| state |
:white_check_mark: |
:white_check_mark: |
获取设备的当前状态. |
| onStateChanged |
:white_check_mark: |
:white_check_mark: |
监听设备状态改变的回调 |
BluetoothCharacteristic API
|
Android |
iOS |
Description |
| read |
:white_check_mark: |
:white_check_mark: |
检索特征值characteristic的value |
| write |
:white_check_mark: |
:white_check_mark: |
写入修改特征值characteristic的value. |
| setNotifyValue |
:white_check_mark: |
:white_check_mark: |
设置特征值characteristic的通知和指示. |
| value |
:white_check_mark: |
:white_check_mark: |
当发生改变时,特征值characteristic的value流. |
BluetoothDescriptor API
|
Android |
iOS |
Description |
| read |
:white_check_mark: |
:white_check_mark: |
检索描述符descriptor的value. |
| write |
:white_check_mark: |
:white_check_mark: |
写入修改描述符descriptor的value. |