2016-07-21 18 views
0

Android(6.0)でGoogle Fitの過去10日間のデータを取得しようとしています。今日のデータを正しく返しますが、昨日または前にデータを取得しようとすると、ランダムまたは間違ったデータが返されます。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 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(ESTIMATED_STEP_DELTAS, DataType.AGGREGATE_STEP_COUNT_DELTA) 
      .bucketByActivityType(1, TimeUnit.SECONDS) 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .build(); 

としてDataReadRequestに置きますGoogle Fitアプリ

関連する問題