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.

文档参考:https://developers.google.com/android/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#setLimit(int)