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