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