Registrar dados de condicionamento físico

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

Você pode criar várias assinaturas para diferentes tipos 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 registrados ficam disponíveis no histórico de condicionamento físico do usuário. Se você também quiser mostrar os dados no app em tempo real, use a API Sensors e a API Recording. Para registrar dados de condicionamento físico com metadados da sessão, use a API Sessions.

Inscrever-se nos dados de condicionamento físico

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

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á dados de condicionamento físico do tipo TYPE_STEP_COUNT_DELTA no histórico de condicionamento físico em nome do seu app. Essa assinatura aparece na lista de assinaturas ativas do seu app.

Para se inscrever em mais tipos de dados de condicionamento físico no seu app, siga as etapas no exemplo anterior, mas sempre informe um tipo de dado de condicionamento físico diferente.

Listar assinaturas ativas

Para conferir uma lista das assinaturas ativas do seu app, use o método RecordingClient.listSubscriptions, conforme mostrado no snippet de código a seguir.

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 abaixo.

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