Dieser Leitfaden führt Sie durch die Erstellung einer einfachen mobilen Schrittzähler-App, ist eine gemeinsame Grundlage für viele Gesundheits- und Fitness-Apps.
Dieser Workflow integriert die folgenden APIs:
- SensorManager zum Abrufen von Schrittdaten von einem Mobilgerät
- Raum für lokale Datenspeicherung.
- Health Connect zum Speichern und Teilen von Gesundheits- und Fitnessdaten auf dem Gerät
Weitere Unterstützung beim Lesen von Daten und den erforderlichen Tools finden Sie unter Verwendung Android Sensor Manager, um Schritte über ein Mobilgerät zu erfassen.
Wenn Sie Ihre Entwicklungsumgebung für die Verwendung von Health Connect, folge diesen Erste Schritte Schritte.
Berechtigungen auf Handheld-Gerät anfordern
Bevor Sie Trainingsdaten erhalten, müssen Sie die entsprechenden Berechtigungen.
Fordern Sie nur die erforderlichen Berechtigungen an und achten Sie darauf, Jede Berechtigung im Kontext anfordern, anstatt alle Berechtigungen gleichzeitig, wenn der Nutzer die App startet.
Der Schrittzählersensor, auf den viele Trainings-Apps angewiesen sind, nutzt den
Berechtigung ACTIVITY_RECOGNITION
. Fügen Sie diese Berechtigung der Datei „AndroidManifest.xml“ hinzu.
Datei:
<?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>
Informationen zum Anfordern der Berechtigung ACTIVITY_RECOGNITION
zur Laufzeit finden Sie im
Dokumentation zu Berechtigungsanfragen.
Außerdem musst du im Manifest ein FOREGROUND_SERVICE
deklarieren. Da Sie
die Berechtigung ACTIVITY_RECOGNITION
anfordern, erklären
FOREGROUND_SERVICE_TYPE_HEALTH
:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_HEALTH"/>
Rufen Sie Dienste im Vordergrund auf. finden Sie weitere Informationen zu Diensten im Vordergrund und deren Typen.
UI-Status mit ViewModel verwalten
Verwenden Sie ein ViewModel, um den Status der Benutzeroberfläche korrekt zu verwalten. Jetpack Compose und ViewModels bieten einen tieferen Einblick in die zu optimieren.
Verwenden Sie außerdem UI-Layering, das beim Erstellen von Benutzeroberflächen mit der Funktion „Schreiben“ eine wichtige Rolle spielt. und ermöglicht es Ihnen, Best Practices für Architekturen wie Unidirektionaler Datenfluss. Weitere Informationen zum UI-Layering finden Sie in der Dokumentation zur UI-Ebene
In dieser Beispielanwendung hat die Benutzeroberfläche drei Grundzustände:
- Wird geladen:Ein sich drehender Kreis wird angezeigt.
- Inhalt:Hier finden Sie Informationen zu Ihren heutigen Schritten.
- Fehler: Zeigt eine Meldung an, wenn ein Fehler auftritt.
ViewModel
stellt diese Status als Kotlin-Flow
bereit. Verwenden Sie eine versiegelte Klasse, um
die Klassen und Objekte enthalten, die die möglichen Zustände darstellen:
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()
}
Die Compose-UI erfasst dann dieses Flow
als Compose-State
und führt die entsprechenden Aktionen aus:
val state: TodayScreenState = todayScreenViewModel.currentScreenState.collectAsState().value