2016-09-25 5 views
0

Со следующим кодом я мог получить ответ, но с пустым набором данных. где, как в приложении googlefit, отображаются шаги. как получить точные шаги, показанные в приложении googlefit через историю api? я пробовал вес, калории ... каждый раз, ответ приходит как пустой набор данных! Я потратил последние 3 дня на это.Как получить шаги, подобные шагам googlefit, используя googlefit history api?

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(DataType.TYPE_STEP_COUNT_DELTA,DataType.AGGREGATE_STEP_COUNT_DELTA) 
     .bucketByTime(1, TimeUnit.DAYS) 
     .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
     .build(); 

PendingResult<DataReadResult> pendingResult = Fitness.HistoryApi.readData(mClient, readRequest); 
    pendingResult.setResultCallback(new ResultCallback<DataReadResult>(){ 
    @Override 
    public void onResult(@NonNull DataReadResult dataReadResult) { 
     parseData(dataReadResult); 
    } 
    }); 

private static void parseData(DataReadResult dataReadResult) { 
if (dataReadResult.getBuckets().size() > 0) { 
    Log.i(TAG, 
     "Number of returned buckets of DataSets is: " + dataReadResult.getBuckets().size()); 
    for (Bucket bucket : dataReadResult.getBuckets()) { 
    List<DataSet> dataSets = bucket.getDataSets(); 
    for (DataSet dataSet : dataSets) { 
     dumpDataSet(dataSet); 
    } 
    } 
} else if (dataReadResult.getDataSets().size() > 0) { 
    Log.i(TAG, "Number of returned DataSets is: " + dataReadResult.getDataSets().size()); 
    for (DataSet dataSet : dataReadResult.getDataSets()) { 
    dumpDataSet(dataSet); 
    } 
} 
    } 

ответ

0

Род занятий SO thread.

Перед тем, как получить данные с помощью History API вы должны записать его сначала с помощью Recording API:

Ваше приложение может записывать количество шагов пользователя с помощью записи API для создания подписки на тип DataType.TYPE_STEP_COUNT_CUMULATIVE данных, как показано в следующем примере:

public void subscribe() { 
    // To create a subscription, invoke the Recording API. As soon as the subscription is 
    // active, fitness data will start recording. 
    Fitness.RecordingApi.subscribe(mClient, DataType.TYPE_STEP_COUNT_CUMULATIVE) 
      .setResultCallback(new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        if (status.isSuccess()) { 
         if (status.getStatusCode() 
           == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) { 
          Log.i(TAG, "Existing subscription for activity detected."); 
         } else { 
          Log.i(TAG, "Successfully subscribed!"); 
         } 
        } else { 
         Log.w(TAG, "There was a problem subscribing."); 
        } 
       } 
      }); 
} 

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

T его точно такой же вопрос был адресован в Fit часто задаваемые вопросы, которые Google найден here.

Приложение Fit использует определенный источник данных для шагов. Он добавляет следующие функциональные возможности поверх потока объединенных шагов по умолчанию:

Шаги, записанные во время езды на велосипеде, вождения и некоторых других не движущихся объектах . Когда активность, которая включает в себя этапы (например, ходьбе или бегу), не имеет разумного количества шагов , связанных с ней, оцениваются этапы деятельности. Вы можете получить доступ к "по проведенным оценкам" шаги поток, как показано здесь:

С помощью REST API:

производные: com.google.step_count.delta: com.google.android.gms: estimated_step> s через Android API:

new DataSource.Builder() 
     .setAppPackageName(“com.google.android.gms”) 
     .setDataType(DataType.TYPE_STEP_COUNT_DELTA) 
     .setType(DataSource.TYPE_DERIVED) 
     .setStreamName("estimated_steps") 
     .build(); 

Обратите внимание, что даже при использовании правильного источника данных, ваш счетчик шаг может еще отличаться от приложения Google Fit. Это может быть связано к одной из следующих причин:

На Wear, Подгонка MicroApp при подключении будет отображаться шаг подсчитывает запрашивается по телефону и передаются через через носимого API. Другие MicroApps, получающие доступ только к локальным данным, получат только часы. Мы работаем над тем, чтобы сделать это проще для разработчиков. Иногда на этапе код расчета для приложения Google Fit обновляется с исправлениями ошибок , прежде чем мы сможем выпустить исправления для разработчиков (для чего требуется выпуск Google Play Services). Мы также работаем над тем, чтобы было доступно для разработчиков одновременно с исправлениями.

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