2014-11-20 3 views
3

Я использую этот код, чтобы попытаться извлечь шаги за последние 14 часов.Ошибка в поиске шагов google fit

YApp myApp = (mYApp) ctx; 
     mGoogleApiClient = myApp.getMyUser(); 
     mGoogleApiClient.reconnect(); 


     Calendar cal = Calendar.getInstance(); 
     Date now = new Date(); 
     cal.setTime(now); 
     long endTime = cal.getTimeInMillis(); 
     cal.add(Calendar.HOUR_OF_DAY, -16); 
     long startTime = cal.getTimeInMillis(); 

     PendingResult<DataReadResult> pendingResult = 
       Fitness.HistoryApi.readData(mGoogleApiClient, new DataReadRequest.Builder() 
           .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) 
           .bucketByTime(1, TimeUnit.DAYS) 
           .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
           .build()); 

     DataReadResult dataReadResult = pendingResult.await(); 



     DataSet ds = dataReadResult.getDataSet(DataType.AGGREGATE_STEP_COUNT_DELTA); 

Мой datareadresult возвращает успех, но когда я пытаюсь прочитать результаты в набор данных я получаю эту ошибку

java.lang.IllegalArgumentException: Attempting to read data for com.google.step_count.delta, which was not requested 

Я перепробовал всю манеру Datatypes но получить ту же каждый раз ошибки, о чем это я делать неправильно ?!

ответ

7

Для любого другого, который получает разочарование по этому поводу :)

mYApp myApp = (mYApp) ctx; 
     mGoogleApiClient = myApp.getMyUser(); 
     mGoogleApiClient.reconnect(); 


     Calendar cal = Calendar.getInstance(); 
     Date now = new Date(); 
     cal.setTime(now); 
     long endTime = cal.getTimeInMillis(); 
     cal.add(Calendar.HOUR_OF_DAY, -12); 
     long startTime = cal.getTimeInMillis(); 

     PendingResult<DataReadResult> pendingResult = 
       Fitness.HistoryApi.readData(mGoogleApiClient, new DataReadRequest.Builder() 
           .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) 
           .bucketByTime(1, TimeUnit.DAYS) 
           .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
           .build()); 

     DataReadResult dataReadResult = pendingResult.await(); 



     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) { 
        Log.i(TAG, "Data returned for Data type: " + dataSet.getDataType().getName()); 
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); 

        for (DataPoint dp : dataSet.getDataPoints()) { 
         Log.i(TAG, "Data point:"); 
         Log.i(TAG, "\tType: " + dp.getDataType().getName()); 
         Log.i(TAG, "\tStart: " + dateFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS))); 
         Log.i(TAG, "\tEnd: " + dateFormat.format(dp.getEndTime(TimeUnit.MILLISECONDS))); 
         for(Field field : dp.getDataType().getFields()) { 
          Log.i(TAG, "\tField: " + field.getName() + 
            " Value: " + dp.getValue(field)); 
         } 
        } 
       } 
      } 
     } else if (dataReadResult.getDataSets().size() > 0) { 
      Log.i(TAG, "Number of returned DataSets is: " 
        + dataReadResult.getDataSets().size()); 
      for (DataSet dataSet : dataReadResult.getDataSets()) { 
       Log.i(TAG, "Data returned for Data type: " + dataSet.getDataType().getName()); 
       SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); 

       for (DataPoint dp : dataSet.getDataPoints()) { 
        Log.i(TAG, "Data point:"); 
        Log.i(TAG, "\tType: " + dp.getDataType().getName()); 
        Log.i(TAG, "\tStart: " + dateFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS))); 
        Log.i(TAG, "\tEnd: " + dateFormat.format(dp.getEndTime(TimeUnit.MILLISECONDS))); 
        for (Field field : dp.getDataType().getFields()) { 
         Log.i(TAG, "\tField: " + field.getName() + 
           " Value: " + dp.getValue(field)); 
        } 
       } 
      } 
     } 
+0

Ты мой герой! : D – seahorsepip

4

Просто для уточнения

PendingResult<DataReadResult> pendingResult = 
      Fitness.HistoryApi.readData(mGoogleApiClient, new DataReadRequest.Builder() 
          .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) 
          .bucketByTime(1, TimeUnit.DAYS) 
          .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
          .build()); 

Retruns DataReadResult со списком ведрами.

PendingResult<DataReadResult> pendingResult = 
      Fitness.HistoryApi.readData(mGoogleApiClient, new DataReadRequest.Builder() 
          .read(DataType.TYPE_STEP_COUNT_DELTA) 
          .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
          .build()); 

Возвращает DataReadResult с DataSet, которые могут быть выбраны с

dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA); 
Смежные вопросы