API записи позволяет вашему приложению запрашивать автоматическое хранение данных датчиков, экономя заряд батареи, путем создания подписок. Подписка связана с приложением Android и состоит из типа данных о фитнесе или определенного источника данных.
Вы можете создать несколько подписок для разных типов данных или источников данных в своем приложении. Google Fit сохраняет данные о фитнесе из активных подписок, даже если ваше приложение не запущено, и восстанавливает эти подписки при перезапуске системы.
Записанные данные доступны в истории фитнеса пользователя. Если вы также хотите отображать данные в своем приложении в режиме реального времени, используйте API датчиков вместе с API записи. Чтобы записать данные о фитнесе с метаданными сеанса, используйте Sessions API .
Подписаться на фитнес-данные
Чтобы запросить фоновый сбор данных датчиков в вашем приложении, используйте метод RecordingClient.subscribe
, как показано в следующем фрагменте кода:
Котлин
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) }
Ява
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));
Если подписка добавлена успешно, Google Fit сохраняет данные о фитнесе типа TYPE_STEP_COUNT_DELTA
в истории фитнеса от имени вашего приложения. Эта подписка появится в списке активных подписок вашего приложения.
Чтобы подписаться на дополнительные типы данных о фитнесе в вашем приложении, выполните действия, описанные в предыдущем примере, но каждый раз указывайте другой тип данных о фитнесе.
Список активных подписок
Чтобы получить список активных подписок для вашего приложения, используйте метод RecordingClient.listSubscriptions
, как показано в следующем фрагменте кода:
Котлин
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}") } }
Ява
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}"); } }); }
Отписаться от фитнес-данных
Чтобы остановить сбор данных датчиков в вашем приложении, используйте метод RecordingClient.unsubscribe
, как показано в следующем фрагменте кода:
Котлин
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. }
Ява
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. }); }