57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
# 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:
|
|
```xml
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> |