Registrar datos de entrenamiento

La API de Grabación permite que tu app solicite suscripciones de almacenamiento automático de datos de sensores con uso eficiente de la batería mediante la creación de suscripciones. Una suscripción está asociada con una app para Android y consiste en un tipo de datos de entrenamiento o una fuente de datos específica.

Puedes crear varias suscripciones para diferentes tipos de datos o fuentes de datos en tu app. Google Fit almacena datos de entrenamiento de suscripciones activas, incluso cuando tu app no está en ejecución, y restablece estas suscripciones cuando se reinicia el sistema.

Los datos registrados están disponibles en el historial de entrenamiento del usuario. Si también deseas mostrar los datos en tu app en tiempo real, usa la API de Sensors junto con la API de Recording. Para registrar datos de entrenamiento con metadatos de sesión, usa la API de sesiones.

Suscribirse a datos de entrenamiento

Para solicitar la recopilación en segundo plano de los datos del sensor de tu app, usa el método RecordingClient.subscribe, como se muestra en el siguiente fragmento de código:

Kotlin

Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
    // This example shows subscribing to a DataType, across all possible data
    // sources. Alternatively, a specific DataSource can be used.
    .subscribe(DataType.TYPE_STEP_COUNT_DELTA)
    .addOnSuccessListener {
        Log.i(TAG, "Successfully subscribed!")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "There was a problem subscribing.", e)
    }

Java

Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
        // This example shows subscribing to a DataType, across all possible
        // data sources. Alternatively, a specific DataSource can be used.
        .subscribe(DataType.TYPE_STEP_COUNT_DELTA)
        .addOnSuccessListener(unused ->
                Log.i(TAG, "Successfully subscribed!"))
        .addOnFailureListener( e ->
        Log.w(TAG, "There was a problem subscribing.", e));

Si la suscripción se agrega correctamente, Google Fit almacena los datos de entrenamiento de tipo TYPE_STEP_COUNT_DELTA en el historial de entrenamiento en nombre de tu app. Esta suscripción aparece en la lista de suscripciones activas de tu app.

Para suscribirte a más tipos de datos de entrenamiento en tu app, sigue los pasos del ejemplo anterior, pero proporciona un tipo de datos de entrenamiento diferente cada vez.

Enumerar suscripciones activas

Para obtener una lista de las suscripciones activas de tu app, usa el método RecordingClient.listSubscriptions, como se muestra en el siguiente fragmento de código:

Kotlin

Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
    .listSubscriptions()
    .addOnSuccessListener { subscriptions ->
        for (sc in subscriptions) {
            val dt = sc.dataType
            Log.i(TAG, "Active subscription for data type: ${dt.name}")
        }
    }

Java

Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
        .listSubscriptions()
        .addOnSuccessListener(subscriptions -> {
            for (Subscription sc : subscriptions) {
                DataType dt = sc.getDataType();
                Log.i(TAG, "Active subscription for data type: ${dt.name}");
            }
    });
}

Anular la suscripción a los datos de entrenamiento

Para detener la recopilación de datos del sensor en tu app, usa el método RecordingClient.unsubscribe, como se muestra en el siguiente fragmento de código:

Kotlin

Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
    // This example shows unsubscribing from a DataType. A DataSource should
    // be used where the subscription was to a DataSource. Alternatively, if
    // the client doesn't maintain its subscription information, they can use
    // an element from the return value of listSubscriptions(), which is of
    // type Subscription.
    .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA)
    .addOnSuccessListener {
        Log.i(TAG,"Successfully unsubscribed.")
    }
    .addOnFailureListener { e->
        Log.w(TAG, "Failed to unsubscribe.")
        // Retry the unsubscribe request.
    }

Java

Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions))
        // This example shows unsubscribing from a DataType. A DataSource
        // should be used where the subscription was to a DataSource.
        // Alternatively, if the client doesn’t maintain its subscription
        // information, they can use an element from the return value of
        // listSubscriptions(), which is of type Subscription.
        .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA)
        .addOnSuccessListener(unused ->
            Log.i(TAG,"Successfully unsubscribed."))
        .addOnFailureListener(e -> {
            Log.w(TAG, "Failed to unsubscribe.");
            // Retry the unsubscribe request.
        });
}