如何识别谷歌适合活动是手动输入还是由传感器跟踪?

时间:2015-07-16 10:36:17

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

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

用户可以手动加载“行走”,“运行”等活动,我们希望忽略此类活动。我们查看了历史API和活动字段,但似乎没有办法确定活动是由其他应用程序或手机传感器或可穿戴设备手动记录还是自动添加。

有人知道如何获取未由用户手动记录的活动吗?

更新

检查Google健身开发者社区中的以下主题,它可能有助于某人

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

2 个答案:

答案 0 :(得分:4)

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

DataSource ds = DataPoint.getOriginalDataSource()

String dataStream = ds。getStreamIdentifier()

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

答案 1 :(得分:0)

我尝试了上述Amit的建议,但

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()对于每个设备都将具有不同的值,因为函数仅负责返回设备特定的数据。