如何识别 google fit activity 是手动输入还是传感器跟踪?

How to identify google fit activity is entered manually or tracked by sensor?

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

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

有人知道获取用户未手动记录的活动的方法吗?

更新

查看 Google Fit 开发者社区中的以下主题,它可能会对某些人有所帮助

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

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

DataSource ds = DataPoint.getOriginalDataSource()

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

如果 "dataStream" 字符串包含 soft_step_delta,那么我们可以假设步数是从 phone 传感器记录的。我还没有用可穿戴设备测试它。

我按照上面 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() 将有不同每个设备的值,因为该函数只负责返回设备特定数据。