kotlin 从健身追踪器获取数据

63lcw9qa  于 2023-06-24  发布在  Kotlin
关注(0)|答案(1)|浏览(118)

我正在Kotlin上开发移动的应用程序,我需要获取数据(例如:心率)从健身追踪器。但是我没有找到通用的API来完成这个任务。
我也知道,一些健身追踪器像Mi Band,华为手表有一个官方API,但我需要一个通用的方法.

wvt8vs2t

wvt8vs2t1#

你的问题不清楚。但要回答你所问的任何问题,你必须使用蓝牙库连接到设备(健身追踪器)。
健身追踪器等蓝牙设备通过服务传输数据。每个蓝牙设备都有自己的一套服务。每一项服务都具有多种特征。
1.连接到设备后,使用蓝牙库获取设备支持的服务列表。
每个服务都有UUID。您可以根据UUID检查您需要的服务。蓝牙有一个官方文档用于此目的。你可以参考这个:https://btprodspecificationrefs.blob.core.windows.net/assigned-numbers/Assigned%20Number%20Types/Assigned_Numbers.pdf
例如,如果您需要“心率”数据,则需要UUID为“0x180d”的服务。
1.找到所需的服务后(在本例中为“0x180d”),获取该服务中存在的特征列表。并在此链接上获得该服务的官方文档:https://www.bluetooth.com/specifications/specs/
进入链接,搜索所需的服务(在我们的示例中,“心率服务”,即“HRS”。请仔细阅读有关如何提取数据的文档。该文档具有其支持的特性列表和数据呈现的格式。检查您的设备支持的特性集并相应地工作。
对于心率,您正在查找的特征是“0x2a37”。您可以再次参考上述链接以实现此目的。
1.一旦你有了所需的特征,如果你必须随着时间的推移阅读数据或收听数据,请阅读该特征的文档。
例如,心率特征“0x2a37”,仅支持监听数据。您将获得的数据是一个整数列表。您需要将其解析为可读格式。为此目的,请参阅以下答复:https://stackoverflow.com/a/65458794/12555686
你有它,你需要遵循这些步骤,每次你需要数据的某个活动。
还有一件事,很多健身追踪器(MiBand,Firebolt等)使用自定义服务。例如,步骤数据必须通过“身体活动监测服务”(PAMS)进行通信,但MiBand没有这项服务。它通过其具有特征“0x0007”的自定义服务“0xfee0”传送有关步骤的数据。所以这将是一个棘手的工作。
为此,您可以参考一些GitHub存储库。到目前为止,我只知道一些GitHub仓库,它们是针对MiBand的。但我假设其他品牌也一定遵循类似的模式。
以下是一些项目的链接:

  1. https://github.com/creotiv/MiBand2/tree/master(python)
  2. https://github.com/dkhmelenko/miband-android/tree/master(Kotlin)
  3. https://github.com/simranss/my_fit(flutter)(这不仅适用于MiBand,也适用于每一个健身追踪器)
    霍普,这帮了大忙

相关问题