flutter之玩转蓝牙插件flutter_blue 0.6.0+1-第一篇

介绍

FlutterBlue是一款flutter对蓝牙插件,旨在提供来自两个平台(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 services = await device.discoverServices();
    //遍历蓝牙设备对列表
services.forEach((service) {
    // do something with service
});
复制代码

读写特征值characteristics

   相信有些小伙伴不太了解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

// 通过特征值读取所有描述符descriptors,返回列表
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
    List<int> value = await d.read();
    print(value);
}

// 异步方法,向一个特征值descriptors写入数据
await d.write([0x12, 0x34])
复制代码

设置通知和监听特征值characterisic的value变化

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: 开始蓝牙低功耗设备的扫描
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.

转载于:https://juejin.im/post/5d3167caf265da1b6b1d0f32

你可能感兴趣的:(flutter之玩转蓝牙插件flutter_blue 0.6.0+1-第一篇)