2016-06-20 2 views
1

ich den folgenden Code haben den Schritt zu bekommenInterpretation der Wert Schritt in onDataPoint in Google erhalten passen

@Override 
public void onDataPoint(DataPoint dataPoint) { 
    for (final Field field : dataPoint.getDataType().getFields()) { 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       steps = dataPoint.getValue(field).asInt(); 
       Log.d(TAG, "Steps: " + steps); 
      } 
     }); 
    } 
} 

zählen Was habe ich herausgefunden:

  1. Dieser Wert Schritt ist nicht der aktuelle Tages Schritt Wert. Wenn sich der Tag ändert, wird der Schrittwert nicht auf 0 zurückgesetzt und erhöht sich weiter.
  2. Es ist nicht die Summe aller vorherigen Schritte, weil meine kumulativen Schritte nahe 51.000 sind, während es derzeit um 2000 zeigt.
  3. Immer wenn ich den Code ausführen wird der Wert der Schritte nicht auf 0 zurückgesetzt, so dass es dauert in einigen Werten der Vergangenheit.
  4. Wenn ich die App deinstallieren und neu installieren, beginnt es nach wie vor von 2000.

Ich möchte wissen, was genau dataPoint.getValue(field).asInt() ist, wenn das Zählen Schritte?

Antwort

0

Datapoint ist wie folgt definiert:

  • Repräsentiert einen einzelnen Datenpunkt in einem Strom von Datentyp von einer bestimmten data source. Ein Datenpunkt enthält einen Wert für jedes Feld, einen Zeitstempel und eine optionale Startzeit. Die genaue Semantik jedes dieser Attribute ist in der Dokumentation für den jeweiligen Datentyp angegeben, die in der entsprechenden Konstante in DataType zu finden ist.

  • Ein Datenpunkt kann eine augenblickliche Messung, ein Lesen oder eine eingegebene Beobachtung sowie Mittelwerte oder Aggregate über ein Zeitintervall darstellen. Überprüfen Sie anhand der Datentypdokumentation, was für einen bestimmten Datentyp der Fall ist.

  • DataPoints enthalten immer einen Wert für jedes Feld des Datentyps. Anfangs sind alle Werte nicht festgelegt. Nach dem Erstellen des Datenpunkts sollten die entsprechenden Werte und Zeitstempel festgelegt werden.

öffentlicher Wert getValue (Field Feld)

Gibt den Wert Halter für das Feld mit dem angegebenen Namen. Mit dieser Methode kann sowohl der Wert abgefragt als auch eingestellt werden.

Erstellen von Datenpunkten von benutzerdefinierten Datentypen:

// Create a data point for a data source that provides 
// data of type "com.app.custom_data_type" (created above) 
DataPoint dataPoint = DataPoint.create(myDataSource); 

// Set values for the data point 
// This data type has two custom fields (int, float) and a common field 
dataPoint.getValue(0).setInt(mField1IntValue); 
dataPoint.getValue(1).setFloat(mField2FloatValue); 
dataPoint.getValue(Field.FIELD_ACTIVITY).setInt(mActivityValue); 

Wenn Sie benutzerdefinierte Datentypen erstellen, die sowohl int und float Felder enthalten, können Sie nicht die DataPoint.setFloatValues() und DataPoint.setIntValues() Methoden für diese Felder verwenden können. Erhalten Sie in diesem Fall die Komponenten des Datenpunkts und weisen Sie jeder Komponente einzeln einen Wert zu

+0

Danke für die Antwort. Können Sie mir die Logik hinter dem Wert mitteilen, der angezeigt wird, wenn 'dataPoint.getValue (field)' ausgeführt wird? Bitte beachten Sie meine Beobachtungen in der Frage. – suku

Verwandte Themen