Créer une application de base de remise en forme

Ce guide vous explique comment créer une application mobile de base de compteur de pas, qui est une base courante pour de nombreuses applications de santé et de remise en forme.

Ce workflow intègre les API suivantes:

  • SensorManager pour récupérer les données de pas à partir d'un appareil mobile.
  • Espace pour le stockage des données locales
  • Santé Connect pour stocker et partager des données de santé et de remise en forme sur l'appareil.

Pour obtenir une assistance supplémentaire sur la lecture des données et les outils nécessaires, consultez Utiliser le Gestionnaire de capteurs Android pour suivre les pas à partir d'un appareil mobile.

Si vous n'avez pas encore configuré votre environnement de développement pour utiliser Santé Connect, suivez ces étapes de démarrage.

Demander des autorisations sur un appareil portable

Avant d'obtenir des données d'exercice, vous devez demander et obtenir les autorisations appropriées.

Il est recommandé de ne demander que les autorisations dont vous avez besoin et de demander chaque autorisation en contexte, au lieu de demander toutes les autorisations simultanément lorsque l'utilisateur démarre l'application.

Le capteur de pas, sur lequel s'appuient de nombreuses applications d'exercice, utilise l'autorisation ACTIVITY_RECOGNITION. Ajoutez cette autorisation dans votre fichier AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools">

  <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

</manifest>

Pour demander l'autorisation ACTIVITY_RECOGNITION au moment de l'exécution, consultez la documentation sur les demandes d'autorisation.

Vous devez également déclarer un FOREGROUND_SERVICE dans le fichier manifeste. Comme vous demandez l'autorisation ACTIVITY_RECOGNITION, déclarez FOREGROUND_SERVICE_TYPE_HEALTH:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_HEALTH"/>

Consultez la page Services de premier plan pour en savoir plus sur les services de premier plan et les types de services de premier plan.

Gérer l'état de l'UI à l'aide d'un ViewModel

Pour gérer correctement l'état de l'UI, utilisez un ViewModel. Jetpack Compose et ViewModels vous permettent d'examiner ce workflow plus en détail.

Utilisez également la couche d'interface utilisateur, qui est essentielle pour créer des interfaces utilisateur avec Compose et qui vous permet de suivre les bonnes pratiques en matière d'architecture, telles que le flux de données unidirectionnel. Pour en savoir plus sur la superposition de l'interface utilisateur, consultez la documentation sur la couche de l'interface utilisateur.

Dans cet exemple d'application, l'UI présente trois états de base:

  • Chargement:affiche un cercle en rotation.
  • Contenu:affiche des informations sur le nombre de pas que vous avez effectués aujourd'hui.
  • Erreur:affiche un message en cas de problème.

ViewModel expose ces états en tant que Flow Kotlin. Utilisez une classe scellée pour contenir les classes et les objets représentant les états possibles:

class TodayScreenViewModel(...) {

  val currentScreenState: MutableStateFlow<TodayScreenState> = MutableStateFlow(Loading)

  [...]

}

sealed class TodayScreenState {
    data object Loading : TodayScreenState()
    data class Content(val steps: Long, val dailyGoal: Long) : TodayScreenState()
    data object Error: TodayScreenState()
}

Compose UI collecte ensuite ce Flow en tant que State Compose et l'utilise:

val state: TodayScreenState = todayScreenViewModel.currentScreenState.collectAsState().value