Hallo meine Lieben. Ich arbeite an einer Android App die den Wegverlauf des Lechwegs im Tiroler Lechtal auf einer Landkarte anzeigen soll. In diesem Video geht es darum wie die “Persistance Library Room” verwende um die GPS Daten in der App zu verwalten.
Room
Jetzt muss ich über das Haupt Feature dieser App reden. Es sollen Wege auf der Landkarte angezeigt werden. Die bestehen aus einer langen Reihe von GPS Punkten. Diese Daten muss ich wo speichern. Beim Wandern hat man nicht immer eine Internetverbindung, darum müssen die Daten lokal in der App liegen. Die einfachste Variante ist, die Daten einfach in einem Textdokument abzulegen. So habe ich das in den bisherigen Apps gemacht. Am liebsten würde ich eigentlich die Firebase Datenbank verwenden, aber das geht ja nicht. Das geht nur mit Internetverbindung. Um auf dem Gebiet aber auch was neues zu lernen habe ich mich für “Room” entschieden.
Das ist der momentan empfohlene Weg Daten persistent zu speichern. Room ist eine etwas einfachere Methode eine SQL Datenbank zu verwenden. Ich kann jetzt nicht wirklich sagen, dass ich alles verstanden habe, wie das funktioniert. Ich hab einfach mal das Tutorial gemacht und das dann so abgeändert, dass es zu meinen Daten passt. Die Daten sind so aufgebaut: Es gibt mehrere Wegabschnitte, die haben einen Namen und eine Liste mit Wegpunkten.

Die Daten liegen in der App gebundled in einem json file mit 30.000 Zeilen. Wenn die App gestartet wird, werden mit der GSON Library die Daten eingelesen und in die Datenbank mit “INSERT” eingefüllt, falls sie noch nicht da sind. Diese Daten bleiben in weiterer Folge persistent.
Als nächstes schreibt man dann eine DAO Klasse. Das ist sowas wie ein Übersetzer von setter und getter Funktionen zu SQL Queries. Ich erfinde also zum Beispiel eine Funktion: getSelectedTitles() und darüber kann man mit einer Annotation schreiben welches SQL Statement das ausführen soll. In meinem Fall: “SELECT title FROM weg_table WHERE selected”.

Das liefert mir dann eine Liste mit ausgewählten Wegen. Diese DAO Funktionen kann man dann im Grunde im ViewModel verwenden um damit eine Liste zu befüllen.
Ja, so funktioniert das im Grunde. Ich habe schon ein paar Abende daran gearbeitet, bis es das gemacht hat was ich wollte. Aber ab dann musste ich mich nicht mehr darum kümmern. Es funktioniert. Mir gefällt es auch, das Ding zu verwenden das aktuell von den Android Göttern empfohlen wird. Dann kann es schon nicht so falsch sein.