(For the English documentation, see README_en.md)
Willkommen bei Baumradar! Dieses Open-Source-Projekt ist eine Kombination aus einem robusten Java-Backend (Data-Processor) und einer modernen Android-App.
Baumradar ist ein Open-Data-basiertes Werkzeug, mit dem du Bäume in deiner direkten Umgebung erkunden und bei deiner Fortbewegung durch die Stadt gezielt meiden kannst – besonders hilfreich, wenn du an einer Baumpollen-Allergie (z.B. gegen Frühblüher) leidest.
In deinem persönlichen Allergie-Profil wählst du gezielt die Baumgattungen aus, auf die du allergisch reagierst (z. B. Birke, Hasel, Esche). Die App unterscheidet dabei zwischen zwei Stufen:
- "Umfahren 🚫": Diese Bäume werden beim Routing berücksichtigt – die App versucht, Routen zu berechnen, die diese Baumgattungen möglichst meiden.
- "Warnung
⚠️ ": Für diese Bäume registriert Baumradar im Hintergrund Geofence-Zonen bei Android. Du erhältst eine Push-Benachrichtigung direkt auf den Sperrbildschirm, sobald du dich einem solchen Baum näherst – auch wenn die App gerade geschlossen ist. Dafür ist keine permanent laufende Hintergrund-App nötig, Android überwacht die Zonen energieeffizient über die Play Services.
Du stehst vor einem Baum und fragst dich: „Was ist das da für ein Baum?" Aktiviere den Erkundungsmodus (das Lupen-Icon unten rechts auf der Karte) und Baumradar zeigt dir alle Bäume im Umkreis von 100 Metern an – unabhängig von deinem Allergie-Profil. Jeder Marker auf der Karte zeigt dir den deutschen Gattungsnamen und, falls bekannt, die spezifische Art.
Auf dem Karten-Bildschirm blendet Baumradar transparente Pfeile und Entfernungsangaben ein. Diese zeigen dir in Echtzeit die Richtung und Distanz zu den nächstgelegenen markierten Bäumen (die nächsten 15). Die Pfeile reagieren auf deinen Kompass (Gyroskop) und drehen sich mit dir mit, sodass du immer weißt, in welcher Himmelsrichtung ein Baum steht – auch wenn er sich außerhalb des sichtbaren Kartenausschnitts befindet.
Klappe die „Route planen"-Karte oben auf dem Bildschirm auf. Gib Start- und Zieladresse ein und wähle dein Fortbewegungsmittel (Zu Fuß, Fahrrad, Auto). Baumradar:
- Löst die Adressen über den Nominatim Geocoder (OpenStreetMap) in Koordinaten auf.
- Fragt beim öffentlichen OSRM Routing Server bis zu 3 Routen-Alternativen an.
- Lädt alle Geofence-Zonen der Baumarten, die du im Allergie-Profil als "Umfahren" markiert hast, aus der lokalen Datenbank.
- Prüft für jede Routen-Alternative, wie viele dieser Zonen geschnitten werden (siehe Kollisionserkennung).
- Sortiert die Routen: die allergenfreie Route wird zuerst angezeigt und als "Allergiefrei 🟢" markiert.
Die berechnete Route kann per GPX-Export geteilt werden, z. B. an eine Navigations-App.
Unterstützte Städte: Wien, Graz, Innsbruck, Linz (Österreich), Berlin, Hamburg, Freiburg, Dortmund (Deutschland), Zürich, Basel (Schweiz). Beim ersten Start wählt man mindestens eine Stadt aus. Wenn man sich später in eine neue Stadt bewegt, schlägt die App automatisch vor, die lokalen Baumdaten herunterzuladen.
Die App lädt für jede Stadt eine komprimierte, aufbereitete SQLite-Datenbank herunter. Sobald geladen, funktionieren Kartenanzeige, Erkundungsmodus und Hintergrund-Warnungen komplett ohne Internetverbindung. Nur für das Routing (Routenberechnung über OSRM) wird kurzzeitig eine Verbindung benötigt.
Die Daten werden vom Backend verarbeitet und kryptografisch mit Ed25519 signiert. Bevor die App eine heruntergeladene Datenbank verwendet, prüft sie die Signatur gegen einen fest in der App eingebetteten Public Key. Erst wenn die Prüfung erfolgreich ist, werden die Daten importiert. Dadurch kann jeder sicherstellen, dass die Daten authentisch und unverfälscht sind.
- Lade dir die aktuellste
Baumradar.apkaus dem Repository (Releases-Tab) herunter. - Erlaube auf deinem Smartphone die Installation aus „Unbekannten Quellen" (wird in der Regel beim Öffnen automatisch abgefragt).
- Öffne die APK und folge den Anweisungen.
- Beim ersten Start: Wähle mindestens eine Stadt aus und lade deren Daten herunter.
- Erteile die Berechtigungen für Standort (inkl. Hintergrund-Standort für die Geofence-Warnungen) und Benachrichtigungen.
git clone https://github.com/matthili/BaumRadar.git
cd BaumRadar
./gradlew assembleDebug
# Die APK findest du unter app/build/outputs/apk/debug/Voraussetzungen: Android Studio (aktuelle Version), JDK 17, Android SDK 34.
Beim allerersten Start erscheint ein Städte-Assistent. Hier wählst du per Schalter die Städte aus, deren Baumdaten du herunterladen möchtest. Die App zeigt einen Lade-Fortschritt inkl. Signatur-Verifizierung an. Danach tippst du auf „Weiter" und landest auf dem Hauptbildschirm.
Die App hat am unteren Rand eine Tab-Leiste mit drei Bereichen:
-
Karte (🗺️): Der Hauptbereich. Hier siehst du die OpenStreetMap-Karte mit deinem Standort (blauer Punkt), den markierten Allergie-Bäumen (gelbe Pins), den Geofence-Zonen (rote Kreise) und ggf. berechneten Routen (blaue Linie). Unten rechts gibt es drei Buttons:
- 📍 Zentrieren: Springt zurück zu deinem aktuellen Standort.
⚠️ Hotspots: Blendet alle Geofence-Zonen der von dir ausgewählten Allergene im 2-km-Radius ein.- 🔍 Erkundungsmodus: Zeigt alle Bäume (jeder Art) im Umkreis von 100 m an.
-
Allergie-Profil (👤): Hier verwaltest du deine Allergien. Du siehst eine durchsuchbare, nach Gattung gruppierte Liste aller in der Datenbank vorhandenen Baumarten. Für jede Art gibt es zwei Checkboxen:
- „Warnung
⚠️ ": Aktiviert die Hintergrund-Benachrichtigung per Geofence für diese Art. - „Umfahren 🚫": Berücksichtigt diese Art beim allergiefreien Routing.
Über die Tri-State-Checkbox am Gruppen-Header (z. B. „Ahorn") kannst du eine gesamte Gattung mit einem Klick an- oder abwählen.
- „Warnung
-
Städte (🏙️): Hier verwaltest du die heruntergeladenen Städte. Du kannst weitere Städte herunterladen, bestehende löschen, oder per Ortssymbol direkt zur Karten-Position einer Stadt springen.
Ein langer Druck auf eine beliebige Stelle der Karte öffnet ein Kontextmenü:
- Virtueller Standort setzen: Für Tests oder zum Vorausplanen – die App verhält sich, als wärst du an diesem Punkt.
- Route HIER starten: Setzt den Startpunkt für eine Route.
- Route HIER beenden: Setzt den Endpunkt und berechnet die Route.
Baumradar besteht aus zwei Hauptteilen und einer offenen Datenstruktur. Hier findest du detaillierte Dokumentationen zu den einzelnen Bereichen:
- Android App Architektur: Einblicke in die Kotlin-App, Jetpack Compose UI, Room-Datenbanken, das Routing-System und die Hintergrund-Geofence-Benachrichtigungen.
- Backend / Data-Processor: Wie das Java-Backend Open Data aus verschiedenen Städten einliest, übersetzt, clustert, in Chunks splittet und signiert.
- Datenstruktur & Third-Party Nutzung: Wie du als externer Entwickler die offenen, verifizierten Baumradar-Daten für deine eigene App (z.B. iOS, Web) nutzen kannst – mit Code-Beispielen.
Dieses Projekt ist unter der MIT License veröffentlicht. Siehe LICENSE für weitere Details.