Registrar dados de condicionamento físico

A API Recording permite que o app solicite armazenamento automatizado de dados do sensor para economizar bateria ao criar assinaturas. Uma assinatura é associada a um app Android e consiste em um tipo de dados de condicionamento físico ou uma fonte de dados específica.

É possível criar várias assinaturas para diferentes tipos de dados ou fontes de dados no seu app. O Google Fit armazena dados de condicionamento físico de assinaturas ativas, mesmo quando o app não está em execução, e restaura essas assinaturas quando o sistema é reiniciado.

Os dados gravados estão disponíveis no histórico de condicionamento físico do usuário. Se você também quiser exibir os dados no seu app em tempo real, use a API Sensors com a API Recording. Para registrar dados de condicionamento físico com metadados de sessão, use a API Sessions.

Assinar dados de condicionamento físico

Para solicitar a coleta em segundo plano de dados do sensor no seu app, use o método RecordingClient.subscribe, conforme mostrado no snippet de código a seguir:

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));

Se a assinatura for adicionada, o Google Fit armazenará os dados de condicionamento físico do tipo TYPE_STEP_COUNT_DELTA no histórico de condicionamento físico em nome do app. Essa assinatura aparece na lista de assinaturas ativas do app.

Para se inscrever em mais tipos de dados de condicionamento físico no seu app, siga as etapas no exemplo anterior, mas forneça um tipo de dado de condicionamento físico diferente a cada vez.

Listar assinaturas ativas

Para ver uma lista das assinaturas ativas para seu app, use o método RecordingClient.listSubscriptions, conforme mostrado no snippet de código abaixo:

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}");
            }
    });
}

Cancelar inscrição nos dados de condicionamento físico

Para interromper a coleta de dados do sensor no app, use o método RecordingClient.unsubscribe, conforme mostrado no snippet de código a seguir:

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.
        });
}