Seminarvortrag Entwicklung mobiler Applikationen mit Android Moritz Hübner ([email protected]) Lehrstuhl für Medizintechnik Helmholtz-Institut für Biomedizinische Technik der RWTH Aachen Pauwelsstraße 20 52074 Aachen Motivation • Arbeit an einem Projekt Workfloweditor • Anforderung Mobilität der App im Klinikalltag ergonomische Oberfläche • Tablet mit Plattform Android Vorteil Entwicklung auf Windows möglich schnelles Prototyping und viele Quellen durch große Community • Seminar wurde genutzt um Erfahrung mit Android zu sammeln Grundlage des Projekts Überblick • Motivation • Hintergrund Was ist Android? Geschichte Welche Werkzeuge gibt es? • Wie ist eine Applikation aufgebaut? Lebenszyklus einer Activity und Minimalactivity Die Oberfläche R.java • Intents und Intentfilter • • Datenverwaltung und –speicherung SQLite Content Provider Fazit Was ist Android? • kein Betriebssystem, sondern Kompendium verschiedener Software Linux als Betriebssystem (Treibermodell, Speicher- und Prozessverwaltung, Abstraktionsschicht etc.) Kernel 2.6 Dalvik als Laufzeitumgebung für Android Applikationen (virtuelle Maschine) auch vorinstallierte Anwendungen, wie der Email Client, werden dort ausgeführt erstellt von jeder Anwendung ein Dalvik Executable Ausführung auf Linux Email Client, Widget Unterstützung, Kontaktdatenbank, Uhr, Browser, Android Market (oft aber nicht immer), etc. Ausführung ebenfalls durch Dalvik Geschichte • 2003 beginn der Entwicklung mit der neu gegründeten Android Inc. unter Andy Rubin Softwareentwickler bei Apple Inc., General Magic, Android Inc. und heute bei Google arbeitete bei General Magic bereits an einem Betriebssystem mit grafischer Oberfläche für mobile Geräte maßgebliche Beteiligung an der Auslieferung des ersten kabellosen PDAs • 2005 Google kauft Android Inc. konsequente Fortsetzung der Entwicklung unter Andy Rubin • 2007 offizielle Ankündigung und Veröffentlichung des SDKs Anlockung von Entwicklern mit Preisgeldern Geschichte Open Handset Alliance (OHA) tritt in Erscheinung Zusammenschluss von 34 Firmen aus den Bereichen Entwicklung, Netzbetrieb u. Geräteherstellern unter der Führung von Google • 2008 Veröffentlichung des HTC Dream G1 mit Android 1.0 • Heute OHA angewachsen auf 80 Unternehmen inzwischen Android 4.0 700.000 Gerätaktivierungen am Tag in 3 Jahren Welche Werkzeuge gibt es? ADT Plugin (Android Development Tools) Android SDK Überblick • Motivation • Hintergrund Was ist Android? Geschichte Welche Werkzeuge gibt es? • Wie ist eine Applikation aufgebaut? Lebenszyklus einer Activity und Minimalactivity Die Oberfläche R.java • Intents und Intentfilter • • Datenverwaltung und –speicherung SQLite Content Provider Fazit Wie ist eine Applikation aufgebaut? • Eine App kann aus verschiedenen Komponenten bestehen … Activity, Service, Fragment und Broadcast Receiver nur die Activity ist als Einstiegspunkt essentiell (impliziter Intent) • Activity Definition in der Manifestdatei Modul welches eine Aufgabe erfüllt definiert eine Benutzeroberfläche durch einen XML Baum Interaktion mit der Plattform durch bestimmte Listener Methoden, welche sich am Lebenszyklus der Activity orientieren Wie ist eine Applikation aufgebaut? • Verwaltungsdatei einer App • Informationen über ihre Komponenten und ihr Zusammenspiel Lebenszyklus einer Activity und Minimalactivity Hier bietet es sich an Datensätze in einer Datenbank zu speichern! Die App pausiert sobald z.B. ein Abfragedialog erscheint. Die Oberfläche Oberfläche als XML Baum R.java Überblick • Motivation • Hintergrund Was ist Android? Geschichte Welche Werkzeuge gibt es? • Wie ist eine Applikation aufgebaut? Lebenszyklus einer Activity und Minimalactivity Die Oberfläche R.java • Intents und Intentfilter • • Datenverwaltung und –speicherung SQLite Content Provider Fazit Intents und Intentfilter • dienen der Kommunikation von Activities innerhalb der App und mit Activities anderer Apps oder des Systems vielen Anwendungen reicht eine Activity nicht Daten müssen über ihre Grenzen hinaus ausgetauscht werden • Start einer Activity erfolgt explizit oder implizit impliziter Start erfordert eine action und eine category in dem intent-filter Attribut des Activity Tags in der Manifestdatei data Tag kann angehangen werden um ein Schema für URI (Uniform Resource Identifier) Objekte als Daten mitzugeben im Code wird ein Intent erstellt der die action verarbeitet Intents und Intentfilter expliziter Start erfordert die Ausgangsactivity (this) und die Zielactivity MyActivity.class im Code wird ein Intent mit beiden Activities erstellt und damit die Zielactitivity gestartet auch hier können Daten an den Intent gehangen werden Bundle (assoziative Vorgehensweise Key-Value Paare) wird in der Zielactivity wieder ausgelesen Impliziter Intent Expliziter Intent Überblick • Motivation • Hintergrund Was ist Android? Geschichte Welche Werkzeuge gibt es? • Wie ist eine Applikation aufgebaut? Lebenszyklus einer Activity und Minimalactivity Die Oberfläche R.java • Intents und Intentfilter • • Datenverwaltung und –speicherung SQLite Content Provider Fazit SQLite • Verdeutlichung anhand der „Meine Stimmung App“ • zentrale Klassen SQLiteOpenHelper und SQLiteDatabase SQLiteOpenHelper abstrakte Klasse wird meist in einer abgeleiteten Klasse umgesetzt um eigene Anpassungen einzuarbeiten Pflicht die Methoden onCreate() und onUpgrade() zu überschreiben onCreate() beinhaltet Logik um Verbindung zu einer Tabelle herzustellen oder eine neue zu erstellen onUpgrade() beinhaltet Logik um je nach Situation ev. neue Spalten hinzuzufügen und alten Zustand zu speichern SQLiteOpenHelper bietet Methoden an um les– und schreibbare Instanzen von SQLiteDatabase zu bekommen ermöglicht Implementierung von Logik für Einfüge-, Aktualiesierungs- oder Löschoperationen Datenbankzugriff bietet Methoden an um SQL Statements auszuführen ( void execSQL(String sql)) bietet sich für Erstellung und Löschen von Tabellen an, also Operationen der DDL (Data Definition Language, execSQL() kein Rückgabewert) DML Operationen (Data Manipulation Language) verkapselt in Methoden die wenig SQL Kenntnisse erfordern Datenbankzugriff Künneth, T.: Android 3 Apps entwickeln mit dem Android SDK. 1. Aufl. Bonn: Galileo Press 2011. Datenbankzugriff Datenbankzugriff Content Provider • dienen dazu Daten anderen Applikationen zugänglich zu machen • jeder Content Provider muss in der Manifestdatei mit seinem voll qualifizierten Namen angegeben werden (Authority) dieser Name wird als Teil der CONTENT_URI angegeben trains würde jetzt die Tabelle bezeichnen von der die Daten kommen es könnten auch Webservices oder RSS Feeds als Datenquelle dienen • in der abgeleiteten Klasse des Content Providers müssen Methoden der Datenmanipulation und –definition überschrieben werden (ContentProvider abstrakte Klasse) Content Provider diese Methoden heißen insert(), delete(), query() und update() bekommen ein URI Objekt übergeben Prüfung ob ein Datensatz oder alle Datenbestände betroffen sind • Content Provider müssen nicht initialisiert werden durch die Registrierung in der Manifestdatei und mit ihrer URI werden sie aus einer Activity direkt angesprochen ContentResolver getContentResolver() liefert ContentResolver der die Methoden der ContentProvider aufrufen kann an Hand der CONTENT_URI wird entschieden welcher ContentProvider ausgewählt wird Content Provider Überblick • Motivation • Hintergrund Was ist Android? Geschichte Welche Werkzeuge gibt es? • Wie ist eine Applikation aufgebaut? Lebenszyklus einer Activity und Minimalactivity Die Oberfläche R.java • Intents und Intentfilter • • Datenverwaltung und –speicherung SQLite Content Provider Fazit Fazit • Beschreibung grundlegender Features Activities, Intents –und Intentfilter, SQLite, ContentProvider, Resourcenmanagement etc. • Features sind nachvollziehbar • Plattform angepasst an zeitliche Trends der Entwicklung mobiler Applikationen • große Entwicklergemeinde • Sicherheit der Weiterentwicklung durch viele Geräte Quellen • Künneth, T.: Android 3 Apps entwickeln mit dem Android SDK. 1. Aufl. Bonn: Galileo Press 2011. • Becker, A., Pant, M.: Android Grundlagen und Programmierung. 1.Aufl. Heidelberg: dpunkt.verlag GmbH 2009. • Android Developers http://developer.android.com/index.html Entwicklung mobiler Applikationen mit Android Moritz Hübner ([email protected]) Lehrstuhl für Medizintechnik Helmholtz-Institut für Biomedizinische Technik der RWTH Aachen http://www.meditec.hia.rwth-aachen.de