flutter - 伙计们关于如何在 Flutter(Android)中获取 BluetoothDevice 的硬件地址的任何想法。我正在使用 FlutterBlue
问题描述
我正在尝试获取当前设备的蓝牙地址,该地址应该在我运行蓝牙扫描时显示为其他设备的 ID。知道我该怎么做吗?
解决方案
我不太明白您是要使用 FlutterBlue 查找要连接的蓝牙设备,还是希望您的设备可以访问。
因此,让我们讨论这两种选择。
查找其他设备
使用 FlutterBlue,您可以查找设备并连接到它们,因此假设它们是可访问的,您需要首先实例化您的 FlutterBlue,然后扫描设备:
FlutterBlue flutterBlue = FlutterBlue.instance;
flutterBlue.startScan(timeout: Duration(seconds: 4));
此扫描方法将创建一个类似流的对象,您需要订阅该对象才能获得结果:
var subscription = flutterBlue.scanResults.listen((results) {
// do something with scan results
for (ScanResult r in results) {
print('${r.device.name} found! rssi: ${r.rssi}');
}
});
// You could stop the scan as well, after finding what you need or just got every device on the list
flutterBlue.stopScan();
为什么我要查找的设备无法访问?
这有两个可能的原因:
- 该设备没有暴露其蓝牙连接,因此其他设备无法访问它。您需要打开蓝牙,并确保它允许可达性(这是操作系统配置,在设备设置上)
- FlutterBlue 只返回未连接的设备,因此如果您已经连接到设备,那么您将不会在扫描时获得名称。
让我的设备可被发现
根据我的经验,FlutterBlue 不支持更改蓝牙状态,或更改设备对其他设备的可发现性。我建议寻找替代解决方案。
对包进行快速搜索,我发现这个可能有效,但我还没有测试可以肯定地告诉你: https ://pub.dev/documentation/flutter_bluetooth_serial/latest/
额外:查找我的设备 ID
如果你想找到你的设备 ID,这个库device_info
可以提供帮助。检查此线程以获取有关实施的完整概述:
https ://stackoverflow.com/a/49187284/10642035
推荐阅读
- r - 如何使用 tidyverse 应用函数列表并为每个应用的函数取回一列
- mysql - ODBC MYSQL 连接 - 从何处获取 odbc 错误消息
- python - 为什么我在安装 pygame 时会出错?
- javascript - 如何检测圆形和矩形之间的碰撞?
- filebeat - Graylog 的 Linux filebeat 输入收集器
- javascript - 如何遍历 JavaScript 内置对象的属性?
- matlab - 在 Matlab 上计算信号时出错
- ios - 在 ScrollView 中切换 VStack 的饱和度 - SwiftUI
- excel - 在 Excel 错误 614 中无法通过 VBA 连接到 SAP
- docker - Docker Swarm 的变革领导者