2016-07-21 2 views
0

Я пытаюсь получить последние 10 дней данные из Google Fit на Android (6.0). Он корректно возвращает данные текущего дня, но когда я пытаюсь получить данные за вчера или до этого, он возвращает случайные или неправильные данные.Google Fit (Android) Получить последние 10 дней данные

// get the start and end date of the urrent mobile 
    Calendar cal = Calendar.getInstance(); 
    Date now = new Date(); 
    cal.setTime(now); 
    long endTime = cal.getTimeInMillis(); 
    cal.add(Calendar.DAY_OF_YEAR, -10); 
    long startTime = cal.getTimeInMillis(); 
    java.text.DateFormat dateFormat = DateFormat.getDateInstance(); 

    //-------------steps------------------------------- 
    //code to get last 10 days steps 
    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(); 

    DataReadResult dataReadResult=null; 
    dataReadResult = Fitness.HistoryApi.readData(mGoogleApiClient, readRequest).await(1, TimeUnit.MINUTES); 

    // display data 
    //Used for aggregated data 
    if (dataReadResult.getBuckets().size() > 0) { 
     Log.e("History", "Number of buckets: " + dataReadResult.getBuckets().size()); 
     for (Bucket bucket : dataReadResult.getBuckets()) { 
     List<DataSet> dataSets = bucket.getDataSets(); 
     for (DataSet dataSet : dataSets) { 
      showDataSet(dataSet); 
     } 
     } 
    } 
    else if (dataReadResult.getDataSets().size() > 0) //Used for non-aggregated data 
    { 
     Log.e("History", "Number of returned DataSets: " + dataReadResult.getDataSets().size()); 
     for (DataSet dataSet : dataReadResult.getDataSets()) { 
     showDataSet(dataSet); 
     } 
    } 

Пожалуйста, помогите мне в том, как получить шаги предыдущих дней. Или почему я получаю неправильные данные. благодаря

+0

Возможный дубликат http://stackoverflow.com/questions/28234525/fetching-google-fit-data-into-android-application?rq=1 –

+0

Я запустил ваш точный код, и мои данные выглядят нормально. –

ответ

0

Использование пользовательских DataSource как:

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, как

DataReadRequest readRequest = new DataReadRequest.Builder() 
      .aggregate(ESTIMATED_STEP_DELTAS, DataType.AGGREGATE_STEP_COUNT_DELTA) 
      .bucketByActivityType(1, TimeUnit.SECONDS) 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .build(); 

Таким образом, вы получите точные или «полученные» данные, как показано в Приложение Google Fit.