Benutzerdefinierte Datentypen

Wenn deine App Informationen erfassen muss, die noch nicht durch einen der vorhandenen Datentypen auf der Google Fit-Plattform abgedeckt sind, kannst du einen benutzerdefinierten Datentyp erstellen.

Benutzerdefinierte Datentypen erstellen

Erstellen oder geben Sie einen benutzerdefinierten Datentyp an, um benutzerdefinierte Daten zu erfassen. Wenn Sie benutzerdefinierte Datentypen erstellen, achten Sie auf Folgendes:

  • Der Name des Datentyps stellt die zugrunde liegenden Daten korrekt dar.
  • Das Präfix des Datentypnamens entspricht dem Paketnamen Ihrer App.

Android

Verwenden Sie zum erstmaligen Erstellen eines benutzerdefinierten Datentyps die Methode ConfigClient.createCustomDataType:

val request = DataTypeCreateRequest.Builder()
    // The prefix of your data type name must match your app's package name
    .setName("com.packagename.appname.custom_data_type") // Add some custom fields, both int and float
    .addField("field1", Field.FORMAT_INT32)
    .addField("field2", Field.FORMAT_FLOAT)
    // Add some common fields
    .addField(Field.FIELD_ACTIVITY)
    .build()

Fitness.getConfigClient(this, account)
    .createCustomDataType(request)
    .addOnSuccessListener { dataType ->
        // Use this custom data type to insert data into your app.
        Log.d(TAG, "Created data type: ${dataType.name}")
    }

REST

Datentypen sind in der REST API eine Eigenschaft von Datenquellen. Wenn Sie benutzerdefinierte Daten erfassen möchten, müssen Sie eine Datenquelle erstellen und dann den Datentyp angeben:

  1. Rufen Sie die REST API auf, um eine neue Datenquelle zu erstellen. Beispiel: FlexibilityMeasure.
  2. Geben Sie dem Datentyp einen eindeutigen Namen, der die erfassten Daten möglichst genau beschreibt.

  3. Geben Sie die Felder des Datentyps und deren Formate an.

HTTP-Methode

POST

Anfrage-URL

https://www.googleapis.com/fitness/v1/users/me/dataSources

Anfragetext

{
  "dataStreamName": "FlexibilityMeasure",
  "type": "raw",
  "application": {
    "detailsUrl": "http://recoveryapps.com",
    "name": "Stretch Flex",
    "version": "1"
  },
  "dataType": {
    "name": "com.recoveryapps.stretchflex.flexibility",
    "field": [
     {
      "name": "ankle_range_degrees",
      "format": "integer"
     },
     {
      "name": "wrist_range_degrees",
      "format": "integer",
      "optional": true
     }
    ]
   }
}

Antwort

Wenn die Datenquelle erstellt wurde, wird der HTTP-Antwortstatuscode 200 OK angezeigt. Der Antworttext enthält eine JSON-Darstellung der Datenquelle, einschließlich eines datasource.dataStreamId-Attributs. Verwenden Sie diese ID als dataSourceId, um Daten hinzuzufügen.

Benutzerdefinierte Datentypen verwenden

Android

Konvertieren Sie den Namen Ihres benutzerdefinierten Datentyps mit der Methode ConfigClient.readDataType aus einem String (com.packagename.appname.custom_data_type) in ein DataType-Objekt. Verwenden Sie das zurückgegebene Objekt zum Einfügen und Lesen von benutzerdefinierten Daten.

Fitness.getConfigClient(this, account)
    .readDataType("com.packagename.appname.custom_data_type")
    .addOnSuccessListener { dataType ->
        // Use this custom data type to insert data into your app.
        Log.d(TAG, "Retrieved data type: ${dataType.name}")
    }

REST

Wenn Sie mit Ihren benutzerdefinierten Datentypen benutzerdefinierte Daten hinzufügen oder lesen möchten, benötigen Sie deren Datenquellen. Zum Prüfen der Datenquellen eines benutzerdefinierten Datentyps senden Sie eine GET-Anfrage an die REST API.

Benutzerdefinierte Daten hinzufügen

Um benutzerdefinierte Daten einzufügen, erstellen Sie ein Dataset mit neuen Datenpunkten. Geben Sie die Datenquelle an, die Sie für den benutzerdefinierten Datentyp erstellt haben. Für die Datenpunkte müssen alle korrekten Felder und Formate in Ihrem benutzerdefinierten Datentyp angegeben sein.

Benutzerdefinierte Daten lesen

Wenn Sie benutzerdefinierte Daten lesen möchten, geben Sie die Datenquelle an, die Sie für Ihren benutzerdefinierten Datentyp erstellt haben, wenn Sie Datenpunkte von der Google Fit-Plattform abrufen.