Creare un'app per il fitness di base

Questa guida illustra come creare un'app contapassi per dispositivi mobili di base, che è una base comune per molte app di App per il fitness.

Questo flusso di lavoro integra le seguenti API:

  • SensorManager per il recupero dei dati dei passi da un dispositivo mobile.
  • Spazio per l'archiviazione locale dei dati.
  • Connessione Salute per archiviare e condividere dati relativi a salute e attività fisica sul dispositivo.

Per ulteriore assistenza sulla lettura dei dati e sugli strumenti necessari, fai riferimento all'articolo Utilizzare Gestione sensori di Android per monitorare i passi da un dispositivo mobile.

Se non hai già configurato l'ambiente di sviluppo per l'utilizzo Connessione Salute, segui queste istruzioni come iniziare passaggi.

Richiedi autorizzazioni sul dispositivo portatile

Prima di ottenere i dati sull'allenamento, devi richiedere e ricevere i dati appropriati autorizzazioni aggiuntive.

Come best practice, richiedi solo le autorizzazioni di cui hai bisogno e assicurati di richiedi ogni autorizzazione nel contesto, invece di richiedere tutte autorizzazioni contemporaneamente quando l'utente avvia l'app.

Il sensore contapassi, utilizzato da molte app per l'allenamento, utilizza il Autorizzazione ACTIVITY_RECOGNITION. Aggiungi questa autorizzazione al file AndroidManifest.xml file:

<?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>

Per richiedere l'autorizzazione ACTIVITY_RECOGNITION in fase di runtime, consulta documentazione sulla richiesta di autorizzazione.

Dovrai anche dichiarare FOREGROUND_SERVICE nel file manifest. Dato che richiedono l'autorizzazione ACTIVITY_RECOGNITION, dichiara FOREGROUND_SERVICE_TYPE_HEALTH:

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

Visita la sezione Servizi in primo piano. per saperne di più sui servizi in primo piano e sui tipi di servizi in primo piano.

Gestione dello stato dell'interfaccia utente tramite un ViewModel

Per gestire correttamente lo stato della UI, utilizza un ViewModel. Jetpack Compose e ViewModels offrono un'analisi più approfondita di questo nel tuo flusso di lavoro.

Inoltre, utilizza la suddivisione in livelli della UI, che è una parte fondamentale per la creazione di UI con Compose e ti consente di seguire le best practice sull'architettura, come Flusso di dati unidirezionale. Per ulteriori informazioni sulla disposizione dei livelli di UI, consulta documentazione sul livello UI.

In questa app di esempio, la UI ha tre stati di base:

  • Caricamento:mostra un cerchio che gira.
  • Contenuti: mostra informazioni sui tuoi passi per oggi.
  • Errore: mostra un messaggio quando si verifica un problema.

ViewModel espone questi stati come Flow Kotlin. usa una classe sigillata per contengono le classi e gli oggetti che rappresentano gli stati possibili:

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()
}

La UI di Compose raccoglie quindi questo Flow come State di Compose e agisce su di esso:

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