Android 在自定义应用程序中从可穿戴设备获取数据

Android 在自定义应用程序中从可穿戴设备获取数据,android,android-sensors,huawei-mobile-services,wearables,Android,Android Sensors,Huawei Mobile Services,Wearables,我计划创建一个健身android应用程序。除此之外,我希望与可穿戴设备进行一些集成。我手边的设备是荣誉4级(华为)。 我还没有找到任何关于如何解决这个问题以及是否可能的明确解释 我的第一个想法是定期从HuaweiHealth应用程序中获取数据并将其导入我的应用程序中。但华威健康应用程序似乎对其他应用程序不太友好,因为我还没有看到访问这些数据的方法 我遇到的另一件事是Android传感器API: 我能用这个从我的荣誉乐队那里得到数据吗?我假设这只能得到原始数据,我必须处理所有逻辑才能得到准确的计步

我计划创建一个健身android应用程序。除此之外,我希望与可穿戴设备进行一些集成。我手边的设备是荣誉4级(华为)。 我还没有找到任何关于如何解决这个问题以及是否可能的明确解释

我的第一个想法是定期从HuaweiHealth应用程序中获取数据并将其导入我的应用程序中。但华威健康应用程序似乎对其他应用程序不太友好,因为我还没有看到访问这些数据的方法

我遇到的另一件事是Android传感器API: 我能用这个从我的荣誉乐队那里得到数据吗?我假设这只能得到原始数据,我必须处理所有逻辑才能得到准确的计步器、心率计等


任何输入都将不胜感激。

我对Google Fit了解不多,因此使用该应用程序与手表交互可能更容易。但是,我将解释过去在类似场景中如何处理蓝牙通信

该设备使用协议
蓝牙低能量
进行数据传输。首先,您应该阅读协议工作原理的一般说明。一个好的开始将是最好的

您需要知道的最重要的事情是协议中提供的软件模型:每个设备都公开一个
通用属性配置文件(GATT)
。在我看来,GATT只是一个API:它说明了设备“提供”了什么数据以及如何从客户端使用这些数据。您应该熟悉以下术语:

  • 特性:它是在客户端和服务器之间传输的数据值。例如,设备的当前电池电压
  • 服务:一组相关特征,它们一起工作以执行特定功能。例如,健康温度计服务包括温度测量值和测量时间间隔的特征
  • 描述符:描述符提供有关特征的附加信息。例如,温度值特性可能会显示其单位(例如摄氏度)以及传感器可以测量的最大值和最小值。描述符是可选的,每个特征可以有任意数量的描述符
  • Bluetooth SIG指定了常见服务和特性的完整列表,以及如何与之交互。同样,所有这些信息都在他们的网站上

    因此,在开始编写与手表交互的代码之前,您需要做的是找出设备公开了哪些服务和特性。理想的情况是,当你买手表的时候,手表附带的说明书上写了一些关于它的东西。。。但不幸的是,情况可能并非如此

    因此,你必须自己去弄清楚。你可以做的第一件事是下载一个应用程序,让你连接到一个BLE设备,并浏览它的GATT档案。我推荐。使用它,您可以连接到手表并找出设备公开的特性和服务。然后,你去阅读Bluetooth SIG网站上的规范,你就有了开始编写代码所需的一切

    然而,BLE设备的制造商不限于蓝牙SIG定义的服务和特性。他们可以创建并实现自己的。在下图中,我连接到一个数字秤。正如您所见,它有许多“标准”服务(用户索引、身体组成、电池服务等),但被一个红方块包围,您可以看到一个没有名字的具有五个特征的服务

    由于蓝牙SIG没有定义该服务,因此您需要进行一些反向工程(这可能非常困难和令人沮丧),以了解这些特征的含义以及如何使用它们

    我所做的就是下载该设备的官方应用程序,我启用了,并开始以尽可能多的不同方式与该设备交互。之后,我打开蓝牙日志,分析蓝牙数据包传输,试图推断如何处理这些设备特定的特性

    最后,一旦您了解了蓝牙GATT服务器在设备中的工作方式,您就可以编写自己的应用程序与之交互了。我强烈建议您使用一个库来实现通信,否则您将非常困难。我见过并使用过的最好的一个是(他们有针对不同平台的库的其他版本)


    这是一个漫长的过程,我在这里写的只是一些一般性的信息,所以你有一个出发点。

    实际上是在看同样的回答。。。感谢@dglozano到目前为止的解释。 我的华为三级职业选手也给了我一些痛苦。。。 但是,在仔细研究之后,我发现了两个有趣的点:

  • 在关闭华为健康应用程序后,您可以通过LightBlue Explorer连接设备

  • 在Android上安装PCAP Remote并运行之后,我可以在Linux最佳发行版上使用Wireshark嗅探软件包

    $sshuser@192.168.1.13-p 15432'pcapremote'>华为.pcap

    在那之后,我运行wireshark,打开文件,刷新,然后把头撞到墙上,因为我觉得迷路了


  • 祝你好运

    我发现的问题是,连接荣誉带4的唯一方法是通过华为健康应用程序,因为它在蓝牙设备列表中找不到。这意味着我无法使用LightBlue Explorer检查它。这里可以找到一些关于这方面的信息:考虑到这一点,我想获取数据的唯一方法是从华为应用程序导出数据,但我不知道这是否可以实现。其他应用程序是如何处理这一问题的?@Mita_uuu嗯,我已经对华为健康应用程序和it进行了快速研究