2017-09-26 3 views
0

Je dois obtenir toutes les mesures de fréquence cardiaque, et non le minimum, le maximum et la moyenne, ce que j'ai pu obtenir.Comment obtenir les valeurs de fréquence cardiaque de Google Fit History?

Ceci est le code que j'utilise pour la lecture de ma classe java.

Merci!

private void readDataFitnessHistory() 
{ 
    // Setting a start and end date using a range of 1 week before this moment. 
    Calendar cal = Calendar.getInstance(); 
    Date now = new Date(); 
    cal.setTime(now); 
    long endTime = cal.getTimeInMillis(); 

    cal.add(Calendar.WEEK_OF_YEAR, -1); 
    long startTime = cal.getTimeInMillis(); 

    java.text.DateFormat dateFormat = getDateInstance(); 
    Log.d(TAG, "Range Start: " + dateFormat.format(startTime)); 
    Log.d(TAG, "Range End: " + dateFormat.format(endTime)); 

    DataReadRequest readRequest = new DataReadRequest.Builder() 
      // The data request can specify multiple data types to return, effectively 
      // combining multiple data queries into one call. 
      // In this example, it's very unlikely that the request is for several hundred 
      // datapoints each consisting of a few steps and a timestamp. The more likely 
      // scenario is wanting to see how many steps were walked per day, for 7 days. 
      .aggregate(DataType.TYPE_HEART_RATE_BPM, DataType.AGGREGATE_HEART_RATE_SUMMARY) 
      // Analogous to a "Group By" in SQL, defines how data should be aggregated. 
      // bucketByTime allows for a time span, whereas bucketBySession would allow 
      // bucketing by "sessions", which would need to be defined in code. 
      .bucketByTime(1, TimeUnit.DAYS) 
      .enableServerQueries() 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .build(); 

    // Invoke the History API to fetch the data with the query and await the result of 
    // the read request. 
    DataReadResult dataReadResult = 
      Fitness.HistoryApi.readData(mApiClient, readRequest).await(1, TimeUnit.MINUTES); 
    DataSet dataSet = dataReadResult.getDataSet(DataType.TYPE_HEART_RATE_BPM); 
    showDataSet(dataSet); 
    displayBpmDataForToday(); 


} 

La réponse:

History: Type: com.google.heart_rate.summary 
History: Start: 22 sept. 2017 10:40:06 
D/DBGPRUEBA History: End: 22 sept. 2017 10:40:06 
D/DBGPRUEBA History: Field: average Value: 71.13179 
D/DBGPRUEBA History: Field: max Value: 86.0 
D/DBGPRUEBA History: Field: min Value: 55.0 
+0

Est-ce que TYPE_HEART_RATE_BPM (battements par minute) n'est pas ce que vous demandez? – Cadet

+0

Si oui, mais ce dont j'ai besoin est d'obtenir toutes les mesures dans la plage de temps indiquée, et non le minimum, maximum et moyenne, de la plage de temps indiquée. – ja12

+0

Je ne pense pas que ce ne soit pas encore possible. Comme indiqué dans [documentation] (https://developers.google.com/fit/android/data-types), vous pouvez uniquement utiliser le type de données 'com.google.heart_rate.summary' pour obtenir la moyenne, le maximum et battements minimum par minute pour un intervalle de temps. – abielita

Répondre

0

Je réponds à ma propre question.

Afin d'obtenir tous les points de données des lectures faites avec Google Fit Api, le DataRsult objet de construire serait la suivante:

final DataReadRequest readRequest = new DataReadRequest.Builder() 
.read(DataType.TYPE_STEP_COUNT_DELTA) 
.read(DataType.TYPE_HEART_RATE_BPM) 
.enableServerQueries() 
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
.build(); 

Il retournera tous les points de données dans la plage spécifiée.