从 Google Fit Rest API 获取活动时间

Ale*_*exR 5 api rest google-fit-sdk google-fit

我正在努力将Fit REST API返回的“活动时间”与现实相匹配。

举个例子 - 12 月 14 日,我散步了两次,每次大约 45 分钟。api 返回其中之一作为类型7(“步行” - 正确!),另一个作为类型0(在车辆中 - 错误!)。然而,Fit 应用程序将两者都显示为“步行”,因此它显然使用了不同的数据源。

我检查了其他几天,在这些天,带有类型的会话0确实是有效的“车内”会话。

我尝试了所有返回 com.google.activity.segment 的聚合数据源。其中大多数都是空的,我只在merge_activity_segments和中找到了数据platform_activity_segments(它们似乎是相同的)。

谷歌的文档对数据同步延迟有一个警告,但他们从未具体说明延迟有多长。我正在查看的数据大约是 24 小时前的数据 - 如果它们的同步速度那么慢,那么这个 API 或多或少无法使用。

我正在使用以下 POST 到https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate

{
    "aggregateBy": [
        {
            "dataSourceId": "derived:com.google.activity.segment:com.google.android.gms:merge_activity_segments"
        }
    ],
    "endTimeMillis": "1481788800000",
    "startTimeMillis": "1481702400000",
    "bucketByTime": {
        "period": {
            "timeZoneId": "America/Los_Angeles",
            "type": "day",
            "value": 1
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

供参考 - 活动类型:https ://developers.google.com/fit/rest/v1/reference/activity-types

有没有人能够从 Fit 的 REST API 检索正确的活动时间?有什么建议么?

顺便说一句,步数和卡路里似乎工作正常 - 只需聚合以下数据集:derived:com.google.calories.expended:com.google.android.gms:merge_calories_expendedderived:com.google.step_count.delta:com.google.android.gms:estimated_steps

旁注——这可能是我见过的大公司中记录最差的 API。

小智 0

我知道已经有一段时间了,但也许其他人稍后也会找到这个主题。文档本身看起来没有太大变化,但我发现了以下内容可以工作。

活跃分钟数

请求体

{
  "aggregateBy": [{
    "dataTypeName": "com.google.active_minutes",
    "dataSourceId": "derived:com.google.active_minutes:com.google.android.gms:merge_active_minutes"
  }],
  "bucketByTime": { "durationMillis": 86400000 },
  "startTimeMillis": 1678406400000,
  "endTimeMillis":1678579200000
}
Run Code Online (Sandbox Code Playgroud)

网址

https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate

类型:邮政

因此,您基本上要做的就是首先将此 URL:https://www.googleapis.com/fitness/v1/users/me/dataSources作为 GET 请求调用,然后获取可能的数据源列表。从那里复制dataTypeName名称dataSourceIddataStreamId。就这样,一旦您获得了想要获取的给定数据参数,您只需交换给定值并调用第一个 POST 端点即可。当然,不要忘记选择数据范围。