2019-02-22 14:28:41 +00:00
|
|
|
|
# Mobile_Application_Development_lab
|
2019-02-22 15:05:51 +00:00
|
|
|
|
##### Lab Notes von Philipp Wolfmajer & Matthias Schreiner
|
2019-02-22 14:28:41 +00:00
|
|
|
|
|
2019-02-22 15:05:17 +00:00
|
|
|
|
## 22.02.2019 - Lab 1
|
2019-02-22 14:31:20 +00:00
|
|
|
|
- Überblick über Android allgemein
|
|
|
|
|
- Entwicklungsumgebung eingerichtet (Android Studio)
|
|
|
|
|
- AndroidManifest.xml angesehen
|
2019-02-22 14:34:55 +00:00
|
|
|
|
- Graddle Module:app (betrifft nur aktuelle Modul)
|
|
|
|
|
- applicationid ist wichtig für den Play Store, bei Änderung bedeutet das -> neue App
|
|
|
|
|
- dependencies
|
|
|
|
|
- Projektweites Graddle File
|
|
|
|
|
- wenn z.B. neues Android Wear App dazu entwickelt wurde
|
2019-02-22 14:45:33 +00:00
|
|
|
|
- unterschiedliche Events die eine App haben kann (onCreate, etc.)
|
2019-02-22 14:57:33 +00:00
|
|
|
|
- Activities sind Ansichten der App
|
2019-02-22 14:56:19 +00:00
|
|
|
|
- Intent -> sind Nachrichten die andere Activities aufrufen
|
|
|
|
|
- Intent mit Result verwendet beim Aufruf immer einen Request Code damit man das Resultat zuordnen kann (z.B. Pfad zu einem Bild)
|
2019-02-22 15:02:00 +00:00
|
|
|
|
- Actions -> Android kümmert sich um das App das eine Aktion ausführt (z.B. ACTION_CALL)
|
2019-03-01 18:10:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 01.03.2019 - Lab 2 Online
|
|
|
|
|
- Starten mit AirKoality APP
|
|
|
|
|
- Leere App von Grund erstellen (keine Vorlage gewählt)
|
2019-03-01 18:15:03 +00:00
|
|
|
|
- Importieren der notwendigen Ressourcen von der e-learning Plattform
|
2019-03-01 18:10:50 +00:00
|
|
|
|
- Anlegen und implementieren folgender Klassen
|
|
|
|
|
- MainActivity.java
|
2019-03-01 18:15:03 +00:00
|
|
|
|
- SplashActivity.java – Ladebildschirm mit Verzögerung (delay)
|
2019-03-01 18:10:50 +00:00
|
|
|
|
- Anlegen und implementieren folgender Ressourcen
|
|
|
|
|
- activity_main.xml
|
|
|
|
|
- activity_splash.xml
|
|
|
|
|
- Editieren der Farben, Strings und Styles in den jeweiligen Files unter /res/values/
|
|
|
|
|
- Hinzufügen der Activities in der AndroidManifest.xml Datei
|
2019-03-01 18:15:03 +00:00
|
|
|
|
- strings.xml kennengelernt um Texte einer App zentral verwalten zu können
|
2019-03-08 18:03:00 +00:00
|
|
|
|
|
2019-03-08 19:05:22 +00:00
|
|
|
|
## 08.03.2019 - Lab 3
|
2019-03-08 18:03:00 +00:00
|
|
|
|
|
|
|
|
|
Context -> weiß was in der App gerade "abgeht" (Java Objekt)
|
2019-03-08 19:23:28 +00:00
|
|
|
|
- Activity oder Application
|
|
|
|
|
- Immer Context der aktuellen Activity verwenden
|
2019-03-08 18:03:00 +00:00
|
|
|
|
|
|
|
|
|
Best Practise kennengelernt um große Listen darzustellen
|
|
|
|
|
|
2019-03-08 19:05:22 +00:00
|
|
|
|
Liste bekommt einen Adapter und stellt dann nur Listenelemente dar, die gerade am Bildschrim angezeigt werden.
|
|
|
|
|
|
|
|
|
|
Card View Layout ausprobiert
|
|
|
|
|
|
2019-03-08 19:26:28 +00:00
|
|
|
|
Toast Messages implementiert -> Pop up Nachrichten im unteren Bereich des Bildschirms
|
2019-03-15 17:08:47 +00:00
|
|
|
|
|
|
|
|
|
|
2019-05-18 07:49:05 +00:00
|
|
|
|
## 15.03.2019 - Lab 4 Online
|
2019-03-15 17:08:47 +00:00
|
|
|
|
|
|
|
|
|
RecyclerView -> Items der View wiederverwendbar machen
|
|
|
|
|
- vorsicht bei ausgewählten Items (Adapter muss sich Position merken)
|
2019-03-15 17:50:50 +00:00
|
|
|
|
- onBindViewHolder: Selection über Index merken und Hintergrundfarbe je nach Index anpassen, da die RecyclerView wieder verwednet wird.
|
2019-03-15 17:08:47 +00:00
|
|
|
|
|
|
|
|
|
### Fragments
|
2019-03-15 17:50:50 +00:00
|
|
|
|
- Sind gekapselte Elemente, damit keine unnötigen Elemente geladen werden. (Details siehe Folie)
|
2019-03-15 17:08:47 +00:00
|
|
|
|
- ursprünglich für Tablets entwickelt
|
|
|
|
|
- Darstellung von z.B. Listen und Inhalt gleichzeitig
|
2019-03-15 17:50:50 +00:00
|
|
|
|
- Fragments erstellen (Klassen und Layout) und ManActivity.java auseindader teilen
|
2019-03-15 17:08:47 +00:00
|
|
|
|
|
|
|
|
|
### Storage
|
|
|
|
|
- unterschiedliche Möglichkeiten der Speicherung
|
|
|
|
|
- local storage (im App Verzeichnis)
|
|
|
|
|
- external storage
|
2019-03-15 17:43:55 +00:00
|
|
|
|
- shared preferences (key - value pairs, internes XML file)
|
|
|
|
|
- SQLite -> single file database
|
2019-03-15 17:50:50 +00:00
|
|
|
|
- Permissions beim Speichern beachten
|
2019-04-13 10:13:55 +00:00
|
|
|
|
- mit SharedPreferences das letzte Fragment laden
|
|
|
|
|
|
|
|
|
|
## 13.04.2019 - Lab 5
|
|
|
|
|
|
2019-04-13 10:31:50 +00:00
|
|
|
|
- SQ-Lite implementierung angeschaut aber unser Projekt wird auf Room aufgesetzt
|
2019-04-15 04:38:35 +00:00
|
|
|
|
- Room arbeitet mit Annotationen -> viel weniger Code im vergleich zu SQ-Lite
|
2019-04-13 11:59:29 +00:00
|
|
|
|
- Network
|
2019-05-10 16:50:32 +00:00
|
|
|
|
- HttpsGet Methoden implementiert (waren vorgegeben)
|
|
|
|
|
|
|
|
|
|
|
2019-05-18 07:49:05 +00:00
|
|
|
|
## 03.05.2019 - Lab 6 Online
|
|
|
|
|
|
2019-05-19 19:16:12 +00:00
|
|
|
|
- Progress Dialog erstellt/ergänzt
|
|
|
|
|
- JSON mit Locations von der API entsprechende Parsen und in die DB schreiben
|
|
|
|
|
- Latest Mesurement Entity erstellt, Typeconverter für Room aus dem Etherpad
|
|
|
|
|
- Room entsprechend um die Entity erweitert
|
|
|
|
|
- MeasurementActvity vom Moodle; resource Files einbinden
|
|
|
|
|
- Internet Permission in der Manifest Datei hinzugefügt
|
|
|
|
|
- Broadcast Receiver implementiert – automatisches abrufen der API bei einer Internetverbindung
|
|
|
|
|
|
2019-05-18 07:49:05 +00:00
|
|
|
|
|
|
|
|
|
## 10.05.2019 - Lab 7
|
2019-05-10 16:50:32 +00:00
|
|
|
|
|
|
|
|
|
- Unterschied Service - Background Task
|
|
|
|
|
- Service: Wenn etwas im Hintergrund laufen muss (z.B. Nuki App)
|
|
|
|
|
- BT: z.B Musik Player, immer wenn der User nicht mit der App Interagieren will
|
|
|
|
|
|
|
|
|
|
Service sollte immmer eine Aktion die er ausführt in einem extra Thread auslagern.
|
|
|
|
|
|
|
|
|
|
Service wird im Manifest deklariert
|
|
|
|
|
Um einen Foregroundservice zu starten muss das innerhalb von 5 Sekunden nach "start Service" (Intent)
|
|
|
|
|
|
|
|
|
|
|
2019-05-18 06:57:06 +00:00
|
|
|
|
Notifications benötigen immer einen Channel und Channel ID (ab Android O verfügbar)
|
|
|
|
|
|
|
|
|
|
|
2019-05-18 07:49:05 +00:00
|
|
|
|
## 17.05.2019 - Lab 8 Online
|
2019-05-18 06:57:06 +00:00
|
|
|
|
|
2019-05-18 17:35:18 +00:00
|
|
|
|
Dependency im app gradle File ergänzt:
|
|
|
|
|
• google Play Services: implementation 'com.google.android.gms:play-services-location:16.0.0'
|
2019-05-18 07:24:22 +00:00
|
|
|
|
|
2019-05-18 17:35:18 +00:00
|
|
|
|
Map Fragment implementiert
|
2019-05-18 07:32:15 +00:00
|
|
|
|
|
2019-05-18 17:35:18 +00:00
|
|
|
|
Neue Permission ACCESS_FINE_LOCATION für GPS Zugriff-> wieder in AndroidManifest.xml
|
|
|
|
|
Location Service implementeirt
|
2019-05-18 07:32:15 +00:00
|
|
|
|
|
2019-05-18 17:36:55 +00:00
|
|
|
|
ActivityMain:
|
2019-05-18 07:32:15 +00:00
|
|
|
|
• Überprüfung Permission bei startLocationService hinzufügen
|
2019-05-18 17:35:18 +00:00
|
|
|
|
• start/stop Locationservice implementiert/erweitert
|
2019-05-18 07:32:15 +00:00
|
|
|
|
|
|
|
|
|
|
2019-05-18 07:24:22 +00:00
|
|
|
|
|
2019-05-18 07:49:05 +00:00
|
|
|
|
## 18.05.2019 - Lab 9 Online
|
2019-05-18 07:24:22 +00:00
|
|
|
|
|
2019-05-18 07:32:15 +00:00
|
|
|
|
- Clustering von Map Fragments um Performance der App zu optimieren -> Je nach Zoomfaktor werden MapMarker gruppiert. (ClusterManager)
|
|
|
|
|
|
|
|
|
|
- Content Provider kennengelernt
|
|
|
|
|
- wird verwendet um Daten für andere Apps bereitzustellen (z.B. Kontakte)
|
2019-05-18 08:58:37 +00:00
|
|
|
|
- besteht aus URI - Content Resolver - Content Provider - Persistierung
|
|
|
|
|
- Messdaten aus AirKoality in andere App übertragen (als PNG) [App die den Intent entgegennimmt muss den Filtype unterstützen]
|
|
|
|
|
|
|
|
|
|
- Wie kann eine App published werden?
|
|
|
|
|
- Apk-File direkt (unsicher und unschön)
|
|
|
|
|
- Market Places
|
|
|
|
|
- Google Play
|
|
|
|
|
- Amazon
|
|
|
|
|
- Um im Play Store zu publishen muss man einen Developer Account anlegen (einmalige Zahlung von 25$)
|
|
|
|
|
- max. 100MB
|
|
|
|
|
- Target API ab Version 26
|
|
|
|
|
- App signing
|
|
|
|
|
- App wird mit einem Zertifikat signiert (Release oder Debug)
|
|
|
|
|
- alle folgenden Updates der App müssen mit dem gleichen Key signiert werden
|