我目前正在开发一个需要连接蓝牙设备的 Flutter 应用程序。我正在使用 flutter_blue 包来处理连接。
我的问题是我无法在应用程序中显示某些蓝牙设备的名称。我注意到只显示电视的名称,而不显示其他设备的名称。我的主要目标是连接到 ESP32 微控制器。
这是我已经尝试过的:
-我检查了我的手机是否可以在应用程序之外检测到这些蓝牙设备。 - 我查阅了flutter_blue包的文档并在论坛上搜索了类似的问题,但没有找到解决方案。 -我验证了AndroidManifest.xml文件中的蓝牙权限。 -我预计所有检测到的蓝牙设备都会列出其名称。但是,有些设备不可见。
对于解决在我的 Flutter 应用程序中显示蓝牙设备名称的问题,您有什么建议吗?
非常感谢您的帮助!
蓝牙 LE 设备可以(但不是必须)在广告 PDU 中传输其名称。如果没有可用的名称,可以使用设备的 MAC 地址来代替。
有几种可能性,您可能需要重新启动设备,您可能需要将设备置于“发现模式”,您的手机可能已经自动连接,另一个应用程序可能已经连接到您的手机,可能已经连接到你的设备 尝试查看已连接的设备:
代码示例:
//Search already connected devices, including devices
// connected to other apps
List<BluetoothDevice> system = await
FlutterBluePlus.connectedSystemDevices;
for (var d in system) {
print('${r.device.localName} already connected to! ${r.device.remoteId}');
if (d.localName == "myBleDevice") {
await r.connect(); // must connect our app
}
}
。也许您的扫描过滤器是错误的。 尝试删除所有扫描过滤器,为了让 withServices 工作,您的设备必须主动通告它支持的 serviceUUID。