2016-08-31 22 views
1

我想從谷歌適合API獲取步驟,距離,卡路里。 我使用GoogleApiClient訪問Google健身中的數據。 我每次谷歌飛度許可要求也允許從谷歌飛度訪問所有數據:谷歌飛度權限不是在第一時間授予

此權限彈出來的每一次。我需要允許4到5次,然後纔可以從Google健身中獲得步驟。

我第一次需要做什麼才能獲得Google健身權限。 所以請幫我解決這個問題。

mGoogleApiClient1 = new GoogleApiClient.Builder(this) 
    .addApi(Fitness.HISTORY_API) 
    .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) 
    .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE)) 
    .addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE)) 
    .addConnectionCallbacks(this) 
    .enableAutoManage(this, Constants.googleApi, this) 
    .build(); 

2.我用下面的API來獲取步距離和卡路里 請告訴我爲什麼不從谷歌獲得飛度一致的數據。 它總是比Google健身中的步驟數據獲得更多的步驟數據。

// get Steps data from bellow api 
private void getStepDataForToday() { 
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal(mGoogleApiClient1, DataType.TYPE_STEP_COUNT_DELTA).await(1, TimeUnit.MINUTES); 
    showDataSet(result.getTotal()); 
} 

private void getDistanceDataForToday() { 
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal(mGoogleApiClient1, DataType.TYPE_DISTANCE_DELTA).await(1, TimeUnit.MINUTES); 
    showDataSet(result.getTotal()); 
} 

private void getCaloriesDataForToday() { 
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal(mGoogleApiClient1, DataType.TYPE_CALORIES_EXPENDED).await(1, TimeUnit.MINUTES); 
    showDataSet(result.getTotal()); 
} 

謝謝 並等待救援

+0

請先編輯您的問題,請查看:http://stackoverflow.com/help/formatting – neohope

回答

1

對於飛度許可,確保或仔細檢查,如果你按照正確的Authorization in Android方向。

對於這些步驟,您獲得的距離和卡路里數據比Google Fit的原始步驟略微多一點?

它在谷歌的FAQ陳述FIT是:

由於谷歌飛度更新的方式發佈的,有可能 ,谷歌飛度應用程序有我們的數據分析的較新版本 代碼比Google Play服務更少發佈。

但是,我們的後端總是擁有最新版本的 數據,並且最終所有內容都會在那裏處理,並且應該在幾次雲同步後匹配 。讓我們知道如果情況並非如此。

我們正在努力爲使其能夠爲 應用要求我們立即處理雲同步,使這種情況較好,這樣 一切都處於同步,也可以通過使它使同步發生 時自動顯著數據輸入或更改。

這也可能是由於沒有閱讀正確的數據源引起的。要 匹配谷歌飛度的價值,你應該讀的數據是這樣的:

DataSource ESTIMATED_STEP_DELTAS = new DataSource.Builder() 
     .setDataType(DataType.TYPE_STEP_COUNT_DELTA) 
     .setType(DataSource.TYPE_DERIVED) 
     .setStreamName("estimated_steps") 
     .setAppPackageName("com.google.android.gms") 
     .build(); 
DataReadRequest readRequest = new DataReadRequest.Builder() 
     .aggregate(ESTIMATED_STEP_DELTAS, DataType.AGGREGATE_STEP_COUNT_DELTA) 
     .aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA) 
     .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED) 
     .aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY) 
     .bucketByTime(1, TimeUnit.DAYS) 
     .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
     .build(); 

欲瞭解更多信息,請選中此相關SO question