представлять
FlutterBlue — это плагин для передачи данных по bluetooth, разработанный для обеспечения максимальной функциональности на обеих платформах (iOS и Android).
Используя экземпляр FlutterBlue, вы можете сканировать и подключаться к ближайшему устройству (BluetoothDevice). После подключения к устройству объект BluetoothDevice может обнаруживать службы (BluetoothService), характеристики (BluetoothCharacteristic) и дескрипторы (BluetoothDescriptor). Затем объект BluetoothDevice используется для непосредственного взаимодействия с функциями и дескрипторами.
Основное использование
Создать экземпляр
FlutterBlue flutterBlue = FlutterBlue.instance;
Работа устройства сканирования
/// 使用实例方法scan(),并使用listen()监听,scanResult做参数
var scanSubscription = flutterBlue.scan().listen((scanResult) {
// do something with scan result
device = scanResult.device;
print('${device.name} found! rssi: ${scanResult.rssi}');
});
/// 关闭扫描操作,避免内存泄漏
scanSubscription.cancel();
Подключить устройство
/// Connect to the device 这是一个异步操作
await device.connect();
/// Disconnect from device
device.disconnect();
поисковое устройство
//异步搜索方法,返回BluetoothService对列表
List<BluetoothService> services = await device.discoverServices();
//遍历蓝牙设备对列表
services.forEach((service) {
// do something with service
});
Чтение и запись характеристик собственных значений
相信有些小伙伴不太了解characteristics是干什么用的,BLE的基本关系是:
一个蓝牙4.0的终端device可以包含多个Service,
一个Service可以包含多个Characteristic,一个Characteristic包含一个Value和多个Descriptor,
一个Descriptor包含一个Value。
简单的说蓝牙设备正是通过Characteristic来进行设备间的交互的(如读、写、订阅等操作),
详细介绍可以参考 [https://www.jianshu.com/p/d991f0fdec63]
// 通过设备读取所有特征值characteristics,返回列表
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List<int> value = await c.read();
print(value);
}
// 异步方法,向一个特征值characteristic写入数据
await c.write([0x12, 0x34])
Чтение и запись дескрипторов
// 通过特征值读取所有描述符descriptors,返回列表
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
List<int> value = await d.read();
print(value);
}
// 异步方法,向一个特征值descriptors写入数据
await d.write([0x12, 0x34])
Установите уведомление и отслеживайте изменение значения характеристики значения характеристики
await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
// do something with new value
});
Общий API
FlutterBlue API
|
Android |
iOS |
Description |
scan |
:white_check_mark: |
:white_check_mark: |
Начать поиск устройств Bluetooth с низким энергопотреблением |
state |
:white_check_mark: |
:white_check_mark: |
Получить текущее состояние адаптера Bluetooth |
onStateChanged |
:white_check_mark: |
:white_check_mark: |
Поток изменения состояния адаптера Bluetooth |
BluetoothDevice API
|
Android |
iOS |
Description |
connect |
:white_check_mark: |
:white_check_mark: |
Установить соединение с устройством |
disconnect |
:white_check_mark: |
:white_check_mark: |
Отменить активное или ожидающее подключение устройства к устройству |
discoverServices |
:white_check_mark: |
:white_check_mark: |
Максимально ищите сервисы через предоставленное удаленное устройство устройства, а также его значения характеристик и дескрипторы. |
services |
:white_check_mark: |
:white_check_mark: |
Получите список устройств устройств и потребуйте, чтобы было выполнено discoveryServices(). |
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: |
Получить значение характеристики значения характеристики |
write |
:white_check_mark: |
:white_check_mark: |
Записывает значение, которое изменяет характеристику значения характеристики. |
setNotifyValue |
:white_check_mark: |
:white_check_mark: |
Установите уведомление и индикацию характеристики значения характеристики. |
value |
:white_check_mark: |
:white_check_mark: |
При изменении изменяется поток значений характеристики. |
BluetoothDescriptor API
|
Android |
iOS |
Description |
read |
:white_check_mark: |
:white_check_mark: |
Получить значение дескриптора. |
write |
:white_check_mark: |
:white_check_mark: |
Записывает значение модифицированного дескриптора descriptor. |