【问题标题】:Google Fit Api filter manually added activitiesGoogle Fit Api 过滤器手动添加的活动
【发布时间】:2023-04-09 17:06:01
【问题描述】:

Google Fit 允许用户手动和以编程方式添加活动。是否可以从 Android Api 或 REST Api 中过滤掉手动或以编程方式添加的活动?

我只想查询在执行时实际跟踪和记录的活动。

【问题讨论】:

  • 我正在寻找相同的。 stackoverflow.com/questions/34496847/…
  • 我能想到的唯一方法是实时阅读步骤,这样您就知道这些步骤是真实的,并且没有手动输入。有什么方法可以联系到你吗?我们可以询问 Google,他们是否正在考虑在他们的 API 中添加所需的内容。你可以在 Twitter @sammleach 上给我发私信

标签: java android rest google-fit


【解决方案1】:

根据文档没有正确的方法。但我找到了一些解决方案来识别 Android API 中手动和自动跟踪的活动。

DataSource ds = DataPoint.getOriginalDataSource()
String streamData = ds.getStreamIdentifier()

如果“streamData”包含“user_input”,则假定活动是手动活动,或者它包含实际传感器记录活动的“详细”。

【讨论】:

  • 已尝试 DataPoint.getOriginalDataSource().getAppPackageName() 并返回“null”。也尝试过 DataPoint.getOriginalDataSource().getStreamIdentifier() 并且它有一些不可读的值。
  • 应该被标记为答案。这工作得很好
【解决方案2】:

我按照上面 Abdul Khan 的建议尝试了,但是

DataSource ds = DataPoint.getOriginalDataSource();
String streamData = ds.getStreamIdentifier();

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

String packageName = ds.getAppPackageName();
String streamIdentifier = ds.getStreamIdentifier();

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多