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 viacollectAsStatebeobachteter Boolean, der den aktuellen Status des Hintergrunddienstes direkt aus demProximityNotificationServicewiderspiegelt.notificationPermissionLauncher: Ein Activity-Result-Launcher, der die erforderliche BerechtigungPOST_NOTIFICATIONSverwaltet.
2. Funktionslogik: Benachrichtigungs-Switch
Der zentrale Teil des Screens ist ein Switch, der den Proximity-Dienst steuert. Der Ablauf bei Aktivierung ist wie folgt:
- Versionsprüfung: Prüft, ob die Berechtigung für Benachrichtigungen vorliegt.
- Berechtigungsanfrage: Fehlt die Berechtigung, wird der System-Dialog zur Anfrage gestartet.
- Validierung der Datenquelle: Es wird geprüft, ob die
FeatureTableimMapViewModelverfügbar ist. - Dienst-Start/Stop:
- Bei Erfolg:
ProximityNotificationService.start(context, table) - Bei Deaktivierung:
ProximityNotificationService.stop(context)
- Bei Erfolg:
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" />