Files
SnapAndSolve/docs/SettingsScreen.md
si2503 8342723e09 - Dokumentation
- Bereinigung von Code
2026-02-13 10:33:21 +01:00

2.7 KiB

Dokumentation: SettingsScreen (Einstellungen)

Übersicht

Die Datei SettingsScreen.kt im Paket com.example.snapandsolve.ui.theme stellt die Benutzeroberfläche für die App-Konfiguration bereit. Sie dient primär der Steuerung des ProximityNotificationService, welcher Nutzer benachrichtigt, sobald sie sich in der Nähe eines gemeldeten Straßenschadens befinden.


1. Hauptkomponente: SettingsScreen

@Composable fun SettingsScreen(onBack: () -> Unit, mapViewModel: MapViewModel)

Ein Full-Screen Composable, das mittels Material Design 3 (M3) eine übersichtliche Struktur für Benutzereinstellungen bietet.

Parameter

Parameter Typ Beschreibung
onBack () -> Unit Callback zur Navigation zurück zum vorherigen Screen.
mapViewModel MapViewModel ViewModel zur Bereitstellung der ArcGIS Feature Table.

Zustandsverwaltung (State)

  • isProximityActive: Ein via collectAsState beobachteter Boolean, der den aktuellen Status des Hintergrunddienstes direkt aus dem ProximityNotificationService widerspiegelt.
  • notificationPermissionLauncher: Ein Activity-Result-Launcher, der die erforderliche Berechtigung POST_NOTIFICATIONS verwaltet.

2. Funktionslogik: Benachrichtigungs-Switch

Der zentrale Teil des Screens ist ein Switch, der den Proximity-Dienst steuert. Der Ablauf bei Aktivierung ist wie folgt:

  1. Versionsprüfung: Prüft, ob die Berechtigung für Benachrichtigungen vorliegt.
  2. Berechtigungsanfrage: Fehlt die Berechtigung, wird der System-Dialog zur Anfrage gestartet.
  3. Validierung der Datenquelle: Es wird geprüft, ob die FeatureTable im MapViewModel verfügbar ist.
  4. Dienst-Start/Stop:
    • Bei Erfolg: ProximityNotificationService.start(context, table)
    • Bei Deaktivierung: ProximityNotificationService.stop(context)

3. UI-Struktur & Design

TopAppBar

Die Kopfzeile nutzt das Farbschema der App (AppColor) und bietet eine konsistente Navigation.

Layout-Elemente

  • Settings-Karten (Card): Gruppieren inhaltlich zusammenhängende Einstellungen (z.B. Benachrichtigungen, Informationen).
  • Status-Feedback: Wenn der Dienst aktiv ist, wird dynamisch eine zusätzliche Infokarte mit grünem Häkchen () eingeblendet, um den aktiven Status zu visualisieren.
  • Informations-Sektion: Zeigt feste Parameter wie den Proximity-Radius (aktuell 100 Meter) an.

4. Integration & Anforderungen

Erforderliche Berechtigungen

In der AndroidManifest.xml müssen für die volle Funktionalität dieses Screens folgende Berechtigungen deklariert sein:

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