【问题标题】:How to identify google fit activity is entered manually or tracked by sensor?如何识别手动输入或由传感器跟踪的 google fit 活动?
【发布时间】:2015-07-16 10:36:17
【问题描述】:

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

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

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

更新

在 Google Fit 开发者社区查看下面的帖子,它可能对某人有所帮助

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

【问题讨论】:

  • 数据源可能会有所不同。不过不确定是什么。
  • 数据源将是应用程序的包名,不会有帮助
  • 如果你得到了识别用户输入步骤和软步骤的解决方案,请分享。我正在把它合并在一起。

标签: android google-fit google-fit-sdk


【解决方案1】:

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

DataSourceds = DataPoint.getOriginalDataSource()

字符串数据流 = ds.getStreamIdentifier()

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

【讨论】:

  • 已尝试 DataPoint.getOriginalDataSource().getAppPackageName() 并返回“null”。也尝试过 DataPoint.getOriginalDataSource().getStreamIdentifier() 并且它有一些不可读的值。
【解决方案2】:

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

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() 将为每台设备提供不同的值,因为函数只负责返回设备特定的数据。

【讨论】:

  • Vrajesh - 我的问题已经存在 3 年多,Google Fit API 可能已更改。自过去 2 年以来,我一直没有使用 Google Fit API,因此没有及时了解这些变化。
  • @Amit 不是问题。我刚刚在答案中提到了相同的内容,以便最近开始使用 Google Fit API 的任何人都可以意识到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
相关资源
最近更新 更多