Registrare i dati sull'attività fisica

L'API Recording consente all'app di richiedere l'archiviazione automatica dei dati dei sensori in modo efficiente dal punto di vista della batteria creando abbonamenti. Un abbonamento è associato a un'app Android ed è costituito da un tipo di dati relativi all'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 archivia 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 i dati nella tua app anche in tempo reale, utilizza l'API Sensors insieme all'API Recording. Per registrare i dati sull'attività fisica con i metadati della sessione, utilizza l'API Sessions.

Iscriversi 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 archivia i dati di fitness di tipo TYPE_STEP_COUNT_DELTA nella cronologia dell'attività per conto della tua app. Questo abbonamento viene visualizzato nell'elenco degli abbonamenti attivi per la tua app.

Per abbonarti a più tipi di dati sull'attività fisica nella tua app, segui i passaggi nell'esempio precedente, ma fornisci ogni volta un tipo di dati sull'attività fisica diverso.

Elenca iscrizioni attive

Per ottenere un elenco degli abbonamenti attivi per la tua app, utilizza 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.
        });
}