我正在使用 Play 服务的 Android 应用程序中显示每日用户步数数据和活动时间。我的 API 设置正常,一切正常,但我还想阅读用户的目标(在 Google Fit 配置文件中设置的目标)以了解每日步数和活动时间,以便显示达到的百分比。我如何实现这一目标?我在 com.google.android.gms.fitness.* 中找不到任何提供此功能的 API。
谢谢,
迈克尔
我正在使用 Play 服务的 Android 应用程序中显示每日用户步数数据和活动时间。我的 API 设置正常,一切正常,但我还想阅读用户的目标(在 Google Fit 配置文件中设置的目标)以了解每日步数和活动时间,以便显示达到的百分比。我如何实现这一目标?我在 com.google.android.gms.fitness.* 中找不到任何提供此功能的 API。
谢谢,
迈克尔
android play-services (9.8.0) 中的最新更改应该使这成为可能。
1.将 Fitness.GOALS_API 添加到 GoogleAPiClient
googleApiClient = new GoogleApiClient.Builder(CrossoverWatchFaceService.this)
.addConnectionCallbacks([...])
.addApi(Fitness.HISTORY_API)
.addApi(Fitness.GOALS_API)
.useDefaultAccount()
.build();
googleApiClient.connect();
2.检索目标
PendingResult<GoalsResult> pendingResult =
Fitness.GoalsApi.readCurrentGoals(
googleApiClient,
new GoalsReadRequest.Builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA)
.build());
pendingResult.setResultCallback(
new ResultCallbacks<GoalsResult>() {
@Override
public void onSuccess(@NonNull GoalsResult goalsResult) {
List<Goal> goals = goalsResult.getGoals();
//YOUR CODE HERE
}
@Override
public void onFailure(@NonNull Status status) {
Log.d(TAG, "onFailure: ");
}
});
https://developers.google.com/fit/android/using-goals
和
https://developers.google.com/android/reference/com/google/android/gms/fitness/GoalsApi
截至目前(2015 年 9 月 22 日),无法从 Google Fit API 获得步数目标。
注意: ACTION_VIEW_GOAL 只允许用户查看。我也无法让它工作。
如果您想使用同步调用,请使用以下代码片段作为第二部分检索目标:
PendingResult<GoalsResult> pendingResult = Fitness.GoalsApi.readCurrentGoals(
googleApiClient, new GoalsReadRequest.Builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA)
.build());
GoalsResult goalsResult = pendingResult.await();
List<Goal> goals = goalsResult.getGoals();
// assume 1st goal is step count
double stepGoal = goals.get(0).getMetricObjective().getValue();