Bin*_*ngh 5 android google-fit
我们如何获取特定用户存储在 google fit cloud 中的数据?我尝试使用 History API,但没有显示任何数据。然后我尝试通过历史 API 输入一些数据,现在我只能通过历史 API 看到这些数据,而不是实际驻留在 fit 中的完整数据。
DataReadRequest readRequest = queryFitnessData();
DataReadResult dataReadResult =
Fitness.HistoryApi.readData(mClient, readRequest).await(1, TimeUnit.MINUTES);
Run Code Online (Sandbox Code Playgroud)
数据请求是
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();
Run Code Online (Sandbox Code Playgroud)
根据您的问题,很难知道您期望但没有收到什么。更详细的信息会有所帮助。
我猜这是因为 Fit 返回了默认的合并步骤流。基本上,如果两个应用程序在同一 60 分钟内都报告了 1,000 步,Fit 会认为它们是重复的并“合并”它们以进行响应。
尝试失去存储桶功能,看看是否能获得原始步骤。这段代码对我有用:
final DataReadRequest readRequest = new DataReadRequest.Builder()
.read(DataType.TYPE_STEP_COUNT_DELTA)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
DataReadResult dataReadResult =
Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES);
DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
int totalSteps = 0;
for (DataPoint dp : stepData.getDataPoints()) {
for(Field field : dp.getDataType().getFields()) {
int steps = dp.getValue(field).asInt();
totalSteps += steps;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5374 次 |
| 最近记录: |