首页 > 解决方案 > 阅读 Google Fit 自动生成的活动

问题描述

我正在努力让它按预期工作。我需要列举我在 Google Fit 应用中看到的所有活动(例如自动“晨跑”或手动添加的跑步)。我使用了以下查询:

DataReadRequest readRequest = new DataReadRequest.Builder()
    .aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)
    .enableServerQueries()
    .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
    .bucketByTime(1, TimeUnit.DAYS)
    .build();

注意:这种聚合已被弃用,但我找不到使用非弃用方法接收相同结果的“正确”方式。

现在:在我的 Fit 示例日中,我有两项活动。第一个是自动生成的 2.32 公里 32 分钟的“下午步行”,第二个是手动添加的 1 小时跑步活动。上面的查询返回两行字段活动/持续时间/num_segments:

  1. 运行 / 3600000 (1h) / 1
  2. 步行 / 2674044 (~44 分钟) / 10

如您所见,我的步行时间增加了 12 分钟,为什么?我怎样才能得到我在应用程序中看到的确切内容?此外,那天的总步数并不是我在 Fit 上看到的两项活动的总和。真是一团糟...

编辑:关于时区,我是这样理解的:

Calendar calendar = Calendar.getInstance(Locale.getDefault());
long endTime = calendar.getTimeInMillis();
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
long startTime = calendar.getTimeInMillis();

这些是特定日期的结果:

数据类型:DataType{com.google.activity.summary[activity(i), duration(i), num_segments(i)]}

作为活动:运行字段:活动(i)开始时间:10 月 16 日星期五 12:10:00 GMT+02:00 2020 结束时间:10 月 16 日星期五 13:10:00 GMT+02:00 2020


持续时间:3600000 字段:持续时间(i)开始时间:10 月 16 日星期五 12:10:00 GMT+02:00 2020 结束时间:10 月 16 日星期五 13:10:00 GMT+02:00 2020


N. SEGMENTS:1 个字段:num_segments(i) 开始时间:10 月 16 日星期五 12:10:00 GMT+02:00 2020 结束时间:10 月 16 日星期五 13:10:00 GMT+02:00 2020


作为活动:步行领域:活动(i)开始时间:10 月 16 日星期五 09:20:30 GMT+02:00 2020 结束时间:10 月 16 日星期五 23:15:17 GMT+02:00 2020


持续时间:2674044 字段:持续时间(i) 开始时间:10 月 16 日星期五 09:20:30 GMT+02:00 2020 结束时间:10 月 16 日星期五 23:15:17 GMT+02:00 2020


N. SEGMENTS:10 2FIELD:num_segments(i) 开始时间:10 月 16 日星期五 09:20:30 GMT+02:00 2020 结束时间:10 月 16 日星期五 23:15:17 GMT+02:00 2020

标签: javaandroidgoogle-fitgoogle-fit-sdk

解决方案


推荐阅读