Java 阅读Google Fit自动生成的活动

Java 阅读Google Fit自动生成的活动,java,android,google-fit,google-fit-sdk,Java,Android,Google Fit,Google Fit Sdk,我正在努力使它按预期工作。我需要列举我在Google Fit应用程序中看到的所有活动(例如自动“晨走”或手动添加的跑步)。我使用了以下查询: DataReadRequest readRequest = new DataReadRequest.Builder() .aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY) .enableServerQueries() .set

我正在努力使它按预期工作。我需要列举我在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();
注意:这种聚合已被弃用,但我找不到“正确”的方法来使用未弃用的方法接收相同的结果

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

  • 运行/3600000(1h)/1
  • 步行/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();
    
    以下是特定日期的结果:

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

    AS活动:跑步 领域:活动(一) 开始时间:10月16日星期五12:10:00 GMT+2020年2:00 结束时间:10月16日星期五13:10:00 GMT+2020年2:00


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


    N.部分:1 字段:num_段(i) 开始时间:10月16日星期五12:10:00 GMT+2020年2:00 结束时间:10月16日星期五13:10:00 GMT+2020年2:00


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


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


    N.部分:10 2字段:段数(i) 开始时间:星期五10月16日09:20:30 GMT+02:00 2020
    结束时间:10月16日星期五23:15:17 GMT+2020年02:00

    您使用的是哪种套餐?另外,你的时间范围正确吗?注意时区。你的时间范围可能会改变!你说的包裹是什么意思?我没有使用任何软件包。谢谢。flatter包(依赖项):)我不是在使用flatter,而是在原生Android上使用Java。