是否可以仅从Google Fit中获取最后一条记录? 不是时间范围,而是数据集中的一项。 我需要写记录的时间。
假设我必须将我的应用程序中的数据与Google Fit同步。 我需要知道何时同步最近更新的记录,以便可以找到所有较新但尚未同步的值。 我可以将时间戳保存在本地数据库中,但是我认为这更干净。
谢谢!
答案 0 :(得分:1)
在setLimit(int limit)
上使用DataReadRequest.Builder
方法。
像这样:
long monthInMillis = 2592000000; // It can be a year or more if you want.. Any way you are limiting the result to 1 DataPoint.
long endTime = new Date().getTime(); // Now
long startTime = endTime - monthInMillis;
DataReadRequest.Builder builder = new DataReadRequest.Builder();
builder.read(dataType);
builder.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS);
builder.setLimit(1); // This will get the latest record for the dataType
DataReadRequest readRequest = builder.build();
mHistoryClient.readData(readRequest)
.addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
@Override
public void onSuccess(DataReadResponse dataReadResponse) {
for (DataSet dataSet : dataReadResponse.getDataSets()) {
for (DataPoint dataPoint : dataSet.getDataPoints()) {
if (dataPoint.getDataType().getName().equals(DataType.TYPE_LOCATION_SAMPLE.getName())) {
// Location DataPoint
long startTime = dataPoint.getStartTime(TimeUnit.MILLISECONDS);
}
if (dataPoint.getDataType().getName().equals(DataType.TYPE_ACTIVITY_SEGMENT.getName())) {
// Activity DataPoint
long endTime = dataPoint.getEndTime(TimeUnit.MILLISECONDS);
}
if (dataPoint.getDataType().getName().equals(DataType.TYPE_STEP_COUNT_DELTA.getName())) {
// Steps DataPoint
}
}
}
}
});
公共DataReadRequest.Builder setLimit(整数限制)
将结果限制为最新的限制数据点。对于聚合查询,将忽略此参数。默认情况下没有限制。