我正在尝试使用 Google Fit HistoryAPI 检索血糖数据。我使用 HistoryAPI 示例来获取步数(https://github.com/googlearchive/android-fit/tree/master/BasicHistoryApi)并尝试对其进行修改,以便获取血糖数据而不是步数.
我将健身选项更改为:
FitnessOptions fitnessOptions =
FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_WRITE)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_WRITE)
.addDataType(TYPE_BLOOD_GLUCOSE, FitnessOptions.ACCESS_READ)
.addDataType(AGGREGATE_BLOOD_GLUCOSE_SUMMARY, FitnessOptions.ACCESS_READ)
.build();
readRequest 看起来像这样:
DataReadRequest readRequest =
new DataReadRequest.Builder()
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.aggregate(TYPE_BLOOD_GLUCOSE, AGGREGATE_BLOOD_GLUCOSE_SUMMARY)
.bucketByTime(1, TimeUnit.DAYS)
.build();
步数计数器示例工作正常,但当我尝试检索血糖数据时,我总是得到一个没有任何数据点的空数据集。这里可能有什么问题?
您无需同时指定数据类型名称和数据源ID。事实上,如果您指定两者,数据类型名称(当前)将被忽略。
如果指定数据源ID,则该数据源必须存在;如果指定数据类型名称,则使用该类型的“默认”数据源;但允许不存在(例如,如果用户从未实际写入血糖数据)。
因此,将您的请求更改为:
{
"aggregateBy": [{
"dataTypeName": "com.google.blood_glucose",
}],
"bucketByTime": { "durationMillis": 86400000 },
"startTimeMillis": 1578718800000,
"endTimeMillis": 1580360400000
}