如何在 Flutter 中与蓝牙连接和通信
Posted
技术标签:
【中文标题】如何在 Flutter 中与蓝牙连接和通信【英文标题】:How to connecting and communicating with Bluetooth in Flutter 【发布时间】:2020-11-01 10:07:31 【问题描述】:我一直在用 Flutter 搜索蓝牙 BLE 的使用,但似乎只有几个插件,而且它们有一些问题。我不想使用任何插件,因为我只需要读取 QR 码,获取 MAC 地址并让 Flutter 使用静态密码连接到隐藏的蓝牙设备。
1- 请求蓝牙权限:
在androidManifest.xml中:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
ios 在 Info.plist 中:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Need BLE permission</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Need BLE permission</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Need Location permission</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Need Location permission</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Need Location permission</string>
2- 设置蓝牙启用, 3- 检查蓝牙设备“$MACadress”是否可达, 4- 连接并发送一个 25 字节的十六进制数组。
是否有任何无插件的方式可以使用 Flutter 做到这一点?如果没有,那么我应该采用哪种方式?
【问题讨论】:
flutter_blue linkflutter_bluetooth_serial link 【参考方案1】:没有。没有插件的 Flutter 本身是非常有限的。没有内置蓝牙 API。
这就是使用任何“跨平台”应用程序制造商系统的缺点——它们通常缺乏所需的功能,这使得做“本地”的东西比开始使用“本地”应用程序更复杂。除非有人已经完成了艰苦的工作并编写了足够好的绑定
无论如何,在 iOS 上,您无法仅使用设备地址连接到 BLE 设备,因为 iOS 隐藏了地址。
【讨论】:
flutter_blue 插件仅支持 BLE 设备。 flutter_serial 插件只支持安卓,卡在这点了怎么办? 首先,iOS 不支持普通应用程序(非 mfi 认证)使用蓝牙经典。要回答你的问题“我应该怎么做” - 你还没有真正解释你想要实现的目标。您应该首先阅读不同平台的限制。如果你真的想用 Flutter 却找不到你喜欢的插件,那就自己写插件吧。以上是关于如何在 Flutter 中与蓝牙连接和通信的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 如何检查我的设备是不是通过蓝牙连接到另一台设备