seminarvortrag · activities anwendungskomponente, die eine interaktion für den benutzer...

51
SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER – EMBEDDED SYSTEMS – SS2013 - HSRM

Upload: others

Post on 29-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

SEMINARVORTRAGANDROID ENTWICKLUNG

ETIENNE KÖRNER – EMBEDDED SYSTEMS – SS2013 - HSRM

Page 2: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ÜBERSICHT

Android

Android DalvikVirtuelle Maschine

Android und Desktop Applikationen

Android Entwicklung

Tools

R

Activity Lifecycle

Quellen

Page 3: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ANDROID

Linux-basiertes Betriebssystem für mobile Geräte

Entwickelt durch Android Inc.

Weiterentwicklung durch Open Handset Alliance

> 1.000.000 Geräteaktivierungen pro Tag

> 1.500.000.000 App Downloads pro Monat

Page 4: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ANDROID DALVIKVIRTUELLE MASCHINE

Dalvik-VM (~Java-VM)

Tool „dx“ erzeugt ausführbare .dex

Rechteverwaltung für Hardware

Modularität in Android

Apps für Funktionen ersetzbar

z.B. Kamera, SMS, etc...

Page 5: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ANDROID UND DESKTOP APPLIKATIONEN

Verschiedene Laufzeitstati (siehe Lifecycle)

Mehrfachausführung einer Applikation (nicht bei Android)

Mehrere Apps gleichzeitig (vergleich Taskbar Windows)

Widgetunterstützung

Page 6: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ANDROID ENTWICKLUNG

Style Guides

DIE (ADT Bundle)

Apps bestehen aus Activities

Activities sind sichtbare „Bildschirme“, wobei die Activities nicht das Design sondern die Funktion dahinter sind.

Das Design ist austauschbar

Das Design sind Layouts (XML-Dateien beschreiben was, wo, wie steht)

Page 7: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

WAS WIRD BENÖTIGT?

WOMIT WIRD GETESTET?

WIE WIRD PROGRAMMIERT?

Page 8: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

TOOLS

Linux / Windows / Mac

Java

ADT Bundle (z.B.)

SDK

Eclipse

Android Development Tools

Page 9: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

WAS WIRD BENÖTIGT?

WOMIT WIRD GETESTET?

WIE WIRD PROGRAMMIERT?

Page 10: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

OPTION #1 - EMULATOR

Virtuelles Gerät

App kann direkt auf dem Gerät (emuliert, oder reales Gerät) ausgeführt werden

Testen verschiedener Größen & Seitenverhältnisse

Simulation von Interrupts (SMS, eingehender Anruf, …)

Simulation von Netzverlust (HSPA-Verbindungsabbruch)

Kameranutzung über Webcam / Laptop Kamera

Sensoren eines über USB angeschlossenen Android Gerätes nutzbar

Page 11: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

EMULATOR

Page 12: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

EMULATOR

Page 13: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

EMULATOR

Page 14: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

EMULATOR

Page 15: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

OPTION #2 – ANDROID GERÄT

Setzt Android Gerät vorraus

Verbindung mit dem Entwicklungsrechner über USB

Erscheint in Ausführungsauswahlfenster

Eventuell benötigter USB – Treiber

Schneller, aber nur eine Größe/Hardware testbar

Page 16: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

WAS WIRD BENÖTIGT?

WOMIT WIRD GETESTET?

WIE WIRD PROGRAMMIERT?

Page 17: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

LAYOUT

Layouts über XML-Dateien beschrieben

XML-Dateien beinhalten Elemente

ein Wurzelelement

Hinzufügen weiter Elemente zum Wurzelelement

Page 18: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach
Page 19: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach
Page 20: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

LINEAR LAYOUT

Rückt alle Elemente in eine Reihe oder Spalte

Breite/Höhe abhängig vom größten Element

LinearLayout in LinearLayout für mehrere Elemente

http://developer.android.com/images/ui/linearlayout.png

Page 21: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

RELATIVE LAYOUT

Relative Positionen

Position werden angegeben

android:layout_toLeftOf="@id/viewID"

android:layout_below= "@id/viewID"

android:layout_alignLeft="@id/viewID"

android:layout_centerHorizontal="true"

Es gibt noch weitere Möglichkeiten

http://developer.android.com/images/ui/relativelayout.png

Page 22: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

R

Generierte Datei, wird beim build erzeugt

Speichert Verweise zu Strings / IDs / Bilder / Layouts / …

Zugriff auf Elemente über R

Button myButton = (Button) findViewById(R.id.my_button);

ADT hilft Ordnung zu behalten

z.B. Text für Button vorgeben

Page 23: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

R

Page 24: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

R

Page 25: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

R

Page 26: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

R

Page 27: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ACTIVITIES

Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt

z.B. Anruf tätigen, Foto aufnehmen

Eine „main“ Activity, sichtbar nach Start der Applikation

Activities laden Layout XML sichtbarer Teil der Activity

Eine Applikation bestehen aus beliebig vielen Activities

Neue Activity aufrufen „noch“ aktuelle wird gestoppt und auf den „Back Stack“ gelegt

Page 28: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

BACK STACK

Vergleich Kartenstapel

Nur oberstes Element ist sichtbar

Neue Activities werden oben auf dem Stack platziert, darunter liegende gestoppt

Page 29: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

http://developer.android.com/images/fundamentals/diagram_backstack.png

Page 30: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

http://developer.android.com/images/fundamentals/diagram_backstack_singletask_multiactivity.png

Page 31: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

ACTIVITY LIFECYCLE

Scheinbar immer an

Zustände können weggespeichert werden

Page 32: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Aufruf der Activity

#1

Page 33: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

onCreate()

Aufruf der Activity

#1

Page 34: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

onCreate()

onStart()

Aufruf der Activity

#1

Page 35: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

onCreate()

onStart()

onResume()

Aufruf der Activity

#1

Page 36: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

Aufruf der Activity beendet

Activity ist fertig initialisiert und läuft

#1

Page 37: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

Eine andere Activity drängt sich in den

Vordergrund – Nutzereingaben sichern!

#1

protected void onSaveInstanceState(Bundle icicle) { super.onSaveInstanceState(icicle); icicle.putLong("param", value);

}

Page 38: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

onStop()

„Andere“ Activity läuft und die bisherige ist

nun nicht mehr sichtbar

#1

Page 39: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

onDestroy()

onStop()

Activity beendet sich oder wird vom System

gekilled

#1

Page 40: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

onDestroy()

onStop()

Activity

beendet

Activity wird nicht mehr ausgeführt / ist

beendet

#1I‘m done

Page 41: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

but wait…

there‘s more!

ACTIVITY LIFECYCLE

Page 42: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

Activity zurück im Vordergrund (durch

Benutzernavigation z.B.)

#2

Page 43: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

Eine App mit höherer Priorität braucht

Speicher

onStop()

App Prozess

gekilled

#3

Page 44: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

User navigiert zur Activity

onStop()

App Prozess

gekilled

#3

public void onCreate(Bundle icicle) { value = icicle.getLong("param");

}

Page 45: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

User navigiert zurück zu nicht-sichtbarer

Activity

onStop()

App Prozess

gekilled

onRestart()

#4

Page 46: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

Activity

gestartet

Activity läuft

onCreate()

onStart()

onResume()

onPause()

Gesamtübersicht

onStop()

App Prozess

gekilled

onRestart()

#4

onDestroy()Activity

beendet

Page 47: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

INHALT EINES PROJEKTS

src Quellcode

gen generierter Code (R.java)

libs eingebundene Libraries

res Resources

Drawables (Bilder in verschiedenen Größen/Auflösungen)

Layouts (XML Dateien)

Values (z.B. strings.xml)

Manifest Datei

Page 48: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

DEMO – ACTIVITY LIFECYCLE

Page 49: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

QUELLEN (INFORMATIONEN)

„Android 4“ von Thomas Künneth

developer.android.com

Page 50: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

QUELLEN (BILDER)

http://developer.android.com/images/sdk-cube.png

http://www.androidguys.com/wp-content/uploads/2012/01/android_dead.jpg

http://www.empowernetwork.com/alphamatter/files/2013/03/Android-Icon-waving.jpg

http://andymorton.org/wp-content/uploads/2011/03/android-reading.png

http://developer.android.com/images/ui/linearlayout.png

http://developer.android.com/images/ui/relativelayout.png

http://developer.android.com/images/fundamentals/diagram_backstack.png

http://developer.android.com/images/fundamentals/diagram_backstack_singletask_multiactivity.png

Page 51: SEMINARVORTRAG · ACTIVITIES Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt z.B. Anruf tätigen, Foto aufnehmen Eine „main“ Activity, sichtbar nach

FRAGEN?