Mobile_Application_Developm.../README.md

140 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

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
## 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
- 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