使用 google fit android api 读取数据时获取 "Task is not yet complete error"
Getting "Task is not yet complete error" when reading data using google fit android api
我正在学习 Android,我的任务是使用 Google 适合步数 API 检索步数数据。但是,我不断收到 "Task is not yet complete" 错误。我不确定
这是我的那部分代码:
private List<Fitness> readHistoryDataFromGoogle() {
DataReadRequest readRequest = createDataReadRequest();
Task<DataReadResponse> response = com.google.android.gms.fitness.Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this)).readData(readRequest);
DataReadResponse responses = response.getResult();
List <Fitness> fitnessItems = parseFitness(responses);
return fitnessItems;
}
private List<Fitness> parseFitness(DataReadResponse dataReadResponse) {
List<com.example.mentalhealthapp.Fitness> fitnessItems = new ArrayList<>();
for (Bucket bucket : dataReadResponse.getBuckets()) {
for (DataSet set : bucket.getDataSets()) {
for (DataPoint dataPoint : set.getDataPoints()) {
int numSteps = dataPoint.getValue(Field.FIELD_STEPS).asInt();
long startDateTime = dataPoint.getStartTime(TimeUnit.MILLISECONDS);
long endDateTime = dataPoint.getEndTime(TimeUnit.MILLISECONDS);
fitnessItems.add(new com.example.mentalhealthapp.Fitness(numSteps, startDateTime, endDateTime));
}
}
}
return fitnessItems;
}
非常感谢您的帮助!
您遇到了这个问题,因为 API 请求(服务调用)是 Asynchronous
,它们不会立即完成 return 数据,您不能 运行 它们像其他代码一样逐行显示。您必须等待该响应完成,然后才能访问它 return 的数据。
从文档中它告诉你它是一个 REST api:
简要查看文档
https://developers.google.com/android/reference/com/google/android/gms/fitness/RecordingClient 建议您在数据可用时查看它以显示数据。
我正在学习 Android,我的任务是使用 Google 适合步数 API 检索步数数据。但是,我不断收到 "Task is not yet complete" 错误。我不确定
这是我的那部分代码:
private List<Fitness> readHistoryDataFromGoogle() {
DataReadRequest readRequest = createDataReadRequest();
Task<DataReadResponse> response = com.google.android.gms.fitness.Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this)).readData(readRequest);
DataReadResponse responses = response.getResult();
List <Fitness> fitnessItems = parseFitness(responses);
return fitnessItems;
}
private List<Fitness> parseFitness(DataReadResponse dataReadResponse) {
List<com.example.mentalhealthapp.Fitness> fitnessItems = new ArrayList<>();
for (Bucket bucket : dataReadResponse.getBuckets()) {
for (DataSet set : bucket.getDataSets()) {
for (DataPoint dataPoint : set.getDataPoints()) {
int numSteps = dataPoint.getValue(Field.FIELD_STEPS).asInt();
long startDateTime = dataPoint.getStartTime(TimeUnit.MILLISECONDS);
long endDateTime = dataPoint.getEndTime(TimeUnit.MILLISECONDS);
fitnessItems.add(new com.example.mentalhealthapp.Fitness(numSteps, startDateTime, endDateTime));
}
}
}
return fitnessItems;
}
非常感谢您的帮助!
您遇到了这个问题,因为 API 请求(服务调用)是 Asynchronous
,它们不会立即完成 return 数据,您不能 运行 它们像其他代码一样逐行显示。您必须等待该响应完成,然后才能访问它 return 的数据。
从文档中它告诉你它是一个 REST api:
简要查看文档 https://developers.google.com/android/reference/com/google/android/gms/fitness/RecordingClient 建议您在数据可用时查看它以显示数据。