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

时间:2019-05-23 15:39:39

标签: android android-sensors huawei wearables

我打算创建一个健身android应用程序。除其他事项外,我希望与可穿戴设备进行一些集成。我现在拥有的设备是Honor Band 4(Huawei)。 对于如何解决这个问题,甚至可能的话,我还没有任何明确的解释。

我的第一个想法是定期从HuaweiHealth应用程序获取数据并将其导入到我的矿山中。但似乎HuaweiHuaweiHealth应用程序与其他应用程序不能很好地协作,因为我还没有一种访问此数据的方法。

我遇到的另一件事是Android Sensors API: https://developers.google.com/fit/android/ble-sensors 我可以使用它来获取荣誉乐队的数据吗?我认为这只会得到我的原始数据,并且我必须处理所有逻辑才能获得准确的计步器,心率计等。

任何输入将不胜感激。

2 个答案:

答案 0 :(得分:1)

我对Google Fit不太了解,因此使用它与手表互动可能会更容易。但是,我将说明过去在类似情况下如何处理蓝牙通信

设备使用协议Bluetooth Low Energy进行数据传输。首先,您应该阅读该协议如何工作的一般描述。 Bluetooth SIG website是一个好的开始。

您需要了解的最重要的事情是软件模型的方式。每个设备公开一个Generic Attribute Profile (GATT)。从我的角度来看,它类似于API。它说明设备“提供”哪些数据以及如何使用它。关贸总协定具有以下术语:

  1. 特征:客户端和服务器之间传输的数据值,例如当前电池电压。
  2. 服务:相关特征的集合,这些特征共同运行以执行特定功能。例如,“健康温度计”服务包括温度测量值的特征以及两次测量之间的时间间隔。
  3. 描述符:描述符提供有关特征的其他信息。例如,温度值特性可以指示其单位(例如摄氏温度)以及传感器可以测量的最大值和最小值。描述符是可选的–每个特征可以具有任意数量的描述符。

Bluetooth SIG指定了常见服务和特性的完整列表,以及如何与它们交互。同样,所有这些信息都在他们的网站中。

因此,在开始编写代码以与手表进行交互之前,您需要做的是知道设备提供哪些服务和特性。理想的情况是,当您购买手表时随附的手册要说些什么……但是事实可能并非如此。

因此,您必须自己弄清楚。您可以做的第一件事是下载一个应用程序,让您连接到BLE设备并浏览其GATT配置文件。我推荐LightBlue Explorer。使用它,您可以连接到手表并找出所暴露的特征和服务。然后,您可以在Bluetooth SIG网站上阅读该规范,并拥有开始编写代码所需的一切。

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

enter image description here

由于该服务不是由Bluetooth SIG定义的,因此您需要进行一些逆向工程,这可能非常困难且令人沮丧。我所做的就是下载设备的官方应用程序,我启用了Bluetooth Snoop HCI,然后以不同的方式与设备进行了交互。之后,我用Wireshark打开了日志,并分析了蓝牙数据包的传输,以了解这些特征的工作原理。

最后,一旦您知道蓝牙在设备中的工作原理,您就可以编写自己的应用程序与之交互。我强烈建议您使用一个库来进行通信实现,否则会很费劲。我见过和使用过的最好的是RxAndroidBle(它们具有针对不同平台的其他版本的库)。

这是一个漫长的过程,我在这里写的只是一些一般信息,因此您可以从哪里开始。

答案 1 :(得分:0)

实际上看的是相同的回复...感谢@dglozano到目前为止的解释。 我的Huawei Band 3 pro也给我带来了一些痛苦... 但是,看了很多之后,我发现了两个有趣的观点:

  1. 您可以在杀死Huawei Health应用程序后通过LightBlue Explorer连接设备。

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

    $ssh user@192.168.1.13 -p 15432 'pcapremote' > huawei.pcap

    在那之后,我运行wireshark,打开文件,刷新,然后将头撞到墙上,因为我感到迷茫。

祝你好运!