[英]Google Fit Step Count
我需要獲取健身數據以反映在android fit應用程序中顯示的數據。 我已經嘗試使用Sensor API,但是該數字反映了自設備啟動以來(而不是當天)所采取的步驟數量。
如何從Google Fit REST API這樣的Google Fit REST API獲取步驟計數?
我也嘗試使用History API並查詢stepcount_cumulative和step_delta。 這兩個值都不反映fit API的值。
我想到了將前一天的值存儲在sharedPref中並減去差值以獲得真實值的想法。 還需要考慮其他有關設備復位時間的計算。
有沒有更簡單的方法來獲取我需要的值?
試試這個新方法HistoryApi.readDailyTotal()
。 (需要Google Play服務v24)
PendingResult<DailyTotalResult> result = HistoryApi.readDailyTotal(client, TYPE_STEP_COUNT_DELTA);
DailyTotalResult totalResult = result.await(30, SECONDS);
if (totalResult.getStatus().isSuccess()) {
DataSet totalSet = totalResult.getTotal();
long total = totalSet.isEmpty()
? 0
: totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt();
} else {
// handle failure
}
https://developer.android.com/reference/com/google/android/gms/fitness/HistoryApi.html
這對我有用 : https : //github.com/rsteckler/Android-Google-Fit-Service-Skeleton
您要尋找的功能:
private void getStepsToday() {
Calendar cal = Calendar.getInstance();
Date now = new Date();
cal.setTime(now);
long endTime = cal.getTimeInMillis();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
long startTime = cal.getTimeInMillis();
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;
}
}
publishTodaysStepData(totalSteps);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.