Registrare i dati sull'attività fisica

L'API Recording consente alla tua app di richiedere l'archiviazione automatica dei dati dei sensori in modo efficiente dalla batteria creando abbonamenti. Un abbonamento è associato a un'app per Android ed è costituito da un tipo di dati sull'attività fisica o da un'origine dati specifica.

Puoi creare più abbonamenti per diversi tipi di dati o origini dati nella tua app. Google Fit memorizza i dati relativi all'attività fisica degli abbonamenti attivi, anche quando l'app non è in esecuzione, e li ripristina al riavvio del sistema.

I dati registrati sono disponibili nella cronologia dell'attività fisica dell'utente. Se vuoi mostrare anche i dati nella tua app in tempo reale, utilizza l'API Sensors insieme all'API Recording. Per registrare i dati sull'attività fisica con i metadati di sessione, utilizza l'API Sessions.

Abbonarsi ai dati sull'attività fisica

Per richiedere la raccolta in background dei dati dei sensori nella tua app, utilizza il metodo RecordingClient.subscribe, come mostrato nel seguente snippet di codice:

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 l'abbonamento viene aggiunto correttamente, Google Fit memorizza i dati sull'attività fisica di tipo TYPE_STEP_COUNT_DELTA nella cronologia dell'attività fisica per conto della tua app. L'abbonamento viene visualizzato nell'elenco degli abbonamenti attivi per la tua app.

Per abbonarti ad altri tipi di dati sull'attività fisica nella tua app, segui la procedura nell'esempio precedente, ma fornisci ogni volta un tipo di dati sull'attività fisica diverso.

Elenca abbonamenti attivi

Per visualizzare un elenco degli abbonamenti attivi per la tua app, usa il metodo RecordingClient.listSubscriptions, come mostrato nel seguente snippet di codice:

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

Annulla l'iscrizione ai dati sull'attività fisica

Per interrompere la raccolta dei dati dei sensori nella tua app, utilizza il metodo RecordingClient.unsubscribe, come mostrato nel seguente snippet di codice:

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