Nagrywanie subskrypcji pozwala aplikacji na żądanie automatycznego przechowywania danych z czujników w sposób, który oszczędza baterię. Subskrypcja jest powiązana z aplikacją na Androida i obejmuje typ danych o aktywności fizycznej lub określone źródło danych.
W aplikacji możesz utworzyć wiele subskrypcji dla różnych typów danych i źródeł danych. Google Fit przechowuje dane o aktywności fizycznej z aktywnych subskrypcji, nawet gdy aplikacja nie jest uruchomiona, i przywraca te subskrypcje po ponownym uruchomieniu systemu.
Zapisane dane są dostępne w historii aktywności fizycznej użytkownika. Jeśli chcesz też wyświetlać dane w aplikacji w czasie rzeczywistym, użyj interfejsu Sensors API w połączeniu z interfejsem Logging API. Aby rejestrować dane o sprawności fizycznej z metadanymi sesji, użyj interfejsu Sessions API.
Subskrybuj dane fitnessowe
Aby poprosić o gromadzenie w aplikacji danych z czujnika w tle, użyj metody RecordingClient.subscribe
, jak pokazano w tym fragmencie kodu:
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));
Jeśli dodasz subskrypcję, Google Fit będzie przechowywać w historii aktywności fizycznej w imieniu Twojej aplikacji dane o aktywności fizycznej typu TYPE_STEP_COUNT_DELTA
. Ta subskrypcja pojawi się na liście aktywnych subskrypcji Twojej aplikacji.
Aby zasubskrybować więcej typów danych o aktywności fizycznej w aplikacji, wykonaj czynności opisane w poprzednim przykładzie, ale za każdym razem podaj inny typ danych o aktywności fizycznej.
Wyświetl listę aktywnych subskrypcji
Aby uzyskać listę aktywnych subskrypcji aplikacji, użyj metody RecordingClient.listSubscriptions
, tak jak w tym fragmencie kodu:
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}"); } }); }
Anulowanie subskrypcji danych o aktywności fizycznej
Aby przerwać zbieranie danych z czujników w aplikacji, użyj metody RecordingClient.unsubscribe
, jak pokazano w tym fragmencie kodu:
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. }); }