Eine einfache Fitness-App erstellen

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