1

下面是我目前使用的代码片段

        DataReadRequest readHeightRequest = new DataReadRequest.Builder()
        .read(DataType.TYPE_HEIGHT)
        .setTimeRange(startTime, endTime,TimeUnit.MILLISECONDS)
        .build();

哪个工作正常,并返回该特定时间范围的高度信息。

如果我不想设置时间范围怎么办?我尝试评论“.setTimeRange”行,但最终给出异常“java.lang.IllegalArgumentException:指定了无效限制 0”。

这里的 startTime 几乎无法预测,因为无法预测用户何时将 Height 详细信息插入 Google Fit。如何处理这种情况?

4

2 回答 2

2

要读取身高(或体重等)的最新条目,请使用setLimit方法并将 startTime 设置为时间的开始 (1):

long startTime = 1;
DataReadRequest readHeightRequest = new DataReadRequest.Builder()
        .read(DataType.TYPE_HEIGHT)
        .setTimeRange(startTime, endTime,TimeUnit.MILLISECONDS)
        .setLimit(1)
        .build();

公共 DataReadRequest.Builder setLimit (int 限制)

将结果限制为最新的限制数据点。对于聚合查询,此参数将被忽略。默认情况下没有限制。此方法对于减少发送的数据量以及支持请求当前(limit == 1 以获取最新值)体重或身高等场景很有用。

于 2015-12-02T15:08:28.077 回答
0

您应该跳过开始时间。根据 DataType TYPE_HEIGHT 文档

因为记录的高度是瞬时的,所以不应该设置开始时间。

于 2015-02-04T08:52:57.640 回答