2016-07-21 5 views
0

Android (6.0) 전화에서 Google 피트니스에서 지난 10 일간의 데이터를 가져 오려고합니다. 현재 날짜 데이터를 올바르게 반환하지만 어제 또는 그 전에 데이터를 가져 오려고하면 무작위 또는 잘못된 데이터가 반환됩니다.Google 피트니스 (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); 
     } 
    } 

이전 단계를 수행하는 방법을 알려주십시오. 또는 왜 내가 잘못된 데이터를 얻고 있는가? 에 표시되는대로 정확한 또는 "파생 된"데이터를 얻을 것이다 이런 식으로

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에

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(); 

및 배치 : 감사

+0

가능한 복제본 http://stackoverflow.com/questions/28234525/fetching-google-fit-data-into-android-application?rq=1 –

+0

정확한 코드를 실행했는데 데이터가 정상적으로 보입니다. –

답변

0

는 다음과 같이 사용자 정의 데이터 소스를 사용하여 Google 피트니스 앱