2015-03-23 5 views
1

Мне нужно, чтобы мои данные соответствовали тому, что показано в приложении для андроида. Я попытался использовать API-интерфейс Sensor, но это число отражает количество шагов, предпринятых с момента загрузки устройства, а не на день.Google Fit Step Count

How to get step count from Google Fit REST API like Google Fit app?

Я также попытался с помощью History API и запросов для stepcount_cumulative и step_delta. Оба этих значения не отражают значения API соответствия.

У меня возникла идея сохранить значение предыдущего дня в sharedPref и вычесть разницу, чтобы получить истинное значение. Другие расчеты для того, когда необходимо сбрасывать устройство, также должны учитываться.

Есть ли более простой способ получить нужные мне значения?

+0

Вы пытаетесь прочитать шаг данных, другие госзакупки вошли в Google Fit, или вы пытаетесь использовать ступенчатый датчик на самом устройстве? Я думаю, что вопрос может быть немного неясным в этом отношении. –

+0

Я открыт для любой реализации. Я бы предпочел вытащить данные из Fit api, поскольку это будет более точным, на мой взгляд. –

+0

Проверьте это сообщение в блоге http://www.gadgetsaint.com/android/google-fit-steps-calories-android/#.WESRX6J97BJ – ASP

ответ

0

Это работает для меня: 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); 
    } 
+0

Это возвращает категоризированную сумму точно. Тем не менее, это не включает в себя различные шаги. Возможно ли получить API для их возврата? –

+0

Я просто играл с Fit API за короткое время, я не знаю:/ – Gudin

1

Попробуйте этот новый метод HistoryApi.readDailyTotal(). (Google играть службы 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

+0

Не могли бы вы разместить какой-нибудь контент из этой ссылки? – Robert

Смежные вопросы