2016-07-21 6 views
0

Ich versuche, die letzten 10 Tage Daten von Google Fit in Android (6.0) Telefon zu bekommen. Es gibt die Daten des aktuellen Tages korrekt zurück, aber wenn ich versuche, Daten für gestern oder davor abzurufen, gibt es zufällige oder falsche Daten zurück.Google Fit (Android) Erhalten Sie die letzten 10 Tage Daten

// 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); 
     } 
    } 

Bitte helfen Sie mir, wie Sie die Schritte der vorherigen Tage bekommen. Oder warum bekomme ich falsche Daten? dank

+0

möglich Duplikat von http://StackOverflow.com/Questions/28234525/Fetching-Google-Fit-Data-Into-Anando-Application?Rq=1 –

+0

Ich lief Ihren genauen Code und meine Daten sieht gut aus. –

Antwort

0

Verwenden Sie eine benutzerdefinierte Datasource als:

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

und legen Sie sie in der DataReadRequest als

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

Auf diese Weise erhalten Sie die genaue oder „abgeleitet“ Daten erhalten, wie in der angezeigten Google Fit App

Verwandte Themen