Google Fit获取最新记录

时间:2018-07-09 10:57:34

标签: android google-fit

是否可以仅从Google Fit中获取最后一条记录? 不是时间范围,而是数据集中的一项。 我需要写记录的时间。

假设我必须将我的应用程序中的数据与Google Fit同步。 我需要知道何时同步最近更新的记录,以便可以找到所有较新但尚未同步的值。 我可以将时间戳保存在本地数据库中,但是我认为这更干净。

谢谢!

1 个答案:

答案 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(整数限制)

     

将结果限制为最新的限制数据点。对于聚合查询,将忽略此参数。默认情况下没有限制。

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