6

我们正在开发一个查询 Google Fit API 以检索步数、卡路里和距离参数的 Android 应用程序。我们想要查询不是由用户手动输入的活动(或以某种方式识别这些活动并忽略它们)。

用户可以手动加载步行、跑步等活动,我们希望忽略这些活动。我们查看了历史 API 和活动字段,但似乎无法确定活动是手动记录还是由其他应用程序、手机传感器或可穿戴设备自动添加。

有人可以知道一种方法来获取用户未手动记录的活动吗?

更新

在 Google Fit Developer Community 上查看以下帖子,它可能对某人有所帮助

https://plus.google.com/u/0/105650643673857572241/posts/fET6zKYFq4K

4

2 回答 2

7

这可能不是识别传感器检测到的步骤的正确方法,但通过一些测试,它几乎与我认为传感器记录的步骤相匹配。

数据源ds = DataPoint.getOriginalDataSource()

字符串数据流 = ds。获取流标识符()

如果“dataStream”字符串包含soft_step_delta,那么我们可以假设步骤是从手机传感器记录的。我没有用可穿戴设备测试过。

于 2015-07-28T11:31:17.890 回答
1

我按照上面阿米特的建议尝试了,但是

DataPoint.getOriginalDataSource().getStreamIdentifier();

/*I also tried but could not achieve what I wanted*/

DataPoint.getOriginalDataSource().getStreamName();
DataPoint.getOriginalDataSource().getAppPackageName();

在检索数据时至少对我不起作用。我最终使用readDailyTotalFromLocalDevice()如下所示,以便捕获仅由设备捕获的步骤。

Fitness.HistoryApi.readDailyTotalFromLocalDevice(mApiClient, DataType.TYPE_STEP_COUNT_DELTA).await(1, TimeUnit.MINUTES)

我对一些避免在其应用程序中手动输入的应用程序进行了相同的检查,并且上述功能提供的计数完全相同。

注意:如果用户拥有多个设备并在所有设备上使用该应用程序,则 readDailyTotalFromLocalDevice()将对每个设备具有不同的值,因为该函数仅负责返回设备特定的数据。

于 2019-07-23T11:03:13.113 回答