首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取BLE广告数据-安卓scanRecord到Flutter Blue ScanResult

获取BLE广告数据-安卓scanRecord到Flutter Blue ScanResult
EN

Stack Overflow用户
提问于 2020-11-09 19:39:33
回答 1查看 365关注 0票数 0

我需要在Flutter中重建一个android应用程序,它将收听BLE广告数据包并解释数据。

现有的协议可以解释安卓的scanRecord,因为它是一个字节数组。

然而,在flutter中,我使用了flutter blue插件,它给出了BLE ScanResult作为一个地图。但我找不到一种方法来解释广告数据包,因为它看起来像一个整数列表。示例:{256:0,0,0,16,1,57,33,18,0,0,154,10,0}

谁能帮我把颤动蓝的ScanResult转换成类似于scanRecord格式的Android的bytearray,这样我就可以用现有的协议来解释数据了。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 04:38:27

Flutter Blue ScanResult以一种易于解释的形式嵌入了您需要的所有内容:

代码语言:javascript
复制
class ScanResult {
  final BluetoothDevice device;
  final AdvertisementData advertisementData;
  final int rssi;
}

您可以在BluetoothDevice对象中找到BLE、蓝牙名称和其他一些值。AdvertisementData甚至提供关于传输功率电平、设备是否可连接、设备实现什么BLE GATT服务UUID (serviceUuids)以及它具有什么服务数据与这些UUID (serviceData)相关的更多细节。

代码语言:javascript
复制
class AdvertisementData {
  final String localName;
  final int? txPowerLevel;
  final bool connectable;
  final Map<int, List<int>> manufacturerData;
  final Map<String, List<int>> serviceData;
  final List<String> serviceUuids;
}

这是有的,所以你不必担心终身性和所有的解码。它是由Protobuf对象在幕后完成的。示例应用程序演示了如何很好地格式化这些数据,比如UUID的十六进制输出。

这些由Protobuf协议栈创建的Dart类不适合访问原始字节数据,因此无法通过API获得。所以我猜你可能想要在你的Android代码中表达更高层次的逻辑,并真正考虑它的作用。您可能正在将Android迁移到Flutter?即使是Android也在ScanRecord中提供了更高级别的功能。如果您依赖于提供给您的解码数据,您将获得更好的可维护性和更好的兼容性代码。除非你正在处理一些非常专有的东西,但即使是这样的东西也必须遵守BLE协议,所以你应该会得到一个更好的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64750948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档