2015-09-25 28 views
1

如何閱讀消費卡路里和來自谷歌健康的剩餘卡路里。直到現在,我只能得到步驟計數而且我還需要卡路里數據。我還將權重和高度插入到像下面這樣的命令API中。如何閱讀消費卡路里和谷歌適合的剩餘卡路里

public void saveUserHeight(int heightCentimiters) { 
    // to post data 
    float height = ((float) heightCentimiters)/100.0f; 
    Calendar cal = Calendar.getInstance(); 
    Date now = new Date(); 
    cal.setTime(now); 
    long endTime = cal.getTimeInMillis(); 
    cal.add(Calendar.DAY_OF_YEAR, -1); 
    long startTime = cal.getTimeInMillis(); 

    DataSet heightDataSet = createDataForRequest(
      DataType.TYPE_HEIGHT, // for height, it would be DataType.TYPE_HEIGHT 
      DataSource.TYPE_RAW, 
      height,     // weight in kgs 
      startTime,    // start time 
      endTime,    // end time 
      TimeUnit.MILLISECONDS    // Time Unit, for example, TimeUnit.MILLISECONDS 
    ); 

    com.google.android.gms.common.api.Status heightInsertStatus = 
      Fitness.HistoryApi.insertData(mGoogleApiFitnessClient, heightDataSet) 
        .await(1, TimeUnit.MINUTES); 
    if(heightInsertStatus.isSuccess()){ 
     Log.e("Height","Inserted"); 
    } 
    else{ 
     Log.e("Height","inserted failed"); 
    } 
} 

public void saveUserWeight(float weight) { 
    // to post data 
    Calendar cal = Calendar.getInstance(); 
    Date now = new Date(); 
    cal.setTime(now); 
    long endTime = cal.getTimeInMillis(); 
    cal.add(Calendar.DAY_OF_YEAR, -1); 
    long startTime = cal.getTimeInMillis(); 

    DataSet weightDataSet = createDataForRequest(
      DataType.TYPE_WEIGHT, // for height, it would be DataType.TYPE_HEIGHT 
      DataSource.TYPE_RAW, 
      weight,     // weight in kgs 
      startTime,    // start time 
      endTime,    // end time 
      TimeUnit.MILLISECONDS    // Time Unit, for example, TimeUnit.MILLISECONDS 
    ); 

    com.google.android.gms.common.api.Status weightInsertStatus = 
      Fitness.HistoryApi.insertData(mGoogleApiFitnessClient, weightDataSet) 
        .await(1, TimeUnit.MINUTES); 
    if(weightInsertStatus.isSuccess()){ 
     Log.e("Weight","Inserted"); 
    } 
    else{ 
     Log.e("Weight","inserted failed"); 
    } 
} 

而對於今天獲得步數我用這個方法。但對於卡路里資訊餘did't找到一種方法。所以,如果有人知道請在這裏分享吧..

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); 
} 
+0

有沒有人知道答案 – ADM

回答

1

對於熱量,你需要更改數據類型 即:

DataType.TYPE_CALORIES_EXPENDED 

或:

DailyTotalResult result = Fitness.HistoryApi.readDailyTotal(mGoogleApiClient,DataType.TYPE_CALORIES_EXPENDED).await(1,TimeUnit.MINUTES);