iOS Swift无需配对即可将基本心率数据视为广播消息

问题描述

我当时正在实施一个iOS演示应用程序,以从Polar,Wahoo之类的HR监视器读取数据。我发现并连接/配对了设备,并通过多个同时的蓝牙连接成功获取了数据。

现在我的要求是从更多BLE设备(数量超过20个)中收集数据。我尝试使用快速BLE API,但未/未配对之前无法提供心率数据。此外,蓝牙无法(似乎)在此同时连接数量下工作。有人建议我这样做:

”如果您只对基本心率数据感兴趣,即每分钟心跳数 那么我假设您可能能够处理40个单位,而不必 实际与单位联系。收听广播消息就足够了 因为广播消息包括每个设备的每分钟节拍值。”

这意味着我无需配对设备即可从广播消息中获取基本心率数据。我的查询

Q1:我能否真正获得基本的心率数据而无需配对(仅通过发现)?

Q2:本机BLE API是否支持功能

Q3:是否可以通过任何方法/ API / SDK /示例来实现此目的?

Q4:如果我每秒钟获取数据会更好。

Q5:我可以从HealthKit那里获得任何帮助吗?

----------------更新1 ----------------

当我发现使用BLE设备时

func centralManager(_ central: CBCentralManager,diddiscover peripheral: CBPeripheral,advertisementData: [String : Any],RSSi RSSI: NSNumber) { }

我发现kCBAdvDataManufacturerData数组具有6个值。

我点击了此链接,从Polar H10设备Extract data from kCBAdvDataManufacturerData on Swift

的kCBAdvDataManufacturerData密钥中提取HR数据。

但是我失败了,如何实现呢?

----------------更新2 ----------------

最终找到了解决方案,如果有人需要,请点击此链接

https://github.com/polarofficial/polar-ble-sdk/issues/103

谢谢。

解决方法

您的朋友指的广播消息是广告数据,该数据非常有限(31 bytes),这还取决于您是否可以控制蓝牙设备中的固件。

A1:如果硬件在广告数据中提供了该信息,则有可能

A2:是的,您可以通过CBCentralManager的delegate method

获取广告数据

A3:如果您已实现BLE连接到一台设备,则可能已经知道如何使用CBCentralManager,但是如果需要链接,这里是CoreBluetooth tutorial

A4:我认为您无法控制发现某个外围设备的频率

A5:我从来没有使用过HealthKit,所以我无法回答

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...