Google 适合获取最后一条记录
Google fit fetch last record
是否可以只从 Google Fit 中获取最后一条记录?
不是时间范围,而是数据集中的一个条目。
我需要找出记录写入的时间。
假设我必须将我的应用程序中的数据与 Google Fit 同步。
我需要知道上次更新的记录何时同步,以便我可以找到所有更新且尚未同步的值。
我可以在本地数据库中保存时间戳,但我认为这样更干净。
谢谢!
在 DataReadRequest.Builder
上使用 setLimit(int limit)
方法。
像这样:
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
}
}
}
}
});
public DataReadRequest.Builder setLimit (int limit)
Limits results to the latest limit data points. This parameter is ignored for aggregated queries. By default there is no limit.
是否可以只从 Google Fit 中获取最后一条记录? 不是时间范围,而是数据集中的一个条目。 我需要找出记录写入的时间。
假设我必须将我的应用程序中的数据与 Google Fit 同步。 我需要知道上次更新的记录何时同步,以便我可以找到所有更新且尚未同步的值。 我可以在本地数据库中保存时间戳,但我认为这样更干净。
谢谢!
在 DataReadRequest.Builder
上使用 setLimit(int limit)
方法。
像这样:
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
}
}
}
}
});
public DataReadRequest.Builder setLimit (int limit)
Limits results to the latest limit data points. This parameter is ignored for aggregated queries. By default there is no limit.