Android-App
Hier findest Du Informationen, falls Du an der (Weiter-)Entwicklung der LMU-Raumfinder Android-App interessiert bist.
Ursprung
Die ursprüngliche Version der Android-App wurde im Rahmen des Praktikums Mobile Und Verteilte Systeme im Wintersemester 2013/14 entwickelt. Diese enthielt noch mehr Features als die aktuelle App (z.B. Indoor-Routing und Indoor Localization via WLAN-Fingerprinting), welche jedoch vorläufig entfernt wurden, da es sich mehr um "Proof-of-Concept"-Implementierungen handelte. Der Code aus dem damaligen Praktikum lässt sich noch hier einsehen (ein Account bei Gitlab wird benötigt).
Nach dem Praktikum wurde der Code komplett neu geschrieben und nur noch die Kernfunktionalitäten implementiert. Ziel war es, die App für alle Studenten zu veröffentlichen und Interessierten die Weiterentwicklung zu ermöglichen.
Repository
Der Code befindet sich, wie der Rest des Projekts, auf GitHub: https://github.com/lmu-navigator/android
Möchtest Du etwas zum Projekt beitragen, so sind Pull Requests jederzeit willkommen. Falls Du Interesse hast, mittel- oder längerfristig an dem Projekt zu arbeiten, statten wir Dich natürlich gerne mit allen Schreib- und Leserechten für das Repository aus. Bitte melde Dich bei uns! TODO: Kontakt!
Setup/Installation
Es werden das Android-SDK und Android Studio benötigt. Informationen zur Installation findest Du auf der offiziellen Android-Developer Webseite.
Lade zunächst den Code herunter, z.B. via git-clone auf der Kommandozeile:
git clone git@github.com:lmu-navigator/android.git
Android Studio
Importiere das Projekt in Android-Studio:
- Starte Android-Studio und wähle Open an existing Android Studio project
- In der folgenden Pfadauswahl wähle das Projekt-Root-Verzeichnis (android/) aus
- Folge allen eventuellen Anweisungen, die Standardeinstellungen können i.d.R. alle beibehalten werden
Kommandozeile
Die App lässt sich auch über die Kommandozeile bauen (aus dem Root-Verzeichnis):
./gradlew assemble
Die fertige .apk-Datei befindet sich anschließend im Ordner app/build/outputs/apk/ und lässt sich
beispielsweise via adb
installieren.
Google API Key
Damit die Google Maps Karte in der App angezeigt wird, muss jeder Entwickler sein Debug-Zertifikat in der Google-API-Konsole eintragen. Wir nutzen dafür immer noch den alten Praktikumsaccount, dies könnte sich jedoch in Zukunft ändern. Melde Dich bei uns und wir fügen Dein Zertifikat hinzu!
Code Dokumentation
Der Code ist derzeit nur wenig dokumentiert. Wer jedoch mit Android-Entwicklung vertraut ist, sollte sich schnell zurecht finden können.
Das Datenmodell ist in der Server-Dokumentation beschrieben.
App Design
Das User Interface der App orientiert sich an den Material Design Guidelines.
3rd-Party Libraries
Folgende Open-Source-Bibliotheken werden verwendet und sind größtenteils gut dokumentiert:
- realm-java: Datenbank
- Butterknife: View-Injection
- Retrofit: Network/REST library
- Picasso: Image library
- android-maps-utils: Map clustering
- TileView: Kachel-View für Gebäudeplanansicht
- simmetrics: Fuzzy Suche
- guava
- EventBus
- material-dialogs
- PagerSlidingTabStrip
- CircularImageView
- Android-ObservableScrollView
- commons-lang
- FloatingActionButton
- Prefs
- Google Play Services
- Google Support Libraries
Wichtig: Die Lizenzen zu allen Open-Source-Bibliotheken müssen in der App aufgeführt werden!
Bug Tracker
Bugs oder Feature Requests können auf GitHub gemeldet werden.
Future Work
Zusätzliche Features könnten sein:
- Informationen zur Barrierefreiheit der Gebäude
- Integration von "Points of Interests" wie Mensen, Bibliotheken, Toiletten, etc.
- Mehr Kontextinformationen zu Gebäuden und Räumen, z.B. ansässige Institute, Raumbelegung, etc.
- Indoor-Routing
- Indoor-Positionierung, z.B. mit WLAN-Fingerprinting