介紹
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. |