Flutter_Blue 无法扫描我的设备。 (我的BT音箱)安卓

Posted

技术标签:

【中文标题】Flutter_Blue 无法扫描我的设备。 (我的BT音箱)安卓【英文标题】:Flutter_Blue can't scan my device. (My BT speaker) Android 【发布时间】:2021-04-28 12:21:25 【问题描述】:

我是 Flutter 的新手,我正在做一个需要蓝牙连接到我的硬件的项目。 据我所知,Flutter_Blue 是这样工作的:

    获取 Flutter_Blue 实例 使用scan() 开始扫描,同时挂接一个监听器来监听新设备。 (这将返回 ScanedDevice,然后将其添加到我的列表中。) 从我的列表中选择一个我想连接的设备,使用await device.connect() 连接成功后,使用device.discoverServices()发现其服务 for characteristics in service.characteristics 从该设备获取特征。 使用characteristic.read().listen((value)//do something with value);

我在第 2 阶段一直失败,即扫描设备。 我用scan() 找不到我的Bluetooth_Speaker,我尝试使用不同的扫描模式(低延迟、低能耗、平衡)。

我可以轻松找到不属于我的其他设备(但它们不知何故没有名称,所有 ID 都是唯一的)。 我曾尝试将朋友的手机用作我的应用程序进行扫描的设备,但仍然没有结果。

通过我的安卓蓝牙设置页面,我可以在扫描新设备页面中找到蓝牙音箱(也是我朋友的手机)。

请告诉我出了什么问题,我将非常感谢。谢谢。

环境:

索尼 XZ2(android 版本:9) Flutter 版本:2.0.5 飞镖版本:2.12.3 sdk: ">=2.7.0 flutter_blue:0.6.3+1 IDE:VSCode

编译方法:flutter run

查看回复后的经验教训:

    Bluetooth_Low_Energy(BLE) 无法发现/连接到经典蓝牙。也不是其他方式(经典 -> BLE)。

【问题讨论】:

我怀疑您的蓝牙扬声器是经典蓝牙,而 flutter_blue 仅适用于蓝牙低功耗 (BLE) 设备。也许使用play.google.com/store/apps/…之类的东西在第二部手机上创建一个BLE设备 我尝试了一个不同的设备,一个无线鼠标,它使用 LE 服务。而 Flutter_Blue 实际上可以扫描/发现鼠标。 你的应用的目标是什么?您不能使用 android 设置连接到您的扬声器并在您的应用程序中播放一些音乐,这些音乐将在远程扬声器上播放吗?还是您只是想了解 BLE 并使用您的扬声器进行测试? @Xia 感谢您提供的信息!我建议你使用不同的智能手机和应用程序 ukBaz 建议(或类似的东西)来测试你的应用程序与模拟 BLE 设备(在另一部手机上)。您只能找到正在做广告的 BLE 设备,没有特殊应用程序的 Android 智能手机通常不会做广告。 @Xia 这很奇怪,我可以在商店里找到它。您是否正在使用对 BLE 来说太旧的手机?一些应用程序将使用限制为特定功能...但这很奇怪,大多数当前设备都可以使用 BLE...您可以使用许多应用程序执行此操作,例如“nRF Connect”是扫描仪,也可以宣传外围设备。 【参考方案1】:

你可以试试flutterBlue.startScan(); 代替scan() 吗?

【讨论】:

当我查看源代码时,startScan() 似乎是 scan() 的Future 版本。两者都可以被listener 钩住。我已将我的听众连接到FlutterBlue.instance.scanResults,它可以同时收听scan()starScan()【参考方案2】:

蓝牙有两种

经典 低能耗 (LE)

Bluetooth_Low_Energy(BLE) 是一种提供较低能耗的技术,但要以较慢的传输速度为代价。 经典设备可以提供 24Mbps,而 Low_Energy 仅提供 1Mbps。

这两种蓝牙无法相互连接。

在这种情况下,Flutter 的 Flutter_Blue 库使用了 Low_Energy 服务,而蓝牙音箱作为 Classic 设备使用,这就是为什么 Flutter_Blue 无法扫描/发现音箱的原因。

【讨论】:

以上是关于Flutter_Blue 无法扫描我的设备。 (我的BT音箱)安卓的主要内容,如果未能解决你的问题,请参考以下文章

Flutter BLE应用的开发-flutter_blue

Flutter BLE应用的开发-flutter_blue

Flutter BLE应用的开发-flutter_blue

flutter_blue 打包发布bug

如何在 iOS 中使用 flutter_blue?

扫描并将 ios 应用程序连接到非 Apple 设备