Einführung in Android 9. Dezember 2014 Was ist Android? Software für mobile Geräte: Betriebssystem Middleware Kernanwendungen Android SDK: Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform URL für Entwickler: developer.android.com Open Source Software Taentzer Einführung in die Softwaretechnik 261 Android Architektur developer.android.com Taentzer Einführung in die Softwaretechnik 262 Bibliotheken, Runtime und Kernel Android enthält eine Reihe von C/C++-Bibliotheken. z.B. SGL und 3D Librairies für 2D und 3D-Darstellungen z.B. SQLite als leichtgewichtiges relationales Datenbank-system Android Runtime Jede Android-Anwendung läuft in einem eigenen Prozess mit der sogenannten Dalvik Virtual Machine. Die Dalvik VM basiert auf einem Linux Kernel. Linux Kernel Android basiert auf der Linux Kernel Version 3.0.1 Der Kernel fungiert als Abstraktionsebene zwischen Hardware und dem Rest des Software Stack. Taentzer Einführung in die Softwaretechnik 263 Android Anwendungen Android enthält eine Reihe von Kernanwendungen. Email -Client, SMS-Programm, Kalender, Karten, Web-Browser, Kontakte, etc. Alle Anwendungen sind in Java geschrieben. Jede Anwendung hat ihre eigene Umgebung: eigener Linux-Prozess eigene Java-VM eindeutige Linux User Id (kann auch von anderen Anwendungen genutzt werden) Taentzer Einführung in die Softwaretechnik developer.android.com 264 Der Android SDK Manager Nach der Installation einer EclipseVersion mit ADT (Android Developer Tools). Zur Konfiguration von AndroidVersionen, die zur Entwicklung benutzt werden. Start: Windows-> Android SDK Manager Es können mehrere Versionen ausgewählt werden. Taentzer Einführung in die Softwaretechnik 265 Starten einer App im Emulator Android Virtual Device (AVD) anlegen AVD Manager aufrufen mit Create ein neues AVD anlegen Taentzer Einführung in die Softwaretechnik 266 Start einer App mit Genymotion Alternative für einen schnellen Emulator: www.genymotion.com kann als weiteres Device genutzt werden Download: Genymotion (mit Oracle Virtual Box) Plugin für Eclipse oder Intellij IDEA frei für persönliche Nutzung Taentzer Einführung in die Softwaretechnik 267 Beispiel: Eine einfache App für ein Bestellsystem Taentzer Einführung in die Softwaretechnik 268 Application Framework Activity Manager: organisiert den Lebenszyklus einer Anwendung Views: graphische Komponenten zum Aufbau einer Anwendung, z.B. Listen, Textfelder, Knöpfe und auch ein einbettbarer Web-Browser Content Providers: ermöglichen den Zugriff auf Daten, auch aus anderen Anwendungen Resource Manager: Zugriff auch Resourcen, die nicht Code sind, z.B. Graphiken Notification Manager: zur Benachrichtigung des Nutzers über Ereignisse Taentzer Einführung in die Softwaretechnik 269 Application Components Ausführbare Anwendungsteile: Activities: visuelle Komponente Beispiel: Liste von textuellen Kommentaren Eine Anwendung kann mehrere Activities haben, die sich gegenseitig benutzen. Eine Activity ist als Start-Activity markiert. Jede Activity hat ein eigenes Fenster, in das sie zeichnet. Services: nicht sichtbare Komponenten Beispiel: Ein Service, der Musik abspielt Broadcast Receiver: hört auf Broadcast-Nachrichten Beispiel: Wechsel der Zeitzone, geringer Batteriestand, Aufnahme eines Fotos, etc. Content Providers: veröffentlicht eine Menge von Daten für andere Anwendungen Daten sind meist in einer SQLite-Datenbank gespeichert. Taentzer Einführung in die Softwaretechnik 270 Erstellung einer neuen Android App Erstellung einer lauffähigen App: File>New>Android Application Project Taentzer Einführung in die Softwaretechnik 271 Die Android Manifest-Datei AndroidManifest.xml informiert Android über die Komponenten der Anwendung: Start-Activity Taentzer Einführung in die Softwaretechnik 272 Beispiel: Aufbau eines Android Application Projekts Taentzer Einführung in die Softwaretechnik 273 Layout graphischer Komponenten Layout-Definition durch eine XML-Layout Datei. Jedes XML-Element ist entweder ein View oder ein ViewGroup-Objekt. Vordefinierte ViewGroupObjekte: LinearLayout RelativeLayout AbsoluteLayout TableLayout etc. Layout-Parameter: height, width vordefinierte Werte: fillParent: füllt Platz des ParentView aus wrap_content: umhüllt den Inhalt minimal @+id/… verweist auf ids in der Datei R.java Taentzer Einführung in die Softwaretechnik 274 Die Datei R.java R.java wird aus den Inhalten im Ordner /res generiert und liegt unter /gen. R.java soll nicht geändert werden. Sie enthält einen Index für alle Ressourcen der Anwendung. Ressourcen sind z.B. Namen und Ids von graphischen Elementen. Diese Klasse kann als Abkürzung für die Referenzierung von Ressourcen genutzt werden. Taentzer Einführung in die Softwaretechnik 275 Lebenszyklus einer Activity Eine Activity hat drei mögliche Zustände: active oder running: auf dem Display zu sehen, Fokus der Ausführung paused: sichtbar, aber hat nicht den Fokus. Eine andere Activity liegt darüber. stopped: nicht sichtbar und ohne Fokus, der Zustand und die Daten werden solange gehalten, wie Speicher vorhanden Zustandswechsel werden durch Methodenaufrufe mitgeteilt: void onCreate(Bundle savedInstanceState) void onStart() void onRestart() Diese Methoden sollten zuerst void onResume() die entsprechende void onPause() Supermethode aufrufen. void onStop() void onDestroy() Alle Activities müssen onCreate() implementieren. Taentzer Einführung in die Softwaretechnik 276 Lebenszyklus einer Activity onCreate(): das normale Setup, Bundle-Objekt übergibt den bisherigen Zustand, danach direkt onStart() und onResume() onPause(): eine andere Activity wird aktiv, ungesicherte Daten werden gespeichert onStop(): eine andere Activity wird sichtbar oder Activity wird zerstört, onPause() wird immer vorher aufgerufen developer.android.com Taentzer Einführung in die Softwaretechnik 277 Beispiel: MainActivity.java onCreate wird überschrieben Finden von graphischen Komponenten mit findViewById Ids graphischer Komponenten in R.java Anonyme Klasse zur Behandlung von Events Taentzer Einführung in die Softwaretechnik 278 Ereignisse Die Interaktion mit graphischen Komponenten (Views) erfolgt über Ereignisse. Beispiele für Ereignisse (Events): Drücken eines Button (on Click) Drücken einer Taste (on Key) Berühren des Bildschirms (on Touch) Taentzer Zum Reagieren auf ein Ereignis muss ein View als EventListener registriert sein. Z.B: OnClickListener, OnKeyListener, OnTouchListener Über Ereignisse werden Benutzereingaben an graphische Komponenten kommuniziert. Je nach Typ der graphischen Komponente sind bestimmte Ereignisse aktiv. Einführung in die Softwaretechnik 279 Debuggen von Android Apps Breakpoints im Code setzen App im Debug-Modus ausführen Zur Debug Perspektive wechseln Schrittweise ausführen Code und Variablen inspizieren Taentzer Einführung in die Softwaretechnik 280 Zusammenfassung Android bietet einen Software-Stack für mobile Geräte, bestehend aus Betriebssystem, Middleware und Kernanwendungen Android SDK bietet Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform Activities folgen einem vorgegebenen Zustandsautomaten. Dadurch behält der Benutzer die maximale Kontrolle über die Anwendungen. Graphische Komponenten werden separat vom Code in XML spezifiziert. Jede Anwendung läuft in einem eigenen Prozess mit eigener Virtual Machine. Taentzer Einführung in die Softwaretechnik 281