[英]Can't get daily step count from Google Fit API
我是Google Fit API的新手。 我正在嘗試從API獲取每日步數,但沒有運氣。
我一直在官方文檔和Stack Overflow上下翻閱,但似乎Google在2018年對API進行了重大更改,因此大多數事情都已過時,包括Google自己的教程(於2018年發布)。 一些更新了文檔的地方提供了代碼片段,因此,我不知道如何使用它們。
這是我連接到Google Fit的代碼:
FitnessOptions fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.build();
if (!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)) {
GoogleSignIn.requestPermissions(
this, // your activity
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
GoogleSignIn.getLastSignedInAccount(this),
fitnessOptions);
} else {
accessGoogleFit();
}
private void accessGoogleFit() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
long endTime = cal.getTimeInMillis();
cal.add(Calendar.YEAR, -1);
long startTime = cal.getTimeInMillis();
DataReadRequest readRequest = new DataReadRequest.Builder()
.aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.bucketByTime(1, TimeUnit.DAYS)
.build();
Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this))
.readData(readRequest)
.addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
@Override
public void onSuccess(DataReadResponse dataReadResponse) {
Log.d(TAG, "onSuccess()");
Toast.makeText(getApplicationContext(),"onSuccess()",Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(),dataReadResponse.getBuckets().get(0).getDataSets()+"",Toast.LENGTH_LONG).show();
tvLastRun.setText(dataReadResponse.getBuckets().get(0).getDataSets()+"");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "onFailure()", e);
Toast.makeText(getApplicationContext(),"onFailure()",Toast.LENGTH_LONG).show();
}
})
.addOnCompleteListener(new OnCompleteListener<DataReadResponse>() {
@Override
public void onComplete(@NonNull Task<DataReadResponse> task) {
Log.d(TAG, "onComplete()");
Toast.makeText(getApplicationContext(),"onComplete()",Toast.LENGTH_LONG).show();
}
});
}
08-27 13:10:39.488 1996-2723/com.google.android.gms.persistent W/InstanceID/Rpc: No response android.os.ConditionVariable@33657c3a
08-27 13:10:39.488 1996-2723/com.google.android.gms.persistent W/GLSUser: [AppCertManager] Failed to get security token.
java.io.IOException: TIMEOUT
at vpw.b(:com.google.android.gms@11947270:40)
at vpw.a(:com.google.android.gms@11947270:47)
at vpt.b(:com.google.android.gms@11947270:11)
at vpt.a(:com.google.android.gms@11947270:29)
at fvt.b(:com.google.android.gms@11947270:4)
at fvt.a(:com.google.android.gms@11947270:55)
at fvr.a(:com.google.android.gms@11947270:8)
at fvn.a(:com.google.android.gms@11947270:1)
at fvm.a(:com.google.android.gms@11947270:10)
at com.google.android.gms.auth.account.be.legacy.AuthCronChimeraService.b(:com.google.android.gms@11947270:7)
at faq.call(:com.google.android.gms@11947270:3)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at mwc.run(:com.google.android.gms@11947270:26)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at nbl.run(:com.google.android.gms@11947270)
at java.lang.Thread.run(Thread.java:818)
08-27 13:10:39.505 1996-2723/com.google.android.gms.persistent W/ConfigurationChimeraPro: Got null configs for com.google.`enter code here`android.gms.common_auth
08-27 13:10:39.524 1996-2723/com.google.android.gms.persistent I/Auth: [ReflectiveChannelBinder] Successfully bound channel!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.