所以我正在尝试使用android API阅读google fit历史记录,但我遇到了一个恼人的限制。我似乎只能阅读过去一周左右的历史,即使有更多的数据(根据谷歌适合的应用程序)。我用来读取数据的代码在
下面 Calendar cal = Calendar.getInstance();
Date now = new Date();
cal.setTime(now);
long endTime = cal.getTimeInMillis();
cal.add(Calendar.MONTH, -1);
long startTime = cal.getTimeInMillis();
//long startTime = 0l;
final SimpleDateFormat dateFormat = new SimpleDateFormat();
Log.i(TAG, "Range start: " + dateFormat.format(startTime));
Log.i(TAG, "Range end: " + dateFormat.format(endTime));
DataReadRequest readRequest = new DataReadRequest.Builder()
.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
.bucketByTime(1, TimeUnit.DAYS)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
Fitness.HistoryApi.readData(client, readRequest).setResultCallback(
new com.google.android.gms.common.api.ResultCallback<DataReadResult>() {
@Override
public void onResult(DataReadResult result) {
//Log.i(TAG, result.getStatus().getStatusMessage());
int i = 0;
for (Bucket bucket : result.getBuckets()) {
for (DataSet dataSet : bucket.getDataSets()) {
//Log.i(TAG, "Data returned for Data type: " + dataSet.getDataType().getName());
for (DataPoint dp : dataSet.getDataPoints()) {
Log.i(TAG, ++i + "");
Log.i(TAG, "Data point:");
Log.i(TAG, "\tType: " + dp.getDataType().getName());
Log.i(TAG, "\tStart: " + dateFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS)));
Log.i(TAG, "\tEnd: " + dateFormat.format(dp.getEndTime(TimeUnit.MILLISECONDS)));
for (Field field : dp.getDataType().getFields()) {
Log.i(TAG, "\tField: " + field.getName() +
" Value: " + dp.getValue(field));
}
}
}
}
}
}
);
然而根据logcat,有很多空的日子
0-01 22:24:21.000 32590-32624/? I/MainActivity: Range start: 2015-09-01 10:24 PM
10-01 22:24:21.000 32590-32624/? I/MainActivity: Range end: 2015-10-01 10:24 PM
10-01 22:24:21.380 32590-32606/? V/Fitness: Received batch result
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.380 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: 1
10-01 22:24:21.383 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.383 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.383 32590-32590/? I/MainActivity: Start: 2015-09-23 4:41 PM
10-01 22:24:21.384 32590-32590/? I/MainActivity: End: 2015-09-23 10:14 PM
10-01 22:24:21.384 32590-32590/? I/MainActivity: Field: steps Value: 3093
10-01 22:24:21.384 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.384 32590-32590/? I/MainActivity: 2
10-01 22:24:21.384 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.384 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.385 32590-32590/? I/MainActivity: Start: 2015-09-23 10:27 PM
10-01 22:24:21.385 32590-32590/? I/MainActivity: End: 2015-09-24 5:14 PM
10-01 22:24:21.385 32590-32590/? I/MainActivity: Field: steps Value: 13582
10-01 22:24:21.385 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.385 32590-32590/? I/MainActivity: 3
10-01 22:24:21.385 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.385 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.385 32590-32590/? I/MainActivity: Start: 2015-09-25 11:54 AM
10-01 22:24:21.385 32590-32590/? I/MainActivity: End: 2015-09-25 10:23 PM
10-01 22:24:21.385 32590-32590/? I/MainActivity: Field: steps Value: 15395
10-01 22:24:21.385 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.385 32590-32590/? I/MainActivity: 4
10-01 22:24:21.385 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.385 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.386 32590-32590/? I/MainActivity: Start: 2015-09-25 10:34 PM
10-01 22:24:21.386 32590-32590/? I/MainActivity: End: 2015-09-26 10:23 PM
10-01 22:24:21.386 32590-32590/? I/MainActivity: Field: steps Value: 15975
10-01 22:24:21.386 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.386 32590-32590/? I/MainActivity: 5
10-01 22:24:21.386 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.386 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.386 32590-32590/? I/MainActivity: Start: 2015-09-26 10:25 PM
10-01 22:24:21.386 32590-32590/? I/MainActivity: End: 2015-09-27 10:24 PM
10-01 22:24:21.386 32590-32590/? I/MainActivity: Field: steps Value: 14562
10-01 22:24:21.386 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.386 32590-32590/? I/MainActivity: 6
10-01 22:24:21.386 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.386 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.387 32590-32590/? I/MainActivity: Start: 2015-09-27 10:24 PM
10-01 22:24:21.387 32590-32590/? I/MainActivity: End: 2015-09-28 10:24 PM
10-01 22:24:21.387 32590-32590/? I/MainActivity: Field: steps Value: 16200
10-01 22:24:21.387 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.387 32590-32590/? I/MainActivity: 7
10-01 22:24:21.387 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.387 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.387 32590-32590/? I/MainActivity: Start: 2015-09-28 10:24 PM
10-01 22:24:21.387 32590-32590/? I/MainActivity: End: 2015-09-29 10:21 PM
10-01 22:24:21.387 32590-32590/? I/MainActivity: Field: steps Value: 13371
10-01 22:24:21.387 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.387 32590-32590/? I/MainActivity: 8
10-01 22:24:21.387 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.387 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.388 32590-32590/? I/MainActivity: Start: 2015-09-29 10:37 PM
10-01 22:24:21.388 32590-32590/? I/MainActivity: End: 2015-09-30 10:19 PM
10-01 22:24:21.388 32590-32590/? I/MainActivity: Field: steps Value: 3383
10-01 22:24:21.388 32590-32590/? I/MainActivity: Data returned for Data type: com.google.step_count.delta
10-01 22:24:21.388 32590-32590/? I/MainActivity: 9
10-01 22:24:21.388 32590-32590/? I/MainActivity: Data point:
10-01 22:24:21.388 32590-32590/? I/MainActivity: Type: com.google.step_count.delta
10-01 22:24:21.388 32590-32590/? I/MainActivity: Start: 2015-09-30 10:45 PM
10-01 22:24:21.388 32590-32590/? I/MainActivity: End: 2015-10-01 7:26 PM
10-01 22:24:21.389 32590-32590/? I/MainActivity: Field: steps Value: 12805
对于为什么我在23日之前无法阅读(写作时)的任何见解将不胜感激。
答案 0 :(得分:4)
默认情况下,您的请求将仅查询存储在设备上的本地数据。要包含来自Google服务器的数据,请将.enableServerQueries()
添加到DataReadRequest.Builder
:
DataReadRequest readRequest = new DataReadRequest.Builder()
.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
.bucketByTime(1, TimeUnit.DAYS)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.enableServerQueries()
.build();
启用查询Google Fit服务器以获取查询结果,以防万一 本地商店没有完整请求时间范围的数据。 服务器结果将与本地结果合并为一个DataSet。