2017-06-28 5 views
0

Ich arbeite an der Fitness-App. Ich benötige Informationen über die Recording_API, um die Anzahl der Schritte, verbrannten Kalorien und zurückgelegte Strecke zu erfassen. Ich bin in der Lage, die Schritte erfolgreich zu zählen, aber nicht in der Lage, die aktiven Kalorien und die Entfernung zu erhalten. Unten setze ich den Code um die Kalorien zu verbrennen.Aktiver Kalorienverbrauch mit der Google-Funktion erhalten Recording_API

googleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Fitness.HISTORY_API) 
      .addApi(Fitness.RECORDING_API) 
      .addApi(Fitness.CONFIG_API) 
      .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ)) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .enableAutoManage(this, 0, this) 
      .build(); 

Fitness.RecordingApi.subscribe(googleApiClient, DataType.TYPE_CALORIES_EXPENDED) 
      .setResultCallback(new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        if (status.isSuccess()) { 
         if (status.getStatusCode() == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) { 
          Log.e("RecordingAPI", "Already subscribed to the Recording API"); 
         } else { 
          Log.e("RecordingAPI", "Subscribed to get Calories using Recording API"); 
         } 
        } 
       } 
      }); 



new DataReadRequest.Builder() 
      .aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED) 
      .bucketByActivitySegment(1, TimeUnit.MILLISECONDS) 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .build(); 



Fitness.HistoryApi.readData(mClient, readRequest).await(1, TimeUnit.MINUTES); 

if (dataReadResult.getBuckets().size() > 0) { 
     for (Bucket bucket : dataReadResult.getBuckets()) { 
      String bucketActivity = bucket.getActivity(); 
      if (bucketActivity.contains(FitnessActivities.WALKING)) { 
       List<DataSet> dataSets = bucket.getDataSets(); 
       for (DataSet dataSet : dataSets) { 
        dumpDataSet(dataSet); 
       } 
      } 
     } 
} 



for (DataPoint dp : dataSet.getDataPoints()) { 
     if (dp.getEndTime(TimeUnit.MILLISECONDS) > dp.getStartTime(TimeUnit.MILLISECONDS)) { 
      for (Field field : dp.getDataType().getFields()) { 
       expendedCalories = expendedCalories + dp.getValue(field).asFloat(); 
      } 
     } 
} 

In dem obigen Code kommt die Eimer Aktivität unbekannt und leer datapoints kommt wegen der ich nicht in der Lage bin, die Kalorien zu bekommen. Zuvor benutzte ich die HISTORY_API, mit der ich in der Lage bin, alle Informationen richtig zu bekommen, aber es funktioniert nur, wenn der Benutzer einen Google-Fit-Account hat, sonst gibt es die leeren Ergebnisse. Kann mir bitte jemand dabei helfen.

Antwort

0

Sie sagte:

Es wird nur funktionieren, wenn der Benutzer fit Konto anders ist Google hat es die leeren Ergebnisse. Kann mir bitte jemand dabei helfen.

Gemäß dieser Quickstart for Android Google Fitness Document ist es wirklich erforderlich, Google-Konto, um Fit-APIs zu verwenden.

Schritt 1: Holen Sie sich ein Google-Konto

den Google Fit-APIs verwenden zu können, benötigen Sie ein Google-Konto. Wenn Sie bereits ein Konto haben, dann sind Sie fertig. Sie können auch ein separates Google-Konto für Testzwecke erstellen, das den Namen hat.

+0

Es funktioniert, Sie benötigen nur Google-Konto ** NICHT ** Google Fit-Konto. – user1770346

+0

Übrigens kann ich jetzt die aktiven Kalorien mit RECORDING_API brennen. Vielen Dank für Ihre Antwort – user1770346

Verwandte Themen