# GPS2Audio v2.5.6 — Explorer-Design & Lizenz-/Nutzungshinweise Release-Iteration für GPS2Audio. Schwerpunkte: visuelle Harmonisierung des Explorers mit dem v2.5.x-Ästhetik-Stand sowie Aufräumen und rechtlich saubere Formulierung der „Über diese App"-Sektion. - Baseline: `GPS2Audio_v2_5_5_tour_view_gps_cover_fix_source.zip` - Version: `versionName 2.5.6`, `versionCode 60` - Application-ID: `de.waypointaudio` (unverändert; Update-fähig zu v2.5.5) - Signatur: bestehender Release-Keystore, SHA-256 `7B:0E:A4:D5:52:86:05:17:3D:29:9D:7B:26:8E:7A:B8:76:8D:D5:04:EC:15:B6:6A:52:D4:7B:42:57:B3:BB:46` (identisch zu v2.5.5) ## Artefakte - `GPS2Audio_v2_5_6_explorer_about_license_signed.apk` (signiert, Release) - `GPS2Audio_v2_5_6_explorer_about_license_source.zip` (Quellen, ohne Keystore/Credentials, ohne `keystore.properties`, ohne `local.properties`) - `GPS2Audio_v2_5_6_explorer_about_license_handoff.md` (dieses Dokument) ## Änderungen im Detail ### 1. Explorer-Design (Harmonisierung mit v2.5.x) Datei: `app/src/main/kotlin/de/waypointaudio/ui/ExplorerScreenMapLibre.kt` - **TopAppBar**: Container nicht länger knalliges Teal-`primary`, sondern ruhige `surface`-Fläche. Title-/Icon-Akzente nutzen `onSurface` und `primary` nur noch als dezenten Aktionsakzent. Konsistent zur HomeScreen-TopBar (v2.5.0 ff.). - **Mode-Header**: `MapModeSegmentedHeader` bekommt einen optionalen `contentColor`-Parameter (Default = `onPrimary` — Editor unverändert). Der Explorer übergibt jetzt `onSurface`, damit Segmented Control, Untertitel und Icons auf der hellen Surface-TopBar gut lesbar bleiben. - **Follow- und Tap-Icons in der TopBar**: aktiv ⇒ `tertiary` (grün), inaktiv ⇒ `onSurfaceVariant`; ersetzt die alte `onPrimary`-Variante, die auf der neuen helleren Bar nicht mehr funktioniert. - **Floating Action Buttons**: visuell beruhigt, glasiger Look durch `colorScheme.surfaceColorAtElevation(6.dp)` als Container und `primary` als Vordergrund. Primäraktion „Wegpunkt setzen" wechselt von vollem `primary` auf `primaryContainer/onPrimaryContainer`, damit der Stack insgesamt weniger grell wirkt. Track-Aufnahme-FAB wird kompakt (`SmallFloatingActionButton`); „Stopp Aufnahme" bleibt prominent als `ExtendedFloatingActionButton` in der Error-Container-Farbe. - **My-Location-FAB**: auf `SmallFloatingActionButton` verkleinert und in den neutralen Glas-Stack eingegliedert (vorher `secondaryContainer`). - **Manual-Route-Toggle**: aktiv ⇒ `tertiaryContainer/onTertiaryContainer` (unverändert), inaktiv ⇒ neuer neutraler Glas-Stil. - **Statuschip, Layer-Panel, Cancel-Chip, Renderer-Badge, OSM-Attribution**: unverändert — diese verwendeten bereits dezent `surfaceVariant`/`primaryContainer` und passen weiterhin gut. OSM/ MapLibre-Attribution bleibt sichtbar (`OsmAttributionBadge`, Renderer-Badge in der unteren rechten Ecke). Datei: `app/src/main/kotlin/de/waypointaudio/ui/MapMode.kt` - `MapModeSegmentedHeader` erhält `contentColor: Color? = null`. Default = `MaterialTheme.colorScheme.onPrimary` (bestehender Editor- Aufruf unverändert; keine Regression). ### 2. „Über diese App" — Matrix entfernt, Lizenz/Nutzung präzisiert Dateien: - `app/src/main/kotlin/de/waypointaudio/ui/AboutDialog.kt` - `app/src/main/res/values/strings.xml` Entfernt: - Kompletter Matrix-Kontakt-Block (Label, Beschreibung, ID, QR-Code, „Matrix-Chat öffnen"-Button und zugehörige Intent-Logik). - Imports `Image`, `background`, `Color`, `painterResource`, `Alignment` werden nicht mehr benötigt und sind aus `AboutDialog.kt` entfernt. - Die zugehörigen String-Ressourcen (`about_matrix_*`) bleiben aktuell noch in `strings.xml` (zu Übersetzungs-/History-Zwecken nicht zwangs­entfernt), werden aber von keiner Compose-Funktion mehr referenziert. Die `matrix_contact_qr`-Drawable-Ressource ist unverändert vorhanden, aber im UI nicht mehr verlinkt. Ergänzt: - Neuer Abschnitt **„Nutzungsbedingungen"** vor dem Lizenzblock mit klarer Trennung von Open-Source-Lizenz und Marken-/Inhaltsschutz: „Die private und nicht-kommerzielle Nutzung von GPS2Audio ist frei. Jede kommerzielle Nutzung der App, der Marke „GPS2Audio", der bereitgestellten Inhalte/Touren sowie der signierten Builds — insbesondere durch Bus-, Reise-, Schifffahrts- oder andere gewerbliche Anbieter — ist ohne ausdrückliche schriftliche Genehmigung des Entwicklers untersagt. Für gewerbliche Nutzung ist ein gesonderter Vertrag erforderlich. Anfragen bitte per E-Mail an den Entwickler." - **Lizenzblock** überarbeitet: weiterhin Apache License 2.0 als Open-Source-Lizenz, aber explizit eingegrenzt auf die Quellcode- Komponenten, soweit gekennzeichnet. Markenname, Logo, kuratierte Inhalte/Touren und die offiziellen signierten Builds sind durch die Apache-Lizenz nicht erfasst und unterliegen den oben genannten Nutzungsbedingungen. - Kleiner **Disclaimer**: „Dieser Hinweis ersetzt keine Rechtsberatung. Maßgeblich ist im Zweifel der Originaltext der Apache License 2.0." Reihenfolge der Blöcke im Dialog ist unverändert (zuletzt Lizenz + Copyright, davor jetzt Nutzungsbedingungen). Dialog-Inhalt bleibt voll scrollbar. Rechtliche Einordnung (keine Rechtsberatung): - Apache License 2.0 erlaubt selbst keinerlei Verbot kommerzieller Nutzung des Quellcodes — sie ist eine permissive Open-Source-Lizenz. Die Formulierung wurde deshalb so gewählt, dass der **Quellcode** unter Apache 2.0 steht (inkl. kommerzieller Forks/Weitergabe unter Beibehaltung der Lizenzhinweise), während **Marke „GPS2Audio", bereitgestellte Inhalte/Touren und die offiziellen signierten Builds** ausdrücklich nicht von der Apache-Lizenz erfasst sind. - So entsteht kein Widerspruch zur Apache-2.0-Lizenz, und kommerzielle Anbieter (z. B. Busunternehmen, Schifffahrt) müssen für die Nutzung der App/Marke/Builds weiterhin gesonderte Vereinbarungen mit dem Entwickler treffen. ### 3. Version Datei: `app/build.gradle.kts` - `versionCode = 59 → 60` - `versionName = "2.5.5" → "2.5.6"` - `AppVersion.get(context)` (PackageManager) wird im AboutDialog unverändert verwendet ⇒ Versionsanzeige bleibt automatisch korrekt. ## Betroffene Dateien (Diff-Übersicht) - `app/build.gradle.kts` - `app/src/main/kotlin/de/waypointaudio/ui/AboutDialog.kt` - `app/src/main/kotlin/de/waypointaudio/ui/ExplorerScreenMapLibre.kt` - `app/src/main/kotlin/de/waypointaudio/ui/MapMode.kt` - `app/src/main/res/values/strings.xml` ## No-Regression-Grenzen (bewusst NICHT verändert) - Karten-Engine (MapLibre Native) und Tile-/Style-Logik bleiben unverändert. - Funktionen im Explorer alle erhalten: - Manuelle Route zeichnen (v2.5.3-Toggle-FAB) - Routingprofile Auto/Fahrrad/Fußgänger (v2.5.2) - POIs, OSM-Search (Nominatim), Route planen - Wegpunkt/Station hinzufügen (FAB + Tap-Modus) - Track-Aufzeichnung Start/Stop, Track-Editor (Drafts/Storyboard) - Layer-/Style-Auswahl (`MapLayerFab`/Panel) - GPS-Nachführung (`followLocation`) - PTT/Atmo-Logik (außerhalb Explorer) unverändert - Editor (`MapScreen`) und HomeScreen visuell unverändert. - `MapModeSegmentedHeader` ist abwärtskompatibel — der zusätzliche `contentColor`-Parameter hat Default `null` (≙ alter `onPrimary`-Pfad). - OSM/MapLibre-Attribution bleibt sichtbar. - AppVersion/BuildConfig-Auslesung unverändert. - Keine neuen externen APIs, keine API-Keys. ## Build & Signatur - Gradle 8.9 (Wrapper-Distribution), Android SDK 35, Build-Tools 35.0.0, JDK 17. - Build-Befehl (lokal reproduzierbar): ``` echo "sdk.dir=/path/to/android-sdk" > local.properties cat > keystore.properties < keyAlias=gps2audio_release keyPassword= EOF gradle :app:assembleRelease ``` - Output: `app/build/outputs/apk/release/app-release.apk` - Verifikation (`apksigner verify --print-certs`): - Signer #1 DN: `CN=GPS2Audio, OU=NesoHub, O=GPS2Audio, L=Germany, C=DE` - SHA-256: `7b0ea4…b3bb46` (matches Release-Cert seit v2.0.0) - `aapt dump badging`: `package=de.waypointaudio versionCode=60 versionName=2.5.6 compileSdk=35`. Keystore und Credentials sind ausschließlich im Build-Host vorhanden; weder Keystore, Passwörter noch `keystore.properties`/`local.properties` sind im veröffentlichten `…_source.zip` enthalten. Lediglich `keystore.properties.example` als Vorlage liegt bei. ## Smoke-Check (manuell empfohlen) 1. APK auf v2.5.5-Installation per Sideload „Update": Datenbestand, Touren, Tracks, PTT-Aufnahmen und Wakelock-Settings bleiben erhalten (Update-fähige Signatur). 2. Home → „Explorer": neue, ruhigere TopBar (Surface), Segmented Control und Untertitel klar lesbar; FAB-Stack glasig, „Wegpunkt setzen" in primary-container, „Stop Aufnahme" in error-container. 3. Layer-/Style-Wahl, Routenplaner, „Route zeichnen"-Toggle, POIs und Suchen funktionieren wie in v2.5.5. 4. Track-Aufzeichnung Start → Stop; Drafts/Storyboard öffnen. 5. Menü → „Über diese App": Matrix-Block ist weg; neuer Block „Nutzungsbedingungen" sichtbar, danach Lizenz (Apache 2.0) mit Eingrenzung und Disclaimer, dann Copyright. 6. Version im Dialog zeigt automatisch „2.5.6". ## Bekannte Beobachtungen - Build-Warnungen sind ausschließlich vorbestehende Compose-Material3- Deprecations (AutoMirrored-Icons, `Divider`→`HorizontalDivider`, `menuAnchor()`-Überladung). Keine neuen Warnungen oder Fehler durch diese Änderungen. - `about_matrix_*` Strings und `matrix_contact_qr`-Drawable bleiben unbenutzt in den Ressourcen — könnten in einer späteren Iteration bereinigt werden. Belassen, um diesen Patch klein und übersichtlich zu halten. ## Hinweis Die Lizenz-/Nutzungsformulierung im AboutDialog ist eine sachgerechte, verständliche Zusammenfassung — sie ersetzt keine anwaltliche Beratung. Für rechtsverbindliche Geschäftsbeziehungen (z. B. Verträge mit Bus-/Schifffahrtsunternehmen) empfiehlt sich ein separat ausformulierter Lizenzvertrag.