Am Puls von Microsoft

DuoBahn, das Entwicklertagebuch, Teil 4: Das Kartenspiel beginnt

DuoBahn, das Entwicklertagebuch, Teil 4: Das Kartenspiel beginnt

In den letzten Wochen stand neben dem entwicklungstechnischen „warm werden“ mit Android, Kotlin und Jetpack Compose an sich auch die Einbindung des Surface Duo SDKs im Fokus. Somit sollte nun ein guter Grundstock für alles weitere gelegt sein.

Für alle, denen diese Artikelreihe noch unbekannt ist – das habt ihr bislang verpasst, könnt euch aber natürlich nachträglich einlesen:

Klarstellung

Im ersten Teil dieser Beitragsreihe sprach ich von einer „staatlichen API für Autobahndaten“. Dies ist falsch. Der bund.dev ist eine Kampagne (Artikel) der bekannten Softwareentwicklerin und IT-Sicherheitsexpertin Lilith Wittmann, welche es kürzlich durch die Entdeckung des mysteriösen Bundesservice Telekommunikation (BST) in die Nachrichten (Artikel) geschafft hat. Die Aktion soll aufzeigen, welche Daten aus staatlichen Einrichtungen frei verfügbar im Netz vorhanden sind. Zusätzlich hierfür dokumentierten sie und weitere Beteiligten die angesprochen APIs im gängigen openapi Format.

Diese Tickets (Issues) wurden abgearbeitet

DuoBahn wird aktiv auf für alle einsichtlich auf GitHub langsam, aber dennoch stetig weiterentwickelt. Um im Vergleich zu unseren anderen Surface Duo Projekten wie der damaligen #rTsd-App mehr Transparenz zu schaffen, versuche ich mit Tickets zu arbeiten. Im Zeitraum seit dem letzten Artikel zur Autobahn App wurden die folgenden Tickets erfolgreich umgesetzt.

#4 Add custom marker icons for different kind of items

Hierbei wurde die Standard-Kartenpin durch grafisch unterschiedliche Symbole ersetzt. So besitzen nun Staus, Webcams, Baustellen und mehr unterschiedliche Symbole auf der Kartenansicht, um sie im späteren Verlauf der Entwicklung unterscheiden zu können.

DuoBahn App Screenshot

Als Quelle für diese Icons wurden Material Icons von fonts.google.com/icons eingesetzt und in Figma in die entsprechende Autobahn-Blaue Kreisfläche gesetzt. Hierbei gibt es noch Verbesserungspotential. So könnten die in Figma erstellten Icons nicht pixel-, sondern vektorbasiert sein beziehungsweise in verschiedenen Pixelauflösungen vorliegen.

#8 Add simple CI to build the app

Eine funktionale CI – also ein automatisches Bauen der App, hilft im Verlauf einer Entwicklung, gewisse Qualitäts- und Quelltextstandards einzuhalten. Ebenso wäre es zu einem späteren Zeitpunkt möglich, über diesen Weg die Applikation nicht nur zu validieren und zu bauen, sondern auch in den Google Play Store zu übertragen.

Mein „Lessons learned“ bei diesem Ticket war, dass innerhalb einer GitHub Action jedes Segment in einer eigenen Sandbox läuft. Dies bedeutet, es bringt nichts, am Anfang der Action in das entsprechende Verzeichnis zu wechseln. Denn alle folgenden Schritte beginnen wieder im originalen Ausgangsverzeichnis.

Abhilfe hierfür schafft die „workspace“-Eigenschaft eines Action Schrittes. Hiermit lässt sich angeben, in welchem Ordner die folgenden Befehle eines Schrittes ausgeführt werden sollen.

Die entsprechende Action-Konfiguration findet ihr hier.

#9 Add Surface Duo SDK

Einer der großen Schritte, welche ich erreichen wollte, war die erfolgreiche Einbindung des offizielle Microsoft SDK für das Surface Duo. Komplett reibungslos verlief dies nicht, jedoch stand die TechNet Community für die SDKs immer mit dem passenden Tipp, wie ich ein Problem lösen kann, in der Tür, wenn ich des Öfteren an einem Schritt festhing.

Ein Dank sei hier vor allem an Kristen Halper von Microsoft ausgesprochen, welche sich die Zeit nahm, auch meine sehr offensichtlichen Fehler bei der Einbindung des SDK mir zu erläutern und Lösungswege aufzuzeigen.

#10 Add images of all available Autobahn courses

Es gibt auf GitHub nichts, was es nicht gibt. Hierzu zählt auch ein Artikel über das deutsche Bundesautobahnnetz. Wichtiger für mich war hierbei allerdings die Arbeit von NordNordWest & Lencer, welche zu den allermeisten Autobahnen deren Verlauf in einer standardisierte Kartengrafik dargestellt haben.

Durch die „Common Creative“-Lizenz solcher Medienelemente war ich in der Lage, entsprechende Bilder in der App für eine spätere Nutzung zu hinterlegen.

Die für die Verarbeitung der Bilder benötigten Skripte sind im Ordner „scripts/map-images-scripts/ hinterlegt.

Was ist nun geplant?

Die kommenden Schritte werden sich wieder auf Karten sowie die Verbesserung der Architektur der App konzentrieren, um etwaige Leichtsinnsfehler schon früh beseitigen zu können.

Folgende Tickets sind unter Anderem bis zum nächsten Artikel auf Dr. Windows geplant:

#13 – Add custom marker overlay dependent on marker type

Die nach einem Tap auf einen Map Marker eingeblendete Ansicht soll gegen eine, auf dem Map Marker Typen beruhende, Eigenentwicklung bekommen, um spezifische Daten anzeigen zu können. Beispielsweise eine Vorschau der Webcam, wenn man auf einen solchen Marker getappt hat.

#14 – Optimize resources / add resources in high res or vector-based

Hier zeigt sich, dass ich noch viel lernen muss. Ziel soll sein, alle verwendeten Assets entweder als Vektordatei zu haben oder in verschiedenen Auflösungen, um garantieren zu können, dass beispielsweise Icons immer scharf aussehen – egal mit welcher Auflösung das Android Smartphone gerade läuft.

Macht mit, es macht wirklich Spaß!

Bei offenen Fragen rund um das Mitwirken an der App mailt mir an [email protected] oder erstellt beziehungsweise schnappt euch gleich ein Issue auf GitHub, wo der komplette Quelltext der App liegt.

Einen großen Dank an Alle, die bereits mitgeholfen haben! Ohne die Hilfe von Marcel, Gina oder auch Klaus wäre ich noch nicht so weit gekommen. Eine volle Auflistung findet ihr in der Readme-Datei zum Projekt.

Lasst uns weiterhin gemeinsam dieses spannende Bastelprojekt weiterführen. Auf das nächste Dutzend! Vielen Dank für euer stetes Interesse.

Über den Autor

Tobias Scholze

Tobias Scholze

Bayrischer Open Source- und Community-Enthusiast, Verfechter des neuen Microsoft und Wandler zwischen den Betriebssystemwelten. #communityrocks Von Herzen ein Nerd mit der festen Überzeugung, dass man gemeinsam und durch den Einsatz von moderner IT die Welt für jeden ein Stückchen besser machen kann.

Anzeige