Créer une application de base de remise en forme

Ce guide vous accompagne dans la création d'une application mobile de compteur de pas basique, qui est une base commune à de nombreux domaines Applications de fitness.

Ce workflow intègre les API suivantes:

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

Pour une assistance supplémentaire concernant la lecture des données et les outils nécessaires, reportez-vous à la section Utiliser Android Sensor Manager pour suivre les pas effectués depuis un appareil mobile

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

Demander des autorisations sur un appareil portable

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

Nous vous recommandons de ne demander que les autorisations dont vous avez besoin Demandez chaque autorisation en contexte, au lieu de toutes les demander. les autorisations à la fois lorsque l’utilisateur démarre l’application.

Le capteur de pas, utilisé par 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 documentation sur les demandes d'autorisation.

Vous devez également déclarer un FOREGROUND_SERVICE dans le fichier manifeste. Puisque vous demandent 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 les 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'interface utilisateur, utilisez un ViewModel. Jetpack Compose et ViewModels vous permettent d'en savoir plus à ce sujet. du workflow.

Vous pouvez également utiliser les couches d'interface utilisateur, qui sont essentielles pour créer des interfaces utilisateur avec Compose. et vous permet de suivre les bonnes pratiques en matière d'architecture, comme Flux de données unidirectionnel. Pour en savoir plus sur les couches d'interface utilisateur, consultez Documentation sur la couche d'interface utilisateur

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

  • Chargement en cours:affiche un cercle en rotation.
  • Contenu:affiche des informations sur vos pas pour la journée.
  • Erreur:affiche un message en cas de problème.

ViewModel expose ces états sous la forme d'un Flow Kotlin. Utilisez une classe scellée pour contiennent les classes et les objets qui représentent 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()
}

L'UI Compose collecte ensuite ce Flow en tant que State Compose et agit en conséquence:

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