# GPS2Audio v2.5.30 — Handoff: Home Atmo & Playback Persistence **Build-Datum:** 2025-05-28 **Basis:** GPS2Audio v2.5.29 (`GPS2Audio_v2_5_29_license_update_persistence_source.zip`) **versionCode:** 84 **versionName:** 2.5.30 --- ## 1. Was auf der Startseite entfernt wurde ### Atmo-Modul-Karte (HomeScreen.kt) Das `AtmoModuleCard`-Block auf der Startseite (`HomeScreen`) wird **nicht mehr angezeigt**, unabhängig vom gespeicherten `showAtmo`-Flag im `HomeModulesSettingsStore`. **Geänderte Stellen in `HomeScreen.kt`:** - **Block `// ─ Optionales Atmo-Modul ─`:** Das `if (homeModules.showAtmo) { AtmoModuleCard(...) }`-Konstrukt wurde durch einen reinen Kommentar ersetzt. Die `AtmoModuleCard`-Composable-Funktion ist weiterhin im Code vorhanden (kein Datenverlust), wird aber auf der Startseite nicht mehr aufgerufen. - **`CustomizeHomeDialog`-Aufruf:** Der `onSetShowAtmo`-Lambda gibt nun `{}` (no-op) zurück. Die Atmo-`ToggleRow` im Dialog ist entfernt — Benutzer sehen dort nur noch PTT-Modul und Now-Playing-Bar. - **`musicSettings`-State-Binding:** `val musicSettings by viewModel.musicSettings.collectAsState()` wurde entfernt (war nur für `AtmoModuleCard` benötigt). `musicPlaying` bleibt für die `MiniNowPlayingBar` erhalten. ### PTT-Modul bleibt optional Das PTT-Modul (`PttModuleCard`) bleibt auf der Startseite optional und wird weiterhin über den Dialog „Startseite anpassen" (Overflow-Menü) gesteuert — unverändert. ### Now-Playing-Bar bleibt optional Die `MiniNowPlayingBar` (zeigt laufende Wiedergabe als Leiste am unteren Rand) bleibt optional und wird über „Startseite anpassen" gesteuert — unverändert. --- ## 2. Wo Atmo weiterhin verfügbar bleibt Die Atmo-Funktion ist **vollständig erhalten** und wurde **nicht gelöscht**: | Ort | Status | |-----|--------| | `WaypointListScreen` (Tour-Ansicht) | ✅ Volle Atmo-Karte mit Play/Pause/Stop/Config | | `BegleitmusikDialog` | ✅ Atmo-Konfiguration (Streams, Playlists, Verhalten) | | `AtmoPlaybackService` | ✅ Unverändert | | `AtmoResumeManager` | ✅ Unverändert | | `BackgroundMusicManager` / `BackgroundMusicPlayer` | ✅ Unverändert | | `HomeModulesSettingsStore` (`showAtmo`-Key) | ✅ Datenpersistenz erhalten, nur Home-Anzeige ignoriert | | `WaypointListViewSettings` (Atmo in Tour-Ansicht) | ✅ Unverändert | | Backup/ZIP-Export (Atmo-Streams, Einstellungen) | ✅ Unverändert | --- ## 3. Welche automatische Stop-Logik beim Tourwechsel geändert wurde ### Datei: `WaypointViewModel.kt` — Funktion `selectTour()` **Vorher (v2.5.29):** `selectTour()` stoppte automatisch die laufende Wiedergabe: ```kotlin // Diese Zeilen wurden ENTFERNT: manualPlayer.stop() _manualPlaying.value = false _manualCurrentName.value = null _manualIndex.value = -1 _singlePlayingWaypointId.value = null _singlePlayingActive.value = false _currentPlayable.value = null stopProgressTicker(keepSnapshot = false) // ... if (TrackRecordingManager.isRecording.value) stopTrackRecording() TrackRecordingManager.clearTrack() ``` **Nachher (v2.5.30):** `selectTour()` ändert nur den aktiven Tour-Kontext: ```kotlin // Nur noch: _selectedTour.value = safeTarget musicManager.loadTour(safeTarget) // Musik-Einstellungen der neuen Tour laden // + loadMusicSettings, loadTourDefaults, loadPersistedTrack (Daten, kein Stop) ``` Laufende Wiedergabe (ManualPlayer, GPS-Dienst, Atmo) wird durch `selectTour()` **nicht mehr berührt**. --- ## 4. Explizite Stop-/Play-Regel nach Änderung | Aktion | Verhalten | |--------|-----------| | **Tourwechsel** (Karte klicken, Tab wechseln, `selectTour()`) | ❌ Stoppt KEINE laufende Wiedergabe | | **Play-Button in neuer Tour** (`manualPlayPause`, `manualPlayAt`, `manualPlaySingle`) | ✅ Startet neue Wiedergabe — `manualPlayer.play()` ersetzt automatisch die laufende | | **Stop-Button** in Player-Leiste | ✅ Stoppt Wiedergabe (explizite Nutzeraktion) | | **GPS-Dienst Stop** (⏹-Button in Topbar) | ✅ Stoppt GPS-Wiedergabe (explizite Nutzeraktion) | | **PTT aktiv** | ✅ Wiedergabe wird unterbrochen (unverändert) | | **App-Hintergrund** | ✅ Hintergrundwiedergabe bleibt erhalten (unverändert) | ### UI-Konsistenz - Das `isActive`/`LIVE`-Badge auf Tour-Cover-Karten zeigt `tour == selectedTour && serviceRunning`. Wenn eine andere Tour geöffnet wird, verschwindet das Badge der alten Tour korrekt — der GPS-Dienst läuft jedoch weiter. - Die `MiniNowPlayingBar` auf der Startseite zeigt weiterhin laufende Wiedergabe unabhängig davon, welche Tour gerade geöffnet ist. --- ## 5. Build- und Signaturergebnis | Parameter | Wert | |-----------|------| | Build-Typ | `assembleRelease` | | Gradle | Erfolgreich (`BUILD SUCCESSFUL`) | | APK-Größe | ~57 MB | | Signatur | Keystore v2: `GPS2Audio_release_keystore_v2.jks` | | Alias | `gps2audio_release_v2` | | Zertifikat DN | `CN=GPS2Audio, OU=NesoHub, O=GPS2Audio, L=Germany, C=DE` | | Cert SHA-256 | `490511f350557083808cdf9e39fdb0a2d4d76d2224726b56018d1ac0dd9ed4e5` | | apksigner verify | ✅ Gültige Signatur | --- ## 6. Keine Regressionen Die folgenden v2.5.29-Funktionen wurden **nicht verändert**: - ✅ Lizenzsystem (Import, Thread-Fix, Persistenz nach Update, Geräte-ID, E-Mail, Profi-Text) - ✅ Backup / ZIP-Export-Import - ✅ GPX-Import (additiv, v2.5.18) - ✅ Explorer / MapLibre / Routing - ✅ Multi-Clip / Sequenzplayer - ✅ Countdown-Player - ✅ Maximierbarer Player - ✅ Tour duplizieren - ✅ Waypoint Copy - ✅ PTT (auf Startseite optional, in Tour-Ansicht volle Funktion) - ✅ Atmo in Tour-/Player-Kontexten (unberührt) - ✅ Hintergrundwiedergabe (ManualPlaybackService, AtmoPlaybackService) - ✅ Tour-Sortierung, Tour-Cover, TourReorderDialog --- ## 7. Artefakte | Datei | Beschreibung | |-------|-------------| | `GPS2Audio_v2_5_30_home_atmo_playback_persistence_signed.apk` | Signiertes Release-APK v2.5.30 | | `GPS2Audio_v2_5_30_home_atmo_playback_persistence_source.zip` | Quellcode (ohne Build-Artefakte, ohne Keystore) | | `GPS2Audio_v2_5_30_home_atmo_playback_persistence_handoff.md` | Dieses Dokument |