Mobile Informationssysteme I

Größe: px
Ab Seite anzeigen:

Download "Mobile Informationssysteme I"

Transkript

1 Mobile Informationssysteme I Peter Becker Hochschule Bonn-Rhein-Sieg Fachbereich Informatik Vorlesung Sommersemester 2010

2 Allgemeines zur Vorlesung Vorbemerkungen Homepage zur Veranstaltung: Die Folien zur Vorlesung (Skript) stehen auf der Homepage vor der Vorlesung zur Verfügung. Format: PDF, einseitig Folien sind knapp, hoher Selbstlernanteil Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

3 Übungen Vorbemerkungen Beginn: 6. April 2010 Pool-Raum C 063 Programmieraufgaben, Literaturstudium, etc. Bearbeitungszeit: abhängig von den Aufgaben, i.d.r. ein bis zwei Wochen Sie bekommen Zugriff auf das Labor Wissens- und Informationsmanagement. ux-2e00.inf.fh-bonn-rhein-sieg.de Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

4 Lernziele Vorbemerkungen Funktionsweise von Softwareschnittstellen für mobile Geräte kennenlernen und verstehen. Vertiefte Kenntnisse in der Programmierung erlangen. Selbständig Programme für mobile Geräte entwickeln können. Aspekte des modernen Softwaredesigns kennenlernen und anwenden können. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

5 Modulzuordnung und Studienleistung Vorbemerkungen Modulgruppe: Wahlpflicht (WP) 4. Semester 2V + 3Ü, 5 Credits Prüfung in der letzten Semesterwoche oder den ersten Wochen des Vorlesungszeitraums des folgenden Semesters Die Prüfungsform steht noch nicht fest, wahrscheinlich mündlich Prüfung über Inhalte der Vorlesung und Übung Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

6 Inhalt Vorbemerkungen 1. Software-Plattform Android 2. GUI-Programmierung für mobile Geräte 3. Persistenz und Datenbanken 4. Software-Komponenten in Android 5. Threads, Server-Prozesse, Benachrichtigungen 6. Netzwerkprogrammierung für mobile Geräte Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

7 Literatur Vorbemerkungen Reto Meier Professional Android 2 Application Development Wiley Publishing 2010 Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

8 Vorbemerkungen A. Becker, M. Pant Android. Grundlagen und Programmierung dpunkt Verlag 2009 Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

9 Vorbemerkungen Heiko Mosemann Android. Anwendungen für das Handy- Betriebssystem erfolgreich programmieren Hanser Fachbuch 2009 Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

10 1. Software-Plattform Android Themenübersicht 1. Software-Plattform Android Themen/Lernziele: Mobile Informationssysteme: Grundbegriffe Elementare Eigenschaften von Android Android Software Stack Entwicklungsumgebung Prozess der Entwicklung Erste Beispiele Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

11 1. Software-Plattform Android Themenübersicht Mobile Anwendung kommuniziert drahtlos mit anderen Anwendungen Ortsunabhängigkeit evtl. Lokalisierbarkeit Besondere Anforderungen an Sicherheit, Identifizierbarkeit, Verfügbarkeit, Datenverteilung, Lastverteilung Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

12 1. Software-Plattform Android Themenübersicht Mobiles Informationssystem Ein Mobiles Informationssystem besteht aus einer oder mehreren mobilen Anwendungen und der darunter liegenden verteilten Datenhaltungsschicht. Bei mobilem Zugriff auf zentral verfügbare Informationen spricht man von einem Mobilität unterstützendem Informationssystem. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

13 1. Software-Plattform Android Themenübersicht Mobilität Mobilität im Kontext mobiler Informationssysteme: geographische und zeitliche Änderungen einer mobilen Anwendung Mobile Computing befasst sich mit dem Einsatz von Informationstechnologie in mobilen Umgebungen. Berücksichtigt u. a. die Kommunikation von mobilen Anwendungen oder Clients untereinander. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

14 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Mobile Computing Sammelbegriff für eine Reihe von Forschungsfeldern, die sich mit der nichtstationären Nutzung von Computertechnologie beschäftigen, z.b.: Ubiquitous Computing Pervasive Computing Wearable Computing Nomadic Computing Mobile Communications Wireless Communications Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

15 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Verwandte Begriffe Nomadic Computing: Verwendung mobiler Clients zusammen mit drahtloser Netzwerktechnologie. Stärkere Fokussierung auf die drahtlosen Kommunikationsfähigkeiten mobiler Clients. Ubiquitous Computing/Pervasive Computing: Weltweit vernetzte Systeme, die überall verfügbar sind und sich in Alltagsgegenstände integrieren. Technische Umsetzung einer digitalen Dienstleistung bleibt u. U. verborgen. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

16 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Mobilität und Drahtlosigkeit nichtmobil mobil drahtgebunden stationärer Rechner Netbook mit Kabelanbindung drahtlos Desktop mit WLAN Handy mit UMTS Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

17 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Arten der Mobilität Endgerätemobilität: mobiles Endgerät mit permanent gesichertem drahtlosen Zugriff auf ein Kommunikationsnetz. Benutzermobilität: Ein Nutzer, der seinen Standort ändert, verwendet beliebige fest installierte oder mobile Endgeräte. Dienstmobilität: Ein Benutzer kann einen Kommunikations- oder Informationsdienst unabhängig vom Standort nutzen. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

18 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Location Based Services Anwendungen, die die aktuelle Position eines Nutzers/Clients ermitteln und diese Position für die Erbringung der Nutzleistung ausnutzen heißen Location Based Services (LBS). Anwendungsgebiete für LBS: Suche nach speziellen Einrichtungen möglichst in der Nähe Navigation Lokalisation von Personen oder Objekten Verkehrsinformationen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

19 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Ortsabhängige Werbung Weitergabe der Positionsdaten im Notfall Dynamische ortsabhängige WWW-Links Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

20 1. Software-Plattform Android Mobile Informationssysteme: Grundbegriffe Arten der Positionsbestimmung Tracking: Lokalisierung von Objekten oder Personen durch ein Sensornetz Objekt/Person ist mit einer Marke (Tag) ausgestattet. Positionsdaten liegen zunächst nur dem Positionsermittlungssystem vor. Positioning: Das/der Objekt/Client ermittelt seine Position selbständig System von Sendern oder Baken die Signale ausstrahlen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

21 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel 2.6 Managed Code, Angepasste Java Virtual Machine Bibliotheken, Laufzeitumgebung, Application Framework Entwicklungswerkzeuge Application Store (Andoid Market) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

22 1. Software-Plattform Android Android Wer steht hinter Android? Google Open Handset Alliance (OHA), 65 Firmen z.b.: Google, ebay,... HTC, Motorola,... Intel, Qualcomm,... Vodafone, T-Mobile,... Ziel: Entwicklung von offenen Standards für mobile Geräte Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

23 1. Software-Plattform Android Android Aktuelle Versionen 1.5 Cupcake 1.6 Donut 2.0/2.1 EClair Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

24 1. Software-Plattform Android Android Andere Plattformen für mobile Geräte Symbian OS Java ME Windows Mobile iphone OS Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

25 1. Software-Plattform Android Android T-Mobile G1 / HTC Dream Das erste verfügbare Android-Mobiltelefon: Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

26 1. Software-Plattform Android Android Android-Anwendungsprogramme Clients: GMail, POP3, IMAP Personal Information Management (PIM): Synchronisation mit Google Calendar und Contacts WebKit-basierter Web-Browser SMS und Instant Messaging Android Market Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

27 1. Software-Plattform Android Android Android SDK Features XML-basiertes GUI-Layout (Trennung von Logik und Layout) Ünterstützung zur automatische Anpassung an verschiedene Konfigurationen (Sprache, Display, etc.) Integration von Ressourcen (Grafiken, Audiodateien, XML-Dateien, etc.) Internet-Kommunikation: TCP/IP, UDP und darauf basierende Protokolle Ad-Hoc Netzwerk: Bluetooth (RFCOMM bzw. SPP seit 2.0) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

28 1. Software-Plattform Android Android Location API Kartendarstellungen (Google Maps) Zugriff auf Sensoren und Aktoren DBMS (sqlite) Wiedergabe verschiedener Medien-Formate Aufnahme von Fotos und Videos Komponententechnologie Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

29 1. Software-Plattform Android Entwicklungsumgebung Was beinhaltet die Entwicklungsumgebung Android API Entwicklungswerkzeuge Eclipse Plugin Android Virtual Device Manager Dokumentation Beispiel Quelltexte Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

30 1. Software-Plattform Android Entwicklungsumgebung Android Software Stack Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

31 1. Software-Plattform Android Entwicklungsumgebung Linux Kernel: Basis von Android, Version 2.6, enthält Hardwaretreiber Android Runtime: Dalvik Virtual Machine Jede Anwendung läuft in eigenem Prozess und eigener virtueller Maschine Java Core Libraries kapseln Benutzung der Standard-Bibliotheken (Libraries) Libraries: C-Bibliotheken für grundlegende Funktionalitäten wie Datenbank, 3D-Grafik, Netzwerkzugriff, etc. Application Framework: Komponenten, die Systemdienste bereitstellen, zur Nutzung in Anwendungen Applications: Standard- und selbstentwickelte Anwendungen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

32 1. Software-Plattform Android Entwicklungsumgebung Dalvik Virtual Machine Android nutzt eine eigene virtuelle Java Maschine, die Dalvik Virtual Machine. Dateiendung:.dex Basiert auf der Open-Source JVM Apache Harmony angepasst auf Effizienz für verschiedene Instanzen und Anforderungen für mobile Endgeräte Ausnutzung der Registerarchitektur moderner Prozessoren, angepasst an RISC-Architektur Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

33 1. Software-Plattform Android Entwicklungsumgebung SDK enthält Werkzeug zur Umwandlung von.class-dateien in.dex- Dateien. Keine Java-VM, daher keine Lizenzkosten an SUN, keine Auslieferung der Änderungen von Apache Harmony notwendig, da Apache License Das benutzte Java API (viele Teile von J2SE) ist nicht geschützt. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

34 1. Software-Plattform Android Entwicklungsumgebung Aspekte der Anwendungsarchitektur Wichtige Bestandteile der Android-Architektur: Activity: Sichtbarer Teil einer Anwendungen zur Interaktion mit dem Benutzer, eigener Lebenszyklus, vgl. Applet, MIDlet Service: Teile einer Anwendung ohne Oberfläche für Hintergrundarbeiten Content Providers: Bereitstellung von Daten über Anwendungsgrenzen hinweg Broadcast Receiver: Teile einer Anwendung die auf Systemereignis lauschen und reagieren können Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

35 1. Software-Plattform Android Entwicklungsumgebung Intents: Komponententechnologie, zur Verbindung von Komponenten Views: Konstruktionselemente für Benutzerschnittstellen Resource Manager: Einfacher Zugriff auf Non-Code Ressourcen einer Anwendung Notification Manager: Signalisierung von Ereignissen an den Benutzer Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

36 1. Software-Plattform Android Android Entwicklung Entwicklungswerkzeuge Grundlegenden Werkzeuge: Android Emulator bzw. Android Virtual Device Manager (AVD) Dalvik Debug Monitoring Service (DDMS) Android Asset Packaging Tool (AAPT) Android Debug Bridge (ADB) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

37 1. Software-Plattform Android Android Entwicklung Weitere Helfer SQLite3: Zugriff auf SQLite-Datenbaken Traceview: Graphische Analyse der Trace-Logs von Android Anwendungen MkSDCard: Erzeugt ein SDCard Image für den Emulator dx: Wandelt.class Dateien in.dex Dateien Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

38 2. GUI-Programmierung für mobile Geräte Lernziele 2. GUI-Programmierung für mobile Geräte Themen/Lernziele: Einführung Lebenszyklus einer Android-Anwendung Beispiele GUI-Elemente Einbindung externer Ressourcen Activity und Manifest Entwicklung eigener GUI-Klassen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

39 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Aus was besteht eine Android-Anwendung? Vgl. Folie 33: Activity: Jede Anwendung besteht aus mindestens einer Activity: Vordergrundprozess, zuständig für die Anzeige Service: Hintergrundprozess Content Provider: Datenbereich, der für verschiedene Anwendungen zur Verfügung steht. Intent: Message-Passing-Framework für den lose gekoppelten Nachrichtenaustausch zwischen Activities und/oder Services. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

40 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Broadcast Receiver: Empfänger von Intents, Angabe von Bedingungen möglich, für ereignis-gesteuerte Anwendungen Notification: Benachrichtigungen an den Benutzer ohne Wechsel der Activity im Vordergrund. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

41 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Android-Projekt in Eclipse Im Wurzelverzeichnis eines Projektes: AndroidManifest.xml XML-Datei zur Beschreibung der Anwendung, z. B. aus welchen Komponenten (Activities, Services, etc.) die Anwendung besteht. default.properties Meta-Information, automatisch erzeugt, z.b. Zielplattform (API Level) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

42 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus bin/ Enthält die compilierte und gebundene Applikation inklusive der apk- Datei src/ Java-Quelltexte gen/ Automatisch generierte Quelltext-Dateien, hier insbesondere die Klasse R.java res/ Non-Code Ressourcen, z.b. Grafiken, Layouts, Stringdefinitionen etc., werden eingebunden in das Anwendungspaket (.apk). Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

43 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus assets/ Weitere statische Dateien, die in die Anwendung eingebunden werden sollen. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

44 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Ressourcen res/drawable/ für Grafiken/Bilder (PNG, JPEG, etc.) res/layout/ für XML-basierte Layout-Definitionen res/values/ für Strings und Definitionen, z.b. für Lokalisation res/xml/ für sonstige XML-Dateien res/raw/ für sonstige Dateien Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

45 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Dateien der Android-Anwendung Das Ergebnis der Compilierung/Erzeugung einer Anwendung liegt in bin/. bin/classes/ enthält die compilierten Java-Klassen im üblichen JVM- Bytecode. bin/classes.dex die ausführbare Anwendung erzeugt aus den compilierten Java-Klassen bin/deineapp.apk ist die Android-Anwendung fertig zur Installation. Die.apk-Datei ist ein ZIP-Archiv bestehend aus der.dex-datei, den Ressourcen, der Manifest-Datei und weiteren Dateien. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

46 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Activity ganz simpel (1) Mit dem Anlegen eines Android-Projekts über Eclipse werden automatisch zwei Java-Klassen generiert: MeineActivity.java: Einfachster Rahmen für eine Activity-Klasse, abgeleitet von android.app.activity. R.java: Definiert symbolische Konstanten für die Ressourcen der Anwendung. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

47 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Aufbau der erzeugten Activity-Klasse: package meineanwendung; import android.app.activity; import android.os.bundle; public class MyActivity extends Activity public void oncreate(bundle bundle) { super.oncreate(bundle); } } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

48 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Schematischer Aufbau der erzeugten Klasse R: /* AUTO-GENERATED FILE. DO NOT MODIFY. */ package mobis1.b1; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class id { public static final int mybutton=0x7f050001; public static final int mytextview=0x7f050000; } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

49 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

50 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Damit die Activity etwas anzeigt, muss ihr mit Hilfe von setcontentview ein View-Objekt zugeordnet werden. Hierzu gibt es zwei Möglichkeiten: Wir erzeugen passende View-Instanzen und weisen diese der Activity zu: public void oncreate(bundle bundle) { super.oncreate(bundle); } MyView myview = new MyView(this); this.setcontentview(myview); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

51 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Wir nutzen eine vordefinierte Layout-Definition aus den Ressourcen: public void oncreate(bundle bundle) { super.oncreate(bundle); } this.setcontentview(r.layout.mylayout); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

52 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Activity ganz simpel (2) Eine Activity ermöglicht das Anzeigen einer UI-Komponente mittels der Methode setcontentview(). Die UI-Komponenten selbst sind von der Klasse android.view.view abgeleitet. Für das Anzeigen verschiedener UI-Komponenten benötigen wir entweder verschiedene Activities oder eine saubere Logik um mittels setcontentview() zwischen den UI- Komponenten zu wechseln. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

53 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Activity ganz simpel (3) Um eine Activity in einer Anwendung nutzen zu können, muss sie im Manifest definiert werden: <activity android:name=".myactivity" <intent-filter> <action android:name="android.intent.action.main"/> <category android:name="android.intent.category.launcher"/> </intent-filter> </activity> Nur für die mit Projektdefinition erzeugte Activity geschieht dies automatisch. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

54 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Activity Stack Android verwaltet die Activities auf einem Stack. Wenn eine neue Activity startet, wird die zuletzt aktive Activity auf den Stack gelegt. Wird die sich im Vordergrund befindliche Activity geschlossen oder der Benutzer benutzt den Back-Button, dann wird die oberste Activity des Stacks aktiv. Tief im Stack befindliche Activities können von der Android- Laufzeitumgebung gelöscht werden, um ausreichend Ressourcen bereit zu stellen. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

55 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Zustände einer Activity active: Sichtbare Activity, bereit Eingaben zu empfangen (Focus), liegt oben auf dem Stack. Android versucht dieser Activity alle notwendigen Ressourcen bereit zu stellen, eventuell durch kill anderer nicht aktiver Activities. Wird eine andere Activity active, geht diese Activity in den Zustand paused oder stopped über. paused: Die Activity ist sichtbar, hat aber nicht den Focus. Entsteht wenn eine andere Activity, die transparent ist oder nicht den ganzen Schirm abdeckt, sich überhalb der Activity befindet (Beispiel: Dialog). Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

56 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Wird wie eine aktive Activity behandelt, empfängt einer keine Benutzereingaben. Wird eine Activity vollständig verdeckt, geht sie in den Zustand stopped über. stopped: Die Activity ist nicht mehr sichtbar. Sie verbleibt zunächst im Speicher, kann aber jederzeit von Android Laufzeitumgebung entfernt werden. Dann ist sie inactive. inactive: Eine inaktive Activity muss neu gestartet werden, damit sie wieder angezeigt und benutzt werden können. Die Zustandsübergänge werden vollständig von der Android- Laufzeitumgebung initiiert. Eine Anwendung hat aber die Möglichkeit, auf die Zustandsübergänge zu reagieren. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

57 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

58 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Methoden für Zustandsübergänge Damit eine Activity auf die Zustandsübergänge reagieren kann, bietet sie entsprechende Methoden an: void oncreate(bundle bundle) void onstart() void onrestart() void onresume() void onpause() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

59 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus void onstop() void ondestroy() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

60 2. GUI-Programmierung für mobile Geräte Einführung Lebenszyklus Activity Lifetimes Entire Lifetime: zwischen oncreate() und ondestroy() Legen Sie in oncreate() alles an, was Sie auf jeden Fall brauchen und sorgen Sie in ondestroy() dafür, dass alle noch belegten Ressourcen freigegeben werden. Visible Lifetime: zwischen onstart() und onstop() Behandlung von Ressourcen die für die Anzeige benötigt werden. Foreground Lifetime: Zwischen onresume() und onpause() Mehrfacher Wechsel des Zustands möglich, tritt z.b. auf, wenn das Telefon in den Ruhezustand übergeht. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

61 2. GUI-Programmierung für mobile Geräte Views und Layouts Views und Layouts View: Basisklassen für visuelle Komponenten. Alle UI-Komponenten sind von der Klasse View abgeleitet. ViewGroup: Klassen, die mehrere Views bündeln. Hierzu gehören z.b. die Layout-Klassen wie LinearLayout. Eine ViewGroup ist eine spezielle View. Widget: View, die zur Interaktion mit dem Benutzer verwendet wird. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

62 2. GUI-Programmierung für mobile Geräte Views und Layouts View-Hierarchie Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

63 2. GUI-Programmierung für mobile Geräte Views und Layouts Grundlegende Widgets TextView: Read-Only Text, unterstützt Formatierung EditText: Editierbare TextView ListView: ViewGroup zum Anzeigen einer Liste von textuellen Einträgen, jeder Eintrag wird dargestellt durch eine einzelne View (üblicherweise TextView) Spinner: Komposition von TextView und ListView. Der über die ListView ausgewählte Eintrag wird in der TextView angezeigt. Button: gewöhnlicher Push-Button Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

64 2. GUI-Programmierung für mobile Geräte Views und Layouts CheckBox: Button mit zwei Zuständen (selektiert bzw. nicht selektiert) RadioButton: Gruppierte Buttons mit zwei Zuständen und wechselseitigem Ausschluss Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

65 2. GUI-Programmierung für mobile Geräte Views und Layouts Layout-Klassen LinearLayout: Horizontale oder vertikale Ausrichtung der enthaltenen Views. Verschachtelung möglich! FrameLayout: Jede View wird in der linken oberen Ecke plaziert. RelativeLayout: Positionierung von Views relativ zu den anderen Views und den Bildschirmgrenzen TableLayout: Aufteilung in Zeilen und Spalten. Bildschirmelemente können mehrere Zeilen/Spalten umfassen, Zeilen können schrumpfen und wachsen. AbsoluteLayout: Positionierung auf der Basis von absoluten Koordinaten. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

66 2. GUI-Programmierung für mobile Geräte Views und Layouts XML-basierte Layout-Definitionen Gerüst, z.b. für LinearLayout: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">... </LinearLayout> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

67 2. GUI-Programmierung für mobile Geräte Views und Layouts Layout-Attribute Wichtige Attribute (nicht nur für LinearLayout): android:orientation: Ausrichtung beim Layout, vertical oder horizontal android:layout width: Art des horizontalen Füllens, fill parent oder wrap content android:layout height: analog für vertikales Füllen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

68 2. GUI-Programmierung für mobile Geräte Views und Layouts Kopplung der Komponenten Die Hierarchie der Views spiegelt sich in der XML-Definition wider: <LinearLayout...> <Button.../> <TextView.../> <LinearLayout...> <TextView.../> <EditText.../> </LinearLayout> </LinearLayout> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

69 2. GUI-Programmierung für mobile Geräte Views und Layouts Identifikation von Objekten Jede View kann durch android:id mit einer ID versehen werden. Aufbau der z.b. Mit Hilfe der Methode findviewbyid erhält man innerhalb der Applikation das zugehörige Objekt: Button button = (Button)findViewById(R.id.mybutton); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

70 2. GUI-Programmierung für mobile Geräte Views und Layouts Beispiel: Identifikation von Objekten Beispiel 2.1. Aktuelle Uhrzeit auf Knopfdruck Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

71 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: TextView Nicht editierbarer Text, z.b. als Label verwendbar. Einige Attribute: android:text android:typeface android:textstyle android:textcolor Java-Methode, um den Text zu setzen: settext Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

72 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: ImageView Zeigt ein Bild/Grafik an. Bild wird referenziert durch XML-Attribut android:src mit Referenz auf eine Drawable-Ressource: Dynamisches Ändern des Bildes mit der Methode setimageuri(). Benötigt einen Content-Provider. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

73 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: Buttons Button ist eine Unterklasse von TextView, entspricht dem gewöhnlichen Push-Button Button-Label entspricht android:text ImageButton: Push-Button mit Bild statt Textbeschriftung, abgeleitet von ImageView. Reagieren auf Clicks: setonclicklistener(), Listener muss Interface View.OnClickListener implementieren (siehe Beispiel 2.1). Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

74 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: EditText Editierbares Textfeld, abgeleitet von TextView automatische Rechtschreibunterstützung: android:autotext Großschreibung des ersten Buchstabens: android:capitalize Feld erlaubt nur Ziffern: android:digits Ein- oder mehrzeilige Eingabe? android:singleline Nur numerische Eingaben erlauben: android:numeric Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

75 2. GUI-Programmierung für mobile Geräte Spezielle Views Telefonnummern: android:phonenumber Passwort: android:password Eigene Konsistenzprüfungen mit eigener Implementierung der Schnittstelle InputMethod: android:inputmethod Zugriff auf den Inhalt: gettext() Für einfachen String: gettext().tostring() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

76 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: CheckBox Checked or Unchecked? TextView ist Vorfahr, android:text liefert Label und ist entsprechend veränderbar Java-Methoden: ischecked() setchecked() toggle() Listener-Interface: OnCheckedChangeListener() mit Methode oncheckedchange() Zum setzen des Listener-Objekts: setoncheckedchangelistener() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

77 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: RadioButton und RadioGroup RadioButton ist der einzelne Button, RadioGroup eine Menge von Buttons, von denen höchstens einer im Zustand checked ist. TextView ist Vorfahr von RadioButton Java-Methoden für RadioGroup: check(): prüft, ob ein Button im Zustand checked ist. clearcheck(): Setzt alle Buttons der Gruppe in den Zustand unchecked. getcheckradiobuttonid(): Liefert die ID des einen Buttons der im Zustand checked ist (oder -1). Die RadioButtons innerhalb der Gruppe haben die üblichen Methoden Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

78 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: Allgemeine Eigenschaften Sichtbarkeit kann mit Hilfe von android:visibility geregelt werden visible, invisible, gone Hintergrund: android:background setenabled() und isenabled() für das Ein-/Ausschalten von interaktiven Views (z.b. EditText) Weitere wichtige Java-Methoden: getparent(), getparentoftype(), findviewbyid(), getrootview() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

79 2. GUI-Programmierung für mobile Geräte Spezielle Views LinearLayout Lineare Anordnung der enthaltenen Views, Layouts in Layouts ist möglich Eigenschaften einer LinearLayout-Instanz: Orientierung: horizontale oder vertikale Anordnung android:orientation bzw. setorientation() Füllmodell: für die Horizontale: android:layout width für die Vertikale: android:layout height Legt die Größe für die Layout-Instanz fest: spezifische Dimension z. B. in Pixeln Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

80 2. GUI-Programmierung für mobile Geräte Spezielle Views wrap content: natürliche Größe, evtl. Zeilen oder Spaltenumbruch erforderlich fill parent: Der ganze verfügbare Platz wird ausgefüllt Relative Größenangaben: Bei Verwendung von fill parent: Mit Hilfe von android:layout weight kann ein Anteil für die Größe auf dem Schirm festgelegt werden. Ausrichtung: layout gravity bestimmt die Ausrichtung der enthaltenen Views left, center horizontal, center vertical, right, Zwischenraum: Mit Hilfe der Padding-Attribute kann zusätzlicher Zwischenraum eingefügt werden. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

81 2. GUI-Programmierung für mobile Geräte Spezielle Views TableLayout TableLayout unterstützt die Positionierung von Komponenten in einem Gitter ähnlich einer HTML-Table. Zu TableLayout gehört TableRow zur Definition einer Tabellenzeile. In TableRow sind die GUI-Komponenten enthalten. Die Anzahl der Spalten wird automatisch bestimmt. Eine Komponente in einer Zeile kann mehrere Spalten umfassen. Hierzu dient das Attribut android:layout span. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

82 2. GUI-Programmierung für mobile Geräte Spezielle Views Eine Komponente kann auch explizit in eine Spalte gesetzt werden. android:layout column. Tabellenzeile über drei Spalten: <TableRow> <TextView android:text="url:"/> <EditText android:layout_span="3"/> </TableRow> Buttons in Spalte zwei und drei: <TableRow> <Button android:layout_column="2" android:text="cancel" /> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

83 2. GUI-Programmierung für mobile Geräte Spezielle Views <Button android:text="ok"/> </TableRow> Komponenten, die außerhalb von TableRow deklariert werden, verhalten sich ähnlich wie LinearLayout (mit Ausrichtung vertical und fill parent). Dies kann man für die Definition von Trennelementen nutzen: <TableRow>... </TableRow> <View android:layout_height="2px" android:background="#0000ff"/> <TableRow>... </TableRow> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

84 2. GUI-Programmierung für mobile Geräte Spezielle Views Dehnbare Spalten in TableLayout Standard: Spalten erhalten natürliche Größe auf Basis der enthaltenen Komponenten Zur Ausdehnung von Spalten auf die volle mögliche Größe: android:stretchcolumns Attributwert: Spaltennummer oder Kommaliste von Spaltennummern android:shrinkcolumns um durch Zeilenumbruch Spalten zu verschmälern Spalten zunächst unsichtbar: android:collapsecolumns Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

85 2. GUI-Programmierung für mobile Geräte Spezielle Views Java-Methoden zur Kontrolle: setcolumnsstretchable() setcolumnsshrinkable() setcolumnscollapsed() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

86 2. GUI-Programmierung für mobile Geräte Spezielle Views Scrolling ScrollView stellt für die enthaltenen Views Scrolling bereit: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" <TableLayout...> <TableRow...> </TableRow>... <TableRow...> </TableRow> </TableLayout> </ScrollView> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

87 2. GUI-Programmierung für mobile Geräte Log Messages Log Messages Die Klasse android.util.log stellt Klassenmethoden für das Logging bereit: Log.e(): Fehler Log.w(): Warnungen Log.i(): Informationen Log.d(): Debugging Log.v(): Verbose Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

88 2. GUI-Programmierung für mobile Geräte Log Messages Alle Methoden erwarten als Parameter zwei Strings: Ein Tag für die Quelle der Nachricht/Meldung Die Nachricht/Meldung Man kann sich die Meldungen mit der LogCat View in Eclipse anschauen oder durch Aufruf des Programms logcat auf dem Gerät/Emulator. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

89 2. GUI-Programmierung für mobile Geräte Listen Auswahlkomponenten Übliche Auswahlkomponente: ListView Wie üblich einbettbar in Layout-Komponenten Kontrolle der Anzeige mit Hilfe eines Adapters Einfachster Adapter: ArrayAdapter Listener für Auswahl Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

90 2. GUI-Programmierung für mobile Geräte Listen Adapter public interface Adapter Ein Adapter realisiert eine Verbindung zwischen einer AdapterView und den Daten, die die View präsentieren soll. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

91 2. GUI-Programmierung für mobile Geräte Listen ArrayAdapter Generischer Typ: ArrayAdapter<T> Konstruktorargumente: Kontext (typischerweise Activity), View-ID für Listenelemente, Array Methoden um das Datenarray zu manipulieren: add() clear() insert() remove() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

92 2. GUI-Programmierung für mobile Geräte Listen Skizze: String[] items = { "eins", "zwei", "drei" }; ArrayAdapter<String> aa; aa = new ArrayAdapter<String>(myActivity, android.r.layout.simple_list_item_1, items); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

93 2. GUI-Programmierung für mobile Geräte Listen Weitere Adapter CursorAdapter: Für Daten, die von einem Content Provider bereitgestellt werden SimpleAdapter: Zugriff auf Daten aus XML-Ressourcen ActivityAdapter: Namen von Activities, die für einen Intent aufgerufen werden können Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

94 2. GUI-Programmierung für mobile Geräte Listen ListView Muss mit Adapter verbunden werden: setadapter() Schnittstelle für Listener: AdapterView.OnItemClickListener Zu implementierende Methoden: public void onitemclick(adapterview parent, View v, int position, long id); Listener setzen: setonitemclicklistener() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

95 2. GUI-Programmierung für mobile Geräte Listen Beispiel: ListView Beispiel 2.2. Statischen Liste in Verbindung mit einer TextView für die Anzeige des ausgewählten Elements Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

96 2. GUI-Programmierung für mobile Geräte Listen ListActivity Für eine Activity, die durch eine Liste dominiert wird: ListActivity Hier ist die ListView schon integriert. Setzen der Daten bzw. des Adapters: setlistadapter() Zur Behandlung einer Auswahl: Überschreiben der Methode public void onlistitemclick(listview parent, View v, int position, long id); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

97 2. GUI-Programmierung für mobile Geräte Listen Weitere Auswahlkomponenten Spinner: Anzeige des ausgewählten Elements in Kombination mit einer Drop-Down Liste GridView: Zweidimensionale Auswahlmatrix Gallery: Horizontales Auswahlelement Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

98 2. GUI-Programmierung für mobile Geräte Tabbed Layouts Tabbed Layouts TabHost: Container für die Tab-Buttons und die Inhalte der Tabs TabWidget: implementiert die Zeile für die Tab-Buttons FrameLayout: Container für die Tab-Inhalte Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

99 2. GUI-Programmierung für mobile Geräte Tabbed Layouts Regeln für Tabbed Layouts ID für TabWidget sein. Padding für die Tab-Buttons im Frame-Layout Falls man TabActivity benutzen möchte, muss TabHost die haben. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

100 2. GUI-Programmierung für mobile Geräte Tabbed Layouts <LinearLayout...> <TabHost <TabWidget /> <FrameLayout android:paddingtop="62px"> <View.../>... <View.../> </FrameLayout> </TabHost> </LinearLayout> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

101 2. GUI-Programmierung für mobile Geräte Tabbed Layouts Zusammenfügen der Tabs Aufruf der Methode setup() auf dem TabHost Erzeugung von TabHost.TabSpec-Objekten mittels newtabspec(). Damit werden die Tabs definiert. setcontent() um den Inhalt für ein Tab festzulegen setindicator() für den Text des Tab-Buttons addtab() auf dem TabHost um den Tab hinzuzufügen setcurrenttab() um den aktuellen Tab einzustellen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

102 2. GUI-Programmierung für mobile Geräte Tabbed Layouts Beispiel: Tabs Beispiel 2.3. Anwendung mit zwei Tabs, einer Uhr und einem Button Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

103 2. GUI-Programmierung für mobile Geräte Menüs Menüs Android kennt drei Arten von Menüs: Options Menu Erscheint wenn der Menü -Knopf des Gerätes bedient wird Menüs sind abhängig von der Activity. Context Menu Beziehen sich auf eine View erscheinen durch taps-and-hold Sub Menus Keine Ünterstützung von Icons oder Menüschachtelung Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

104 2. GUI-Programmierung für mobile Geräte Menüs Für Menüs gilt allgemein: Keine volle Kontrolle durch den Entwickler Handling im Framework enthalten Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

105 2. GUI-Programmierung für mobile Geräte Menüs Menu Item Für jeden Menüeintrag (MenuItem) muss angegeben werden: Gruppenwert für eine eventuelle Gruppierung (ansonsten Menu.NONE) Eindeutige Kennung (typischerweise Menu.FIRST+N) Wert für die Sortierung der Menüeinträge Menütext Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

106 2. GUI-Programmierung für mobile Geräte Menüs Options Menu Keine Konstruktion des Menüs als Objekt! Stattdessen: Überschreiben von oncreateoptionsmenu() Methode liefert über Parameter ein Menüobjekt, das manipuliert werden kann. Methode add() um Menüeinträge hinzuzufügen. Liefert ein MenuItem. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

107 2. GUI-Programmierung für mobile Geräte Menüs Weitere Einstellung mit MenuItem möglich, z.b. seticon() Für die Selektion benötigen die Menüeinträge Kennungen, ideal hierfür die Konstante Menu.FIRST Für das Abfangen der Auswahl ist kein Listener erforderlich, stattdessen überschreiben der Methode public boolean onoptionsitemselected(menu.item item); Methode getitemid() von MenuItem liefert die Kennung des ausgewählten Menüeintrags. Rückgabewert gibt an, ob Auswahl komplett behandelt wurde Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

108 2. GUI-Programmierung für mobile Geräte Menüs Dynamische Anpassung des Option Menu Dynamische Anpassung des Menüs durch Überschreiben von public boolean onprepareoptionsmenu(menu menu); Wird immer aufgerufen bevor ein Options Menu angezeigt wird. Für Referenz auf den Menüeintrag: finditem() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

109 2. GUI-Programmierung für mobile Geräte Menüs Beispiel: Options Menu Beispiel 2.4. Anwendung mit Options Menu zur Erzeugung von Dialogs (About, Help), zu Dialog siehe folgende Folien Siehe Folie 105 und Folie 113 Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

110 2. GUI-Programmierung für mobile Geräte Menüs Context Menu Kontext: View, die aktuell den Focus hat Menü kann an der View-Klasse hängen: Überschreiben der Methode: protected void oncreatecontextmenu(contextmenu menu); Menü kann aber auch spezifisch für eine Activity sein: rufe Methode registerforcontextmenu() einer Activity auf Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

111 2. GUI-Programmierung für mobile Geräte Menüs Für registrierte Views wird die folgende Methode aufgerufen, wenn das Context Menu angezeigt werden soll: public void oncreatecontextmenu(contextmenu menu, View v, ContextMenu.ContextMenuInfo menuinfo); Handling einer Auswahl durch Überschreiben der folgenden Activity- Methode: public boolean oncontextitemselected(menuitem item); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

112 2. GUI-Programmierung für mobile Geräte Menüs Menu Item Click Listener Alternative zum Überschreiben der Activity-Methoden für Click-Listening bei Menüs: Schnittstelle OnMenuItemClickListener Aufruf erfolgt auf dem erzeugten menuitem Methode zum Setzen: setonmenuitemclicklistener() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

113 2. GUI-Programmierung für mobile Geräte Menüs Einfache Implementierung mit anonymer Klasse: menuitem.setonmenuitemclicklistener(new OnMenuItemClickListener() { public boolean onmenuitemclick(menuitem menuitem) {... return true; } }); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

114 2. GUI-Programmierung für mobile Geräte Dialogs Dialogs und Pop-Up Messages Ein Dialog ist ein transparentes Fenster, das eine andere Activity teilweise überdeckt. Möglichkeiten, einen Dialog zu erzeugen: Eine von Dialog abgeleitete Klasse verwenden, z.b. AlertDialog Theme-Attribut einer Activity auf Theme.Dialog einstellen Toasts: Kleine sich selbst auflösende Nachrichtenfenster Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

115 2. GUI-Programmierung für mobile Geräte Dialogs AlertDialog Titel: settitle() Icon: seticon() Text/Nachricht: setmessage() Bis zu drei Buttons: Postive, Negative, Neutral setpositivebutton(),... Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

116 2. GUI-Programmierung für mobile Geräte Dialogs AlertDialog.Builder Klasse zur automatischen Erzeugung eines AlertDialogs. Bietet die Methoden der vorigen Folie Skizze zur Nutzung: AlertDialog.Builder ad = new AlertDialog.Builder(activity); ad.settitle(...)... db.setneutralbutton(r.string.ok, new DialogInterface.OnClickListener() public void onclick(dialoginterface dialog, int id) {... }}); return ad.create(); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

117 2. GUI-Programmierung für mobile Geräte Dialogs Verbindung mit Activity Jeder Dialog erhält eine eindeutige Kennung. showdialog(dialogid) um einen Dialog anzuzeigen Wenn Dialog erzeugt werden muss, erfolgt Aufruf der Activity-Methode: public Dialog oncreatedialog(int id) In Methode typischerweise switch zur Erzeugung des passenden Dialogs (z.b. mittels AlertDialog.Builder). Vor dem Anzeigen erfolgt Aufruf der Activity-Methode: Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

118 2. GUI-Programmierung für mobile Geräte Dialogs public void onpreparedialog(int id, Dialog dialog) Damit Anpassung an Situation möglich. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

119 2. GUI-Programmierung für mobile Geräte Dialogs Activities als Dialogs Eine Activity kann in Form eines Dialog realisiert werden. Vorteil: alle Möglichkeiten zur Implementierung Nachteil: Einfache Handhabung der Dialog-Klasse geht verloren <activity android:name="mydialogactivity" </activity> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

120 2. GUI-Programmierung für mobile Geräte Dialogs Toasts Ein Toast ist eine kleine Dialogbox, die eine Textnachricht anzeigt und nach wenigen Sekunden automatisch verschwindet. Skizze zur Nutzung: Toast toast = Toast.makeText(context, "Meine Nachricht", Toast.LENGTH_SHORT); toast.show(); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

121 2. GUI-Programmierung für mobile Geräte Dialogs Beispiel: Dialog und Toast Beispiel 2.5. Anwendung mit zwei Buttons: einer zur Erzeugung eines Dialog, einer zur Erzeugung eines Toast Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

122 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Widgets für Datum und Uhrzeit Datumsauswahl DatePicker, DatePickerDialog Uhrzeitauswahl TimePicker, TimePickerDialog Zeitanzeige AnalogClock, DigitalClock Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

123 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Datumsauswahl Widget für die Datumsauswahl: DatePicker Datum kann eingestellt werden Für die Verwaltung von Zeitstempeln (Datum + Uhrzeit): Calendar Widget verpackt in einem Dialog: DatePickerDialog Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

124 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Listener für DatePicker Listener-Schnittstelle: DatePicker.OnDateSetListener mit Methode: public void dateset(datepicker view, int year, int month, int day); Listener steht auch für DatePickerDialog zur Verfügung. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

125 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Auswahl einer Uhrzeit Widget für die Datumsauswahl: TimePicker Uhrzeit kann eingestellt werden Für die Verwaltung von Zeitstempeln (Datum + Uhrzeit): java.util.calendar Formatierung von Zeitstempeln: java.text.dateformat Widget verpackt in einem Dialog: TimePickerDialog Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

126 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Listener für TimePicker Listener-Schnittstelle: TimePicker.OnTimeSetListener mit Methode: public void timeset(timepicker view, int hour, int minute); Listener steht auch für TimePickerDialog zur Verfügung. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

127 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Beispiel: DatePicker und TimePicker Beispiel 2.6. Layout mit zwei Buttons und einer TextView Mit Hilfe der beiden Buttons wird ein DatePickerDialog bzw. ein TimePickerDialog angezeigt. Das ausgewählte Datum bzw. die ausgewählte Uhrzeit wird in die TextView übernommen. Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

128 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Anzeige der Uhrzeit analoge Uhr: AnalogClock nur Stunden- und Minutenzeiger digitale Uhr: DigitalClock zeigt auch Sekunden an Anpassung an Landeseinstellung Uhrzeit wird automatisch angepasst, kein Listener/Updater erforderlich Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

129 2. GUI-Programmierung für mobile Geräte Widgets für Datum und Uhrzeit Beispiel: Uhrzeit Beispiel 2.7. Uhrzeit analog und digital Reine Layout-Definition, keine weitere Programmierung erforderlich Layout siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

130 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Einbettung des Web-Browsers Einbettung des Standard-Browsers in eigene Anwendungen Browser basiert auf WebKit Klasse: WebView eigenes Package: android.webkit mit vielen weiteren Klassen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

131 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Beispiel: WebView Beispiel 2.8. Simples Layout mit einer WebView Laden einer Seite mit Hilfe der Methode loadurl() Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

132 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Permission Für den Webzugriff ist eine Uses Permission notwendig. Einzutragen in AndroidManifest.xml: <uses-permission android:name="android.permission.internet"> </uses-permission> Kann mit Hilfe des Manifest-Editors eingetragen werden. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

133 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Anzeigen von Inhalten Daten können mit folgenden Methoden geladen werden: loadurl(string url) loaddata(string data, String mimetype, String encoding) Zum setzen einer Basisadresse für den Inhalt: loaddatawithbaseurl(...) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

134 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Navigation Navigationsfunktionalität muss selbst implementiert werden. Methoden hierfür: reload() goback() goforward() cangobackorforward() clearcache(), clearhistory() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

135 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Reaktion auf Benutzeraktionen Mit einem WebViewClient kann auf Benutzeraktionen reagiert werden. Methode setwebviewclient() um den WebViewClient bei der WebView zu registrieren. Reaktion durch Überschreiben von Methoden im WebViewClient. Beispiel: shouldoverrideurlloading() zur Reaktion auf interne URLs Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

136 2. GUI-Programmierung für mobile Geräte Einbettung des Web-Browsers Einstellungen erfolgen mit einer Instanz von WebSettings, Instanz wird erzeugt durch getsettings() auf WebView Beispielmethoden: Einstellung von Fontgrößen: setdefaultfontsize() und settextsize() JavaScript: setjavascriptenabled() UserAgent: setusedesktopuseragent() Einstellungen sind nicht persistent Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

137 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Arten von Ressourcen Vgl. Folie 43 (simple) values drawables (Zeichnungen) layouts Animationen sonstige XML-Dateien Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

138 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Styles raw resources (sonstige Dateien) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

139 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Einfache Konstanten (simple values) Werden definiert in unterschiedlichen XML-Dateien im Verzeichnis res/values. Arten: Strings Farben Dimensionen Arrays Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

140 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Strings res/values/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">hello World</string> <string name="app_name">beispiel WebView</string> </resources> Einfache HTML-Textformatierung wird unterstützt durch folgende Tags: <b>, <i> und <u> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

141 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Prinzipiell können solche Strings auch als Formatstring für z. B. String.format() verwendet werden. Hierbei wird aber keine HTML- Textformatierung unterstützt. Deshalb: HTML-Tags kodieren Nach Formatierung mit String.format() noch Html.fromHtml() anwenden. Ressource-ID: z.b. R.string.hello Zugriff über Activity- bzw. Context-Methoden: getstring() und gettext() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

142 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Farben res/values/colors.xml Muster zur Definition von Farben: #RGB, #RRGGBB, #ARGB, #AARRGGBB <color name="opaque_blue">#00f</color> <color name="transparent_green">#7700ff00</color> Ressource-ID: z.b. R.color.opaque blue blue Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

143 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Dimensionen px: Bildschirmpixel in: Inches pt: Points mm: Millimeter dp: Dichteunabhängige Pixel bezogen auf einen 160-dpi Bildschirm sp: Skalierungsunabhängige Pixel Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

144 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Definitionen üblicherweise in res/values/dimensions.xml:... <dimen name="standard_border">5px</dimen>... Referenzierung: R.dimen.standard border border Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

145 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Arrays res/values/arrays.xml String-Array mit zwei Elementen: <string-array name="cursor_forms"> <item>block Cursor</item> <item>outline Cursor</item> </string-array> array vs. string-array? Referenzierung: R.array.cursor forms forms Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

146 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Zugriff auf Ressourcen Dynamischer Zugriff auf Ressourcen vom Programm aus: Mit Hilfe einer Instanz der Klasse Resources Context bzw. Activity liefert eine solche Instanz als Ergebnis der Methode getresources(). Resources myresources = getresources(); Resources bietet spezifische Methoden um auf die Ressourcen über die ID zuzugreifen. int opaqueblue = myresources.getcolor(r.color.opaque_blue); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

147 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen float borderwidth = myresources.getdimension(r.dimen.standard_border); String[] cursorforms = myresources.getstringarray(r.array.cursor_forms); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

148 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen System-Ressourcen Android stellt eine Reihe von eingebauten Ressourcen zur Verfügung. Im Quelltext erfolgt der Zugriff mit Hilfe der ID android.r...: String httperror = getstring(android.r.string.httperrorbadurl); Innerhalb von Ressourcen lautet die <EditText... /> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

149 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Ressourcen für unterschiedliche Sprachen und Hardware Lokalisierte Definitionen erfolgen in Verzeichnissen, deren Namen um Sprach- oder Hardwarekennungen (Qualifiers) erweitert sind. Trennsymbol: Hyphen - siehe Grafik rechts für deutsche Lokalisierung Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

150 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Qualifiers Sprache: klein ISO Sprachcode, z.b. en, de Region: r gefolgt von groß ISO alpha-2 Sprachcode, z.b rus, rgb Bildschirmorientierung: Portrait (port) oder Landscape (land) Pixeldichte des Bildschirms: in dpi, z.b. 92dpi Touchscreen Type: notouch, stylus, finger Verfügbarkeit der Tastatur: keysexposed oder keyshidden Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

151 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Keyboard Type: nokeys, qwerty oder 12key UI Navigation Type: notouch, dpad, trackball, wheel Bildschirmauflösung: in Pixeln, größere zuerst, z.b. 320x240 Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

152 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Beliebige Kombination der Qualifiers ist möglich, aber genau in obiger Reihenfolge, jeder Qualifier durch ein Hyphen getrennt und nur ein Wert für einen Qualifier. Gültige Qualifier: drawable-en-rus drawable-land-notouch-nokeys-320x240 Ungültige Qualifier: drawable-rus-en drawable-rus-ruk Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

153 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Konfigurationsänderungen zur Laufzeit Zum Beispiel das Aufklappen der Tastatur stellt eine Konfigurationsänderung dar: keysexposed statt keyshidden Android reagiert auf solche Änderungen simpel: Restart der Applikation Um dies zu verhindern, muss die Applikation auf die Änderung reagieren. Hierzu: Eintrag im Manifest Überschreiben der Methode onconfigurationchanged() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

154 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Konfigurationsänderungen orientation: Wechsel von Portrait nach Landscape keyboardhidden: Tastatur wurde auf- oder zugeklappt fontscale: Benutzer hat die bevorzugte Fontgröße gändert locale: Änderung der Spracheinstellung keyboard: Art der Tastatur hat sich geändert touchscreen oder navigation: Treten normalerweise nicht auf Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

155 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Konfigurationsänderungen: Manifest Eintrag in der zugehörigen Activity notwendig. Attribut: android:configchanges Arten der Änderung durch verbinden. <activity... android:configchanges="orientation keyboardhidden"/> Alle Änderungen, die nicht aufgeführt werden, führen zu einem Restart. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

156 2. GUI-Programmierung für mobile Geräte Einbindung von Ressourcen Konfigurationsänderungen: Activity Überschreiben der Methode public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); } if ( newconfig.orientation == Configuration.ORIENTATION_LANDSCAPE ) {... } if ( newconfig.keyboardhidden == Configuration.KEYBOARDHIDDEN_NO ) {... } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

157 2. GUI-Programmierung für mobile Geräte Definition eigener Views Definition eigener Views Prinzipielle Ansätze: Spezialisierung eines Widgets bei Nutzung der vorhandenen Darstellungsmöglichkeiten z.b. TextView zur formatierten Ausgabe von Fließkommazahlen Layoutdefinition (Komposition verschiedener Widgets) als eigene Klasse z. B. Kombination von TextView mit EditText für Eingabefeld mit Label Definition von Views mit neuen Darstellungsmöglichkeiten Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

158 2. GUI-Programmierung für mobile Geräte Definition eigener Views Spezialisierung von Widgets Ableitung von einem existieren Widget mittels Vererbung Konstruktoren übernehmen und super verwenden private Methode für spezielle Initialisierungen zusätzliche Funktionalität durch zusätzliche Methoden Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

159 2. GUI-Programmierung für mobile Geräte Definition eigener Views View-Konstruktoren Üblicherweise mindestens die folgenden (vgl. android.view.view): Widgetklasse(Context context) Simple constructor to use when creating a view from code. Widgetklasse(Context context, AttributeSet attrs) Constructor that is called when inflating a view from XML. Widgetklasse(Context context, AttributeSet attrs, int defstyle) Perform inflation from XML and apply a class-specific base style. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

160 2. GUI-Programmierung für mobile Geräte Definition eigener Views Verwendung in Layout-Definitionen Spezialisierte Widgets/View können in den XML-Layout-Definitionen verwendet werden. Elementname: Voll qualifizierter Klassenname Attribute/Properties der Oberklasse können verwendet werden, insbesondere auch android:id Attribut/Properties-Editor bleibt verwendbar Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

161 2. GUI-Programmierung für mobile Geräte Definition eigener Views <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <mypackage.myview android:layout_height="wrap_content" android:layout_width="wrap_content" <Button.../> <TextView.../> </LinearLayout> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

162 2. GUI-Programmierung für mobile Geräte Definition eigener Views Beispiel: TextView zur Anzeige von Fließkommawerten Beispiel 2.9. Widget NumberView als Spezialisierung von TextView mit einstellbarer Genauigkeit Layout mit NumberView zur Anzeige einer Double-Zufallszahl, einem Button zur Erzeugung einer Zufallszahl und Buttons zur Änderung der Genauigkeit Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

163 2. GUI-Programmierung für mobile Geräte Definition eigener Views Definition eigener Layout-Klassen Ableiten von der gewünschten Layout-Klasse, z.b. LinearLayout Zwei Möglichkeiten der Layout-Definition Quelltext: einfache Wiederverwendung, umständlichere Layout- Definition XML: einfachere Layout-Definition, erfordert Einsatz eines LayoutInflater, unhandlichere Wiederverwendung Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

164 2. GUI-Programmierung für mobile Geräte Definition eigener Views Ableiten von einer Layout-Klasse Konstruktoren z.b. bei LinearLayout: LinearLayout(Context context) LinearLayout(Context context, AttributeSet attrs) Für die Wiederverwendung einer selbstdefinierten Layout-Klasse in einer XML-Layout-Definition unbedingt den zweiten Konstruktor implementieren! Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

165 2. GUI-Programmierung für mobile Geräte Definition eigener Views Layout-Definition im Quelltext Im Konstruktor grundlegende Einstellungen am Layout-Objekt vornehmen, z.b. setorientation() und setgravity() Views, die im Layout enthalten sein sollen erzeugen, evtl. private Variablen für den Zugriff auf die Views Layout-Einstellungen für die Views erzeugen, z.b. mittels LinearLayout.LayoutParams Views dem Layout-Objekt hinzufügen: addview() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

166 2. GUI-Programmierung für mobile Geräte Definition eigener Views Hinzufügen und Entfernen von Views zu einer ViewGroup Siehe android.view.viewgroup: public void addview (View child, int index) Adds a child view. If no layout parameters are already set on the child, the default parameters for this ViewGroup are set on the child. public void addview (View child, int width, int height) Adds a child view with this ViewGroup s default layout parameters and the specified width and height. public void addview (View child, ViewGroup.LayoutParams params) Adds a child view with the specified layout parameters. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

167 2. GUI-Programmierung für mobile Geräte Definition eigener Views public void addview (View child, int index, ViewGroup.LayoutParams params) Adds a child view with the specified layout parameters. public void addview (View child) Adds a child view. If no layout parameters are already set on the child, the default parameters for this ViewGroup are set on the child. Entfernen von Views aus einer ViewGroup: public void removeallviews () Call this method to remove all child views from the ViewGroup. public void removeview (View view) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

168 2. GUI-Programmierung für mobile Geräte Definition eigener Views public void removeviewat (int index) Removes the view at the specified position in the group. public void removeviews (int start, int count) Removes the specified range of views from the group. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

169 2. GUI-Programmierung für mobile Geräte Definition eigener Views Layout-Parameter Allgemeine Klasse für Layout-Parameter: ViewGroup.LayoutParams Parameter hier: width und height, entsprechend den Attributen layout width und layout height Spezialisierte Unterklassen von ViewGroup.LayoutParams für Unterklassen von ViewGroup Beispiel: LinearLayout.LayoutParams für LinearLayout Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

170 2. GUI-Programmierung für mobile Geräte Definition eigener Views LinearLayout.LayoutParams Parameter originär: gravity und weight Parameter abgeleitet von ViewGroup.MarginLayoutParams: bottommargin, leftmargin, rightmargin und topmargin Parameter abgeleitet von ViewGroup.LayoutParams: height, width, layoutanimationparameters Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

171 2. GUI-Programmierung für mobile Geräte Definition eigener Views XML-basierte Layout-Klassen Layout-Definition mit XML in res/layout/meinlayout.xml, Wurzelelement z.b. LinearLayout Klasse MeinLayout ableiten von Klasse des Wurzelelementes aus meinlayout.xml, also z.b. LinearLayout Für MeinLayout Konstruktoren implementieren und in den Konstruktoren ein Layout-Inflating durchführen. Wirkungsweise des Layout-Inflating: Die Layout-Definition wird gelesen, zugehöriger Objektbaum wird angelegt, idealerweise mit aktuellem Objekt als Wurzel. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

172 2. GUI-Programmierung für mobile Geräte Definition eigener Views Wenn Referenzen auf enthaltene Views erforderlich sind: findviewbyid() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

173 2. GUI-Programmierung für mobile Geräte Definition eigener Views Layout-Inflating Referenz auf LayoutInflater ermitteln: LayoutInflater li = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); Inflating durchführen: li.inflate(r.layout.meinlayout, this, true); public View inflate(int res, ViewGroup root, boolean attachtoroot) res: ID for an XML layout resource to load (e.g., R.layout.main page) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

174 2. GUI-Programmierung für mobile Geräte Definition eigener Views root: Optional view to be the parent of the generated hierarchy (if attachtoroot is true), or else simply an object that provides a set of LayoutParams values for root of the returned hierarchy (if attachtoroot is false.) attachtoroot: Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML. Returns: The root View of the inflated hierarchy. If root was supplied and attachtoroot is true, this is root; otherwise it is the root of the inflated XML file. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

175 2. GUI-Programmierung für mobile Geräte Definition eigener Views Beispiel: Eigene Layout-Klassen Beispiel Zwei Layout-Klassen, jeweils bestehend aus fünf horizontal angeordneten Buttons: Layout-Klasse ButtonField nutzt Layout- Inflating, ButtonField2 definiert das Layout im Quelltext. Main-Layout main.xml enthält je eine Instanz der definierten Layout-Klassen. Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

176 2. GUI-Programmierung für mobile Geräte Definition eigener Views Definition von Views mit neuen Darstellungsmögliochkeiten Klasse ableiten von android.view.view Konstruktoren implementieren und Konstruktoren der Oberklasse aufrufen (vgl. Folie 158) Methoden, die überschreiben werden müssen: protected void onmeasure (int widthmeasurespec, int heightmeasurespe protected void ondraw (Canvas canvas) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

177 2. GUI-Programmierung für mobile Geräte Definition eigener Views Größenberechnung Standardgröße für eine View: 100 mal 100 Pixel Soll die selbstdefinierte View eine andere Größe haben, muss onmeasure() überschrieben werden. Zweck von onmeasure(): Das die View umgebende Layout-Objekt fragt bei der Berechnung des Layouts an, wieviel Platz die View im Layout einnehmen soll. Setzen der Größe mittels: protected final void setmeasureddimension (int measuredwidth, int measu Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

178 2. GUI-Programmierung für mobile Geräte Definition eigener Views Wenn onmeasure() überschrieben wird, muss stets ein Aufruf von setmeasureddimension() erfolgen! Ansonsten: IllegalStateException Die Parameter von setmeasureddimension() müssen zunächst decodiert werden: int mode = MeasureSpec.getMode(measuredWidth); int width = MeasureSpec.getSize(measuredWidth); Mögliche Werte für mode (siehe View.measureSpec): EXACT: Das umgebende Layout-Objekt stellt der View exakt die übergebene Größe bereit. AT MOST: Das umgebende Layout-Objekt fragt nach der Größe der darzustellenden View. Die übergebene Größe ist dabei eine maximale Größe für die View. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

179 2. GUI-Programmierung für mobile Geräte Definition eigener Views UNSPECIFIED: Das umgebende Layout-Objekt hat keine Restriktionen für die Größe der View festgelegt. Die Grenzen sollten als strikt betrachtet werden. Durch eine geeignete Layout-Definition kann man dafür sorgen, dass ausreichend Platz zur Verfügung steht. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

180 2. GUI-Programmierung für mobile Geräte Definition eigener Views Zeichnen einer View Die Darstellung einer View erfolgt durch Überschreiben der Methode: protected void ondraw (Canvas canvas) Canvas stellt eine Fläche (Leinwand) dar, auf die die View gezeichnet werden kann. Das Zeichnen geschieht mit Hilfe von Instanzmethoden der Klasse Canvas. Zum Zeichnen benötigen wir meistens ein Paint-Objekt. Dieses beeinflusst die Art der Zeichnung (z.b. die Linienstärke). Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

181 2. GUI-Programmierung für mobile Geräte Definition eigener Views Drawables sind Objekte, die direkt auf eine Leinwand platziert werden können (z.b. Grafiken) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

182 2. GUI-Programmierung für mobile Geräte Definition eigener Views Methoden zum Zeichnen Eine Auswahl (siehe android.graphics.canvas): public void drawcolor (int color) public void drawargb (int a, int r, int g, int b) public void drawrgb (int r, int g, int b) Ausfüllen der Leinwand mit einer einzelnen Farbe public void drawarc (RectF oval, float startangle, float sweepangle, boolean usecenter, Paint paint) Zeichnet einen Kreisbogen innerhalb eines Rechtecks. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

183 2. GUI-Programmierung für mobile Geräte Definition eigener Views public void drawbitmap (Bitmap bitmap, float left, float top, Paint paint) Zeichnet die Bitmap an die angegebene Stelle. public void drawcircle (float cx, float cy, float radius, Paint paint) Zeichnet einen Kreis. public void drawline (float startx, float starty, float stopx, float stopy, Paint paint) public void drawlines (float[] pts, Paint paint) Zeichnet eine bzw. mehrere Strecken. public void drawoval (RectF oval, Paint paint) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

184 2. GUI-Programmierung für mobile Geräte Definition eigener Views Zeichnet eine Ellipse. public void drawpath (Path path, Paint paint) Mehrere Primitive in einem Path-Objekt, hier auch quadratische, kubische Splines möglich. public void drawrect (float left, float top, float right, float bottom, Paint paint) Zeichnet ein Rechteck. public void drawroundrect (RectF rect, float rx, float ry, Paint paint) Rechteck mit abgerundeten Ecken public void drawtext (String text, float x, float y, Paint paint) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

185 2. GUI-Programmierung für mobile Geräte Definition eigener Views Zeichnet einen String auf die Leinwand. public void drawtextonpath (String text, Path path, float hoffset, float voffset, Paint paint) Zeichnet einen Text entlang eines Path-Objekts Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

186 2. GUI-Programmierung für mobile Geräte Definition eigener Views Paint Ein Paint-Objekt legt für das Zeichnen fest: Farbe mittels setcolor(int color) Siehe Klasse android.graphics.color zum Erzeugen von Farben, z.b. int cyan = Color.rgb(0,255,255); Style mittels setstyle(paint.style style) Werte für Paint.Style: FILL: Geometry and text drawn with this style will be filled, ignoring all stroke-related settings in the paint. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

187 2. GUI-Programmierung für mobile Geräte Definition eigener Views FILL AND STROKE: Geometry and text drawn with this style will be both filled and stroked at the same time, respecting the stroke-related fields on the paint. STROKE: Geometry and text drawn with this style will be stroked, respecting the stroke-related fields on the paint. Font: z.b. settypeface(typeface typeface) und settextsize(float textsize) Effekte: z.b. Antialiasing Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

188 2. GUI-Programmierung für mobile Geräte Definition eigener Views Sonstiges Erzwingen des Neuzeichnens: Methode invalidate() einer View Tatsächliche Größe erfragen in ondraw(): getmeasuredheight() und getmeasuredwidth() Empfehlung: Paint-Objekte nur einmal anlegen MVC-Muster verwenden Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

189 2. GUI-Programmierung für mobile Geräte Definition eigener Views Beispiel: Bunte Kreise Beispiel Spezialisierte View zur Anzeige einer Menge von bunten Kreisen. Siehe Homepage Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

190 3. Persistenz und Datenbanken Lernziele 3. Persistenz und Datenbanken Themen/Lernziele: Einstellungen Dateien lesen und schreiben Datenbanken mit SQLite Allgemeine Schnittstelle zu Datenquellen: Content Provider Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

191 3. Persistenz und Datenbanken Lernziele Android Technologien zur persistenten Speicherung Shared Preferences: Schlüssel/Wert-Paare Files: Schreiben und lesen von Dateien mit der Java-API, Speicherung intern oder auf Speicherkarte SQLite Datenbanken: Jede Anwendung kann ihre eigene SQLite Datenbank verwalten Content Provider: Allgemeine Schnittstelle für den Datenzugriff und die Manipulation über Anwendungsgrenzen hinweg Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

192 3. Persistenz und Datenbanken Shared Preferences Speicherung von Schlüssel/Wert-Paaren Prinzipiell zwei Techniken: SharedPreferences: persistente Speicherung der Paare, Zugriff innerhalb des selben Kontextes Bundle: Speicherung von Paaren zur Sicherung von Activity-Zuständen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

193 3. Persistenz und Datenbanken Shared Preferences Shared Preferences Klasse SharedPreferences Zugriff über den Kontext mit der Methode getsharedpreferences() Parameter: Name für eine Sammlung von Schlüssel/Wert-Paaren, Modus Beispiel: SharedPreferences myprefs = getsharedpreferences("myprefs", Activity.MODE_PRIVATE); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

194 3. Persistenz und Datenbanken Shared Preferences Physische Speicherung in: /data/data/package/shared prefs/myprefs.xml Lesender Zugriff auf die Paare: getxxx(), wobei XXX für einen Datentyp steht. Beispiele: boolean boolpref = myprefs.getboolean("booleanpref", false); float lastfloat = myprefs.getfloat("lastfloat", 0f); int gamelevel = myprefs.getint("gamelevel", 1); String = myprefs.getstring(" ", 1. Parameter: Schlüssel, 2. Parameter: Default-Wert Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

195 3. Persistenz und Datenbanken Shared Preferences Änderungen von Shared Preferences Mittels SharedPreferences.Editor Editor mit Methode edit() erzeugen: SharedPreferences.Editor editor = myprefs.edit(); Zur Speicherung: putxxx() 1. Parameter: Schlüssel, 2. Parameter: neuer Wert Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

196 3. Persistenz und Datenbanken Shared Preferences Beispiel: editor.putboolean("booleanpref", true); editor.putfloat("lastfloat", 1f); editor.putint("gamelevel", 2); editor.putstring(" ", Zur Sicherung der Änderungen: commit() editor.commit(); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

197 3. Persistenz und Datenbanken Shared Preferences Shared Preferences für Einstellungs-Dialoge Layout-Klasse für Einstellungs-Dialog: PreferenceScreen Views für Einstellungen: z.b. CheckBoxPreference, ListPreference Allgemeine Attribute: android:key: Der Schlüssel android:title: Titel für die Einstellung (groß) android:summary: Erläuterung für die Einstellung (klein, unterhalb von Titel) android:defaultvalue: voreingestellter Wert Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

198 3. Persistenz und Datenbanken Shared Preferences Zusätzliche Attribute für ListPreference: android:entries: Array (String) der anzuzeigenden Listeneinträge (Texte, sprachspezifisch) android:entryvalues: Array mit den Werten zu den Einträgen (sprachunabhängig) android:dialogtitle: Titel zur Auswahlliste Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

199 3. Persistenz und Datenbanken Shared Preferences <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/andro <CheckBoxPreference android:key="entrydialog" android:defaultvalue="true"/> <ListPreference android:key="cursorform" android:defaultvalue="block" <ListPreference Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

200 3. Persistenz und Datenbanken Shared Preferences android:key="defsqform" android:defaultvalue="block" </PreferenceScreen> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

201 3. Persistenz und Datenbanken Shared Preferences Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

202 3. Persistenz und Datenbanken Shared Preferences Activity für Einstellungs-Dialoge PreferenceActivity als Unterklasse von Activity Üblicherweise bildet man wiederum Unterklasse von PreferenceActivity Import des Einstellungs-Layout in oncreate() mittels addpreferencesfromresource() Gute Vorgehensweise: Für jede Einstellung eine Klassenmethode für die Abfrage anbieten, evtl. auch für Änderung Zugriff auf SharedPreferences mit Hilfe des PreferenceManager Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

203 3. Persistenz und Datenbanken Shared Preferences Beispiel lesen: public static boolean getentrydialog(context context) { return PreferenceManager.getDefaultSharedPreferences(context). getboolean(entry_dialog_key, ENTRY_DIALOG_DEFAULT); } Beispiel schreiben: public static void putentrydialog(context context, boolean value) { SharedPreferences.Editor editor = PreferenceManager. getdefaultsharedpreferences(context).edit(); editor.putboolean(entry_dialog_key, value); editor.commit(); } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

204 3. Persistenz und Datenbanken Shared Preferences Zum Starten der PreferenceActivity: public void onshowsettings() { startactivity(new Intent(this,SettingsLayout.class)); } SettingsLayout ist hier von PreferenceActivity abgeleitet. Nicht vergessen: Manifest erweitern! <activity android:name=".settingslayout" android:label="settings"> </activity> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

205 3. Persistenz und Datenbanken Lesen und Schreiben von Dateien Statische Dateien als Ressourcen Dateien in Verzeichnis res/raw/ ablegen, z.b. res/raw/meinedatei Es wird automatisch erzeugt: R.raw.meineDatei Zugriff über Resources und die Methode openrawresource(): Resources res = getresources(); InputStream meinedatei = res.openrawresource(r.raw.meinedatei); nur lesender Zugriff Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

206 3. Persistenz und Datenbanken Lesen und Schreiben von Dateien Zugriff auf Dateien FileOutputStream oder FileInputStream erzeugen mit openfileoutput() oder openfileinput() Beispiel: FileOutputStream fos = openfileoutput("myfile.txt", 0); FileInputStream fis = openfileinput("myotherfile.txt"); Pfadnamen nur relativ möglich! Ansonsten Exception Bei openfileoutput() wird Datei automatisch neu angelegt oder überschrieben. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

207 3. Persistenz und Datenbanken Lesen und Schreiben von Dateien Anhängen: Context.MODE APPEND beim zweiten Parameter Physische Ablage in Verzeichnis /data/data/package/lib Kein Sharing zwischen Anwendungen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

208 3. Persistenz und Datenbanken Lesen und Schreiben von Dateien Datei-Management siehe android.content.context, Beispiele: filelist() liefert ein String-Array mit Dateinamen zur Anwendung deletefile(): Löschen von Dateien getfilesdir(): Liefert den Pfad, in dem die Dateien der Anwendung abgelegt werden java.io.file: exists(): Prüft, ob eine Datei existiert Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

209 3. Persistenz und Datenbanken Datenbanken mit SQLite Datenbanken mit SQLite Open Source weitgehend konform zum Standard SQL-92 leichtgewichtig Einbindung über C-Bibliothek Weitere Informationen: Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

210 3. Persistenz und Datenbanken Datenbanken mit SQLite Manifest Typing In manifest typing, the datatype is a property of the value itself, not of the column in which the value is stored. SQLite thus allows the user to store any value of any datatype into any column regardless of the declared type of that column. Die Angabe der Datentypen bei create table sind nur ein Hinweis an die Datenbank, sie müssen nicht eingehalten werden. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

211 3. Persistenz und Datenbanken Datenbanken mit SQLite Keine Unterstützung von... Java Database Connectivity (JDBC) referentielle Integrität (foreign key) bestimmte Join-Arten wie right outer join und full outer join bestimmte Arten von alter table Anweisungen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

212 3. Persistenz und Datenbanken Datenbanken mit SQLite Anlegen/Öffnen einer Datenbank üblicherweise mittels einer Instanz einer Unterklasse von SQLiteOpenHelper Konstruktorparameter von SQLiteOpenHelper: Context, z.b. die Activity Name der Datenbank Instanz einer Cursor-Factory, wenn nicht notwendig == null Versionsnummer der Datenbank Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

213 3. Persistenz und Datenbanken Datenbanken mit SQLite In Unterklasse überschreibt man die folgenden Methoden von SQLiteOpenHelper: public void oncreate(sqlitedatabase db) Wird aufgerufen, wenn die Datenbank bisher nicht existiert. Enthält typischerweise Anweisungen zum Erzeugen der Datenbank-Relationen. public void onupgrade(sqlitedatabase db, int oldversion, int newversion) Wird aufgerufen, wenn beim Öffnen der Datenbank eine höhere Versionsnummer angegeben wird, als beim letzten Öffnen. Enthält Anweisungen zum Upgrade der Datenbank auf newversion. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

214 3. Persistenz und Datenbanken Datenbanken mit SQLite Methoden von SQLiteOpenHelper zum Anlegen/Öffnen einer Datenbank: public SQLiteDatabase getwriteabledatabase() Create and/or open a database that will be used for reading and writing. public SQLiteDatabase getreadabledatabase() Create and/or open a database. Ohne Nutzung von SQLiteOpenHelper: Mittels der Methode public SQLiteDatabase openorcreatedatabase(string name, int mode, SQLiteDatabase.CursorFactory factory) auf Context-Objekt Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

215 3. Persistenz und Datenbanken Datenbanken mit SQLite Methoden für SQLiteDatabase Einige Methoden zur Verwaltung und Transaktionssteuerung: void close() void begintransaction() void endtransaction() int getversion() boolean isopen() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

216 3. Persistenz und Datenbanken Datenbanken mit SQLite DDL-Anweisungen SQL-Anweisungen, die keine Anfragen sind, können stets mittels public void execsql(string sql) ausgeführt werden. z. B. create table, insert, etc. Keine Unterstützung mehrerer Anweisungen! Ungültige SQL-Anweisungen lösen eine SQLException aus. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

217 3. Persistenz und Datenbanken Datenbanken mit SQLite Anfragen Möglichkeiten zur Durchführung von Anfragen: Raw Queries Regular Queries mit Hilfe eines SQLiteQueryBuilder Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

218 3. Persistenz und Datenbanken Datenbanken mit SQLite Raw Queries public Cursor rawquery (String sql, String[] selectionargs) SQL-Anfrage: sql falls sql Anfrage vollständig qualifiziert, dann ist selectionargs == null sql kann in WHERE-Klausel? als Platzhalter für Parameter enthalten dann Übergabe der Parameterwerte mit Hilfe von selectionargs Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

219 3. Persistenz und Datenbanken Datenbanken mit SQLite Regular Queries public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionargs, String groupby, String having, String orderby, String limit) distinct: Duplikatelimination oder nicht table: Relationenname columns: Spaltennamen für die Projektion selection: Tupelbedingung, kann? als Platzhalter enthalten Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

220 3. Persistenz und Datenbanken Datenbanken mit SQLite selectionargs: Parameter für die Platzhalter in selection groupby: Spaltennamen für die Gruppierung having: Gruppenbedingung orderby: Festlegung der Reihenfolge der Tupel limit: Maximale Anzahl an Tupeln, die die Anfrage liefern soll Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

221 3. Persistenz und Datenbanken Datenbanken mit SQLite Cursor Query liefert eine Cursor-Instanz Ein Cursor ist ein Fenster auf das Ergebnis einer Anfrage: jeweils ein Tupel ist das aktuelle Tupel Cursor stellt Methoden zur Navigation innerhalb des Ergebnisses bereit Weiterhin Methoden für den Zugriff auf die Werte des aktuellen Tupels Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

222 3. Persistenz und Datenbanken Datenbanken mit SQLite Cursormethoden public boolean movetofirst() Setzt den Cursor auf das erste Tupel der Ergebnismenge. public boolean movetonext() Setzt den Cursor auf das nächste Tupel der Ergebnismenge. public boolean movetoprevious() Setzt den Cursor auf das vorhergehende Tupel der Ergebnismenge. public int getcount() Liefert die Anzahl der Tupel in der Ergebnismenge. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

223 3. Persistenz und Datenbanken Datenbanken mit SQLite public int getcolumnindex(string colname) Liefert den Spaltenindex zu einem Spaltennamen. public String getcolumnname(int colindex) Liefert den Spaltennamen zu einem Spaltenindex. public String[] getcolumnnames() Liefert ein Feld der Spaltennamen. Für die Ermittlung der Werte stehen Getter-Methoden in Abhängigkeit vom Datentyp zur Verfügung: public Datentyp getdatentyp(int spaltenindex) Datentypen: int, long, short, double, float, String Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

224 3. Persistenz und Datenbanken Datenbanken mit SQLite public void close() Schließen des Cursors. Mit Hilfe der Methoden deactivate() und requery() kann ein Cursor vorübergehend deaktiviert und anschließend wieder aktualisiert werden. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

225 3. Persistenz und Datenbanken Datenbanken mit SQLite DML-Anweisungen DML: Data Manipulation Language Insert, Update, Delete Immer möglich mittels execsql() Nachteil: Komplette SQL-Anweisung muss als String aufgebaut werden. Alternative: ContentValues Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

226 3. Persistenz und Datenbanken Datenbanken mit SQLite ContentValues Dient eigentlich zur Speicherung von Werten, die ein ContentResolver verarbeiten kann. Auch für SQLite-Datenbanken einsetzbar. Schema zum Einfügen eines neuen Tupels: ContentValues tupel = new ContentValues(); tupel.put(spalten-name, Wert);... db.insert(tabellen-name, null, tupel); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

227 3. Persistenz und Datenbanken Datenbanken mit SQLite Update mit Hilfe von: db.update(tabellen-name, tupel, where, null) where: Selektionsbedingung analog zur WHERE-Klausel, um die zu ändernden Tupel zu bestimmen. Delete analog mit: db.delete(tabellen-name, where, null) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

228 3. Persistenz und Datenbanken Content Providers Content Providers Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen Entkopplung der Daten-Schicht von der Anwendungsschicht Zugriff erfolgt URI-basiert Kontrolle der Zugriffsrechte eingebaute Datenquellen (z.b. Kontakte) sind Content Provider Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

229 3. Persistenz und Datenbanken Content Providers Nutzung eines Content Provider Zugriff durch Instanz von ContentResolver Resolver erhältlich über den Anwendungskontext: ContentResolver cr = getcontentresolver(); Der Provider wird durch eine URI angegeben, die der Provider selbst festlegt. siehe Paket android.provider, zugehörige Klassen und Konstanten CONTENT URI Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

230 3. Persistenz und Datenbanken Content Providers Content URIs Typischerweise zwei Arten: URI für alle Datensätze (Tupel) URI für einen einzelnen Datensatz, üblicherweise gebildet durch Anhängen von /tupelid an die URI für alle Datensätze Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

231 3. Persistenz und Datenbanken Content Providers Anfragen Resultat als Cursor Anfragemethode: query() Parameter: URI des Content Provider (Uri) Projektion auf bestimmte Spalten/Attribute (String[]) Bedingung an die Ergebnismenge entsprechend einer WHERE-Klausel, kann? als Platzhalter enthalten (String) Parameter für die Platzhalter in der WHERE-Bedingung (String[]) Reihenfolge der Datensätze (String) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

232 3. Persistenz und Datenbanken Content Providers Alle Datensätze: Cursor allrows = getcontentresolver().query(myprovider.content URI, null, null, null, null); Alle Datensätze, deren 3. Spalte mit einem erforderlichen Wert übereinstimmt und Sortierung der Ergebnismenge nach der 5. Spalte: String where = KEY COL3 + "=" + requiredvalue; String order = KEY COL5; Cursor somerows = getcontentresolver().query(myprovider.content URI, null, where, null, order); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

233 3. Persistenz und Datenbanken Content Providers Insert Datensätze werden repräsentiert als Instanzen von ContentValues Einfügen eines einzelnen Datensatzes: insert() Parameter: URI, ContentValues-Instanz Ergebnis: URI für den eingefügten Datensatz Einfügen mehrerer Datensätze: bulkinsert() Parameter: URI, Feld von ContentValues Ergebnis: Anzahl der eingefügten Datensätze Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

234 3. Persistenz und Datenbanken Content Providers Einzelnen Datensatz einfügen: ContentValues row = new ContentValues(); row.put(column NAME, value);... Uri rowuri = getcontentresolver().insert(myprovider.content URI, row); Mehrere Datensätze einfügen: ContentValues[] rows = new ContentValues[n]; for (int i=0 ; i<n ; i++) { rows[i] = new ContentValues(); rows[i].put(column NAME, value);... } int count = getcontentresolver().bulkinsert(myprovider.content URI, rows) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

235 3. Persistenz und Datenbanken Content Providers Delete Einzelnen Datensatz löschen mit Hilfe der URI des Datensatzes: getcontentresolver().delete(rowuri, null, null); Mehrere Datensätze löschen mit URI des Content Provider und optionaler WHERE-Klausel: String where = "id < 5"; getcontentresolver().delete(myprovider.content URI, where, null); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

236 3. Persistenz und Datenbanken Content Providers Update ContentValues-Instanz: ContentValues row = new ContentValues(); row.put(column NAME, value);... WHERE-Klausel: String where = "id < 5"; Durchführung: getcontentresolver().update(myprovider.content URI, value, where, null) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

237 3. Persistenz und Datenbanken Content Providers Dateien im Content Provider Werden als URIs repräsentiert, internes Mapping zwischen URI und Datei Methoden openouputstream() bzw. openinputstream() um Daten zu schreiben bzw. zu lesen Beispiel: Uri uri = getcontentresolver().insert(myprovider.content URI, value); try { OutputStream = getcontentresolver().openoutputstream(uri); bitmap.compress(bitmap.compressformat.jpeg, 50, outstream); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

238 3. Persistenz und Datenbanken Content Providers } catch (FileNotFoundException e) { } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

239 3. Persistenz und Datenbanken Content Providers Native Android Content Providers Alle in Android eingebauten Content Provider können mit den dargestellten Techniken genutzt werden. Evtl. einfachere Nutzung mit den Klassen im Paket android.provider Einige Android Content Provider: Browser: Zugriff auf Bookmarks, History und gespeicherte Suchanfragen CallLog: Zugriff auf Anruflisten Contacts: Zugriff auf Kontakte Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

240 3. Persistenz und Datenbanken Content Providers MediaStore: Zentraler Zugriff auf alle Multimedia-Daten des Gerätes Settings: Zugriff auf die Einstellungen des Gerätes Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

241 3. Persistenz und Datenbanken Content Providers Beispiel: Contacts // Get a cursor over every contact. Cursor cursor = getcontentresolver().query(people.content_uri, null, null, null, null); // Let the activity manage the cursor lifecycle. startmanagingcursor(cursor); // Use the convenience properties to get the index of the columns. int nameidx = cursor.getcolumnindexorthrow(people.name); int phoneidx = cursor.getcolumnindexorthrow(people.number); String[] result = new String[cursor.getCount()]; boolean rowavail = cursor.movetofirst(); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

242 3. Persistenz und Datenbanken Content Providers while ( rowavail ) { // Extract the name. String name = cursor.getstring(nameidx); // Extract the phone number. String phone = cursor.getstring(phoneidx); result[cursor.getposition()] = name + " (" + phone + ")"; rowavail = cursor.movetonext(); } Damit dieses Beispiel ausgeführt werden kann, muss die READ CONTACTS Permission dem Manifest hinzugefügt werden. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

243 3. Persistenz und Datenbanken Content Providers Definition eines Content Provider Ableiten von der abstrakten Klasse ContentProvider Überschreiben der Methode oncreate(): Hier wird die Datenquelle erzeugt bzw. geöffnet. CONTENT URI breitstellen als Uri-Konstante Überschreiben der Zugriffsmethoden: query(), insert(), update(), delete() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

244 3. Persistenz und Datenbanken Content Providers Content Provider URI Allgemeine Form einer Content Provider URI: content://tld.firmenname.provider.anwendung/datenpfad Beispiel: content://de.mobisports.provider.quadroid/items Weitere Form für einen bestimmten Datensatz, typischerweise durch Anhängen einer Datensatznummer: context://de.mobisports.provider.quadroid/items/4711 Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

245 3. Persistenz und Datenbanken Content Providers URI-Matching Einfachere Analyse von Content-URIs mit einem UriMatcher Definition der CONTENT URI: private static final String myuri = "content://de.mobisports.provider.quadroid/items"; public static final Uri CONTENT_URI = Uri.parse(myURI); Definition von Konstanten zur Unterscheidung der URI-Arten: private static final int ALLROWS = 1; private static final int SINGLE_ROW = 2; Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

246 3. Persistenz und Datenbanken Content Providers Deklaration des UriMatcher: private static final UriMatcher urimatcher; Erzeugung des UriMatcher und Zuordnung der URIs: static { urimatcher = new UriMatcher(UriMatcher.NO_MATCH); urimatcher.adduri("de.mobisports.provider.quadroid", "items", ALLROW urimatcher.adduri("de.mobisports.provider.quadroid", "items/#", SING } public Cursor query(uri uri, String[] projection, Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

247 3. Persistenz und Datenbanken Content Providers } String selection, String[] selectionargs, String sort) { switch ( urimatcher.match(uri) ) { case SINGLE_ROW :... break; case ALLROWS :... break; }... Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

248 3. Persistenz und Datenbanken Content Providers MIME Type Für die Daten eines Content Provider sollten MIME Types nach folgendem Schema definiert werden: einzelner Datensatz: vnd.firmenname.cursor.item/content-type Menge von Datensätzen: vnd.firmenname.cursor.dir/content-type In der Content Provider Klasse ist hierzu die Methode gettype() zu überschreiben: Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

249 3. Persistenz und Datenbanken Content public String gettype(uri uri) { switch ( urimatcher.match(uri) ) { case SINGLE_ROW : return "vnd.mobisports.cursor.item/mycontent"; case ALLROWS : return "vnd.mobisports.cursor.dir/mycontent"; default : throw new IllegalArgumentException("Unsupported URI: " + } } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

250 3. Persistenz und Datenbanken Content Providers Registrierung des Content Provider Der Content Provider muss im Manifest registriert werden! Beispiel: <provider android:name="myprovider" android:authorities="de.mobisports.provider.quadroid"/> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

251 4. Software-Kompponenten in Android Lernziele 4. Software-Komponenten in Android Themen/Lernziele Intents: Explizite und implizite Intents Intent-Filter Intent-Resolution Sub-Activities Broadcast Intents und Broadcast Receivers Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

252 4. Software-Kompponenten in Android Komponenten allgemein Software-Komponenten Eine Software-Komponente ist ein Software-Element, das konform zu einem Komponentenmodell ist und gemäß einem Composition Standard ohne Änderungen mit anderen Komponenten verknüpft und ausgeführt werden kann. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

253 4. Software-Kompponenten in Android Komponenten allgemein Komponentenmodell Ein Komponentenmodell legt einen Rahmen für die Entwicklung und Ausführung von Komponenten fest, der strukturelle Anforderungen hinsichtlich Verknüpfungs- bzw. Kompositionsmöglichkeiten sowie verhaltensorientierte Anforderungen hinsichtlich Kollaborationsmöglichkeiten an die Komponenten stellt. Darüber hinaus wird durch ein Komponentenmodell eine Infrastruktur angeboten, die häufig benötigte Mechanismen wie Verteilung, Persistenz, Nachrichtenaustausch, Sicherheit und Versionierung implementieren kann. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

254 4. Software-Kompponenten in Android Komponenten allgemein Beispiele für Komponentenmodelle Enterprise JavaBeans (EJB) Component Object Model (COM) CORBA Component Model (CCM) OSGi (Open Services Gateway initiative) Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

255 4. Software-Kompponenten in Android Komponenten allgemein Komponenten in Android Android definiert ein einfaches Komponentenmodell. Komponenten: Activities, Content Provider, Broadcast Receivers, Services Verbindung der Komponenten untereinander: Intents Lose Kopplung der Komponenten durch implizite Intents Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

256 4. Software-Kompponenten in Android Intents Intents Intents sind der Kitt zwischen den Komponenten. Nutzung von Komponenten durch andere Anwendungen Einfacher Austausch von Komponenten Lose Kopplung, kein expliziter Aufruf erforderlich Integration in das Berechtigungssystem Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

257 4. Software-Kompponenten in Android Intents Arten von Intents Explizite Intents Die Empfängerkomponente ist beim Aufruf bekannt und eindeutig identifiziert. Implizite Intents Es bleibt den Komponenten überlassen, auf den Intent zu reagieren. Auflösung durch das Android Laufzeitsystem. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

258 4. Software-Kompponenten in Android Intents Explizite Intents Die Empfängerkomponente wird explizit durch Klassenreferenz oder Klassenname angegeben. Intent intent = new Intent(this, Empfaenger.class); Konstruktorparameter: Context, Zielkomponente Alternative: Intent intent = new Intent(); intent.setcomponent(new ComponentName( "domain.applikation.paket", "Empfaenger")); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

259 4. Software-Kompponenten in Android Intents Nachteil der zweiten Variante: Prüfung auf die Existenz des Ziels kann nicht vom Compiler übernommen werden. Die im Intent angegebene Activity starten: startactivity(intent); Hiermit erfolgt keine Benachrichtigung über Terminierung der gestarteten Activity. Alternative: startactivityforresult() Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

260 4. Software-Kompponenten in Android Intents Implizite Intents Werden praktisch ins Leere abgeschickt, in der Hoffung, dass mindestens eine Komponente reagiert. Nutzung von Komponenten anderer Anwendungen Beispiel: Aufruf des Dialers: Intent intent = new Intent(Intent.ACTION DIAL, Uri.parse("tel:(02241)865242")); startactivity(intent); Intent-Bezeichner: hier ACTION DIAL Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

261 4. Software-Kompponenten in Android Intents Es existieren eine Reihe von vordefinierten Intent-Bezeichnern (20 für Activity Actions und 14 für Broadcast Actions ), definiert als String- Konstante in android.content.intent. Die Definition eigener Intent-Bezeichner ist möglich. Eine Komponente legt selbst fest, auf welche Intents sie reagiert (Intent- Filter). Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

262 4. Software-Kompponenten in Android Intent-Filter Intent-Filter für implizite Intents Filter werden im Manifest deklariert! Entwicklungsumgebung erzeugt automatisch einen Intent-Filter für die Start-Activity: <activity android:name=".activityb1" name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

263 4. Software-Kompponenten in Android Intent-Filter Elemente eines Intent-Filters action Bezeichnet die auszuführende Aktion, muss eindeutige Zeichenkette sein, z.b. auf Basis der Konvention für Paketnamen. vordefinierte generische Action-Intents in android.content.intent Verzeichnis von Intents: category Legt fest, unter welchen Bedingungen auf den Intent reagiert wird. DEFAULT: Activity wird als Standard-Activity für den ausgelösten Intent präsentiert. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

264 4. Software-Kompponenten in Android Intent-Filter ALTERNATIVE: Activity wird als weitere Auswahlmöglichkeit neben der DEFAULT-Activity angeboten. LAUNCHER: Activity wird im Launcher angeboten. HOME: Activity wird nach dem Bootvorgang gestartet (Alternativer Home- Bildschirm). In android.content.intent sind zwölf Categories vordefiniert. data Schränkt die Verwendung einer Activity auf Basis der im Intent enthaltenen URI ein. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

265 4. Software-Kompponenten in Android Intent-Filter Intent-Filter: data Attribute des data-elements: android:scheme Schema für den Zugriff, z.b. http oder tel android:mimetype Mime-Type, selbstdefinierter oder bekannter, Wildcard (*) verwendbar android:host Angabe eines Hostnamens Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

266 4. Software-Kompponenten in Android Intent-Filter android:path Setzt android:host voraus, gibt den Pfad zu möglichen Daten an, andere Attribute: android:pathprefix android:pathpattern android:port Portnummer, setzt android:host voraus Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

267 4. Software-Kompponenten in Android Intent-Filter Intent: Beispiele Implizites Starten von Google-Maps: Uri uri = Uri.parse("geo: , "); Intent intent = new Intent(Intent.ACTION VIEW); intent.setdata(uri); startactivity(intent); Implizites Starten des Browsers: Uri uri = Uri.parse("http://www.h-brs.de"); Intent intent = new Intent(Intent.ACTION VIEW, uri); startactivity(intent); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

268 4. Software-Kompponenten in Android Intent-Filter Falls keine passende Komponente gefunden wird: ActivityNotFoundException, aber nicht in der Anwendung, sondern innerhalb des Package Managers (Android-Plattform) Prüfen, ob passende Zielkomponente existiert: private boolean existsintentreceiver(intent intent) { final PackageManager pm = this.getpackagemanager(); List<ResolveInfo> list = pm.queryintentactivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

269 4. Software-Kompponenten in Android Intent-Filter Intent: zusätzliche Nutzdaten Mit der Methode putextra() können wir zusätzliche Nutzdaten in einem Intent hinterlegen. Beispiel: Uri uri = Uri.parse("content://de.meineanwendung"); Intent intent = new Intent(Intent.ACTION PICK, uri); intent.putextra("datensatzid", 4711); startactivity(intent); Die Methode putextra() steht für viele Datentypen zur Verfügung (auch Feld-Typen). Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

270 4. Software-Kompponenten in Android Intent-Filter Zugriff auf Empfängerseite mit getxxx()-methoden putextras() und getextras() für Bundle, d.h. Menge von Schlüssel/Wert-Paaren Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

271 4. Software-Kompponenten in Android Intent-Filter Intents empfangen In oncreate(): Uri, Data und zusätzliche Nutzdaten analysieren Beispiel für Zugriff auf Nutzdaten: Intent intent = getintent(); int id = intent.getintextra("datensatzid", 0); Uri uri = intent.getdata(); Anschließend erforderliche Aktion ausführen Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

272 4. Software-Kompponenten in Android Intent-Filter Intent-Resolution Intent-Resolution ist der Prozess, den Android durchführt, um implizite Intents aufzulösen. Es soll die beste Komponente gefunden werden, die passt. Diese wird dann gestartet. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

273 4. Software-Kompponenten in Android Intent-Filter Regeln zur Intent-Resolution Regeln: Es sei L die Liste aller Komponenten mit Intent-Filter. Regel 1: Komponenten, die mindestens ein Action-Element haben und bei denen keins dieser Elemente passt, werden aus L gelöscht. Regel 2: Komponenten, die kein passendes Category-Element zu einem Catagory-Element des Intents haben, werden aus L gelöscht. Regel 3: Komponenten, die kein passendes Data-Element zur URI des Intent haben, werden aus L gelöscht. Regel 4: Werden mehrere Komponenten mit passendem Intent-Filter gefunden, präsentiert Android einen Auswahlbildschirm. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

274 4. Software-Kompponenten in Android Sub-Activities Sub-Activities Normale Activity, die im Manifest deklariert wird, die aber von einer anderen Activity aus gestartet wird. Verbindung zur startenden Activity Callback-Mechanismus zur Rückgabe von Daten an die startende Activity Typischer Einsatzzweck: Master-Detail-Szenario Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

275 4. Software-Kompponenten in Android Sub-Activities Start mit Hilfe von startactivityforresult(): Uri uri = Uri.parse("content://contacts/people"); Intent intent = new Intent(Intent.ACTION EDIT, uri); int requestcode = 4711; startactivityforresult(intent, requestcode); Nach Beendigung der Sub-Activity in der startenden Activity: onactivityresult(): public void onactivityresult(int requestcode, int resultcode, Intent data) { super.onactivityresult(requestcode, resultcode, data); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

276 4. Software-Kompponenten in Android Sub-Activities } switch ( resultcode ) { case Activity.RESULT_OK : Uri uri = data.getdata(); // Verarbeite geaenderten Datensatz break; case Activity.RESULT_CANCELED : break;... } In der Sub-Activity: Vor Beendigung setzen des Resultats mit Hilfe von setresult(): setresult(resultcode, intent); Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

277 4. Software-Kompponenten in Android Sub-Activities Der Intent benötigt hier kein Ziel, sondern dient nur der Übergabe von Daten. Beendigung der Sub-Activity durch finish() Beispiel: OnClickListener zum Beenden innnerhalb der Sub-Activity: public void onclick(view view) { Bundle resultbundle = new Bundle(); resultbundle.putstring("id", "datensatz0815"); Intent intent = new Intent(); intent.putextras(resultbundle); setresult(result_ok, intent); finish(); } Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

278 4. Software-Kompponenten in Android Sub-Activities Beispiel: Impliziter Intent für Google Maps Beispiel 4.1. Mit Hilfe eines impliziten Intents wird Google Maps gestartet, die Karte ist dabei zentriert auf eine benutzerdefinierte Position. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

279 4. Software-Kompponenten in Android Sub-Activities Beispiel: Expliziter und impliziter Intent innerhalb Applikation Beispiel 4.2. Mit Hilfe eines expliziten oder eines impliziten Intents wird eine andere Komponente (Activity) der gleichen Anwendung gestartet. Mobile Informationssysteme I Hochschule Bonn-Rhein-Sieg, SS

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel 2.6 Managed Code, Angepasste Java

Mehr

2. GUI-Programmierung für mobile Geräte

2. GUI-Programmierung für mobile Geräte 2. GUI-Programmierung für mobile Geräte Lernziele 2. GUI-Programmierung für mobile Geräte Themen/Lernziele: Einführung Lebenszyklus einer Android-Anwendung Beispiele GUI-Elemente Einbindung externer Ressourcen

Mehr

1. Software-Plattform Android Android. Was ist Android? Managed Code, Angepasste Java Virtual Machine

1. Software-Plattform Android Android. Was ist Android? Managed Code, Angepasste Java Virtual Machine 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel ab 2.6, aktuell 3.8 Managed Code,

Mehr

1. Software-Plattform Android

1. Software-Plattform Android 1. Software-Plattform Android Themenübersicht 1. Software-Plattform Android Themen/Lernziele: Mobile Informationssysteme: Grundbegriffe Elementare Eigenschaften von Android Android Software Stack Entwicklungsumgebung

Mehr

Views: TextView. Nicht editierbarer Text, z.b. als Label verwendbar. Einige Attribute:

Views: TextView. Nicht editierbarer Text, z.b. als Label verwendbar. Einige Attribute: 2. GUI-Programmierung für mobile Geräte Spezielle Views Views: TextView Nicht editierbarer Text, z.b. als Label verwendbar. Einige Attribute: android:text android:typeface android:textstyle android:textcolor

Mehr

Einführung in Android. 9. Dezember 2014

Einführung in Android. 9. Dezember 2014 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

Mehr

Einführung in Android

Einführung in Android Einführung in Android FH Gießen Friedberg 12. Oktober 2010 Inhalt Historie / Prognosen / Trends Grundlagen Entwicklungsumgebung Standardbeispiel Erweitertes Beispiel Übung / Quellen 2 Grundlagen - Historie

Mehr

Android GUI Entwicklung

Android GUI Entwicklung Android GUI Entwicklung Aktuelle Technologien verteilter Java Anwendungen Referent: Stefan Haupt Hello World! Agenda Einführung & Motivation Android Applikationen UI-Komponenten Events Ressourcen Kommunikation

Mehr

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

SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM ÜBERSICHT Android Android Dalvik Virtuelle Maschine Android und Desktop Applikationen Android Entwicklung Tools R Activity

Mehr

Softwareentwicklungsprozess im Praktikum. 25. April 2013

Softwareentwicklungsprozess im Praktikum. 25. April 2013 Softwareentwicklungsprozess im Praktikum 25. April 2013 Agile Softwareentwicklung Eine agile Methodik stellt die beteiligten Menschen in den Mittelpunkt und versucht die Kommunikation und Zusammenarbeit

Mehr

Mobile App Development. - Einführung -

Mobile App Development. - Einführung - Mobile App Development - Einführung - Inhalt Organisatorisches Vorlesungsinhalt Mobile Geräte Android Architektur App Aufbau Praktikum Organisatorisches 4 SWS, 5 ECTS 2 Vorlesung / 2 Praktikum ca. 10 Wochen

Mehr

Android. 2 24.09.2013 Mobile Systeme - Android

Android. 2 24.09.2013 Mobile Systeme - Android Android 24.09.2013 Android Plattform/Betriebssystem für mobile Endgeräte wie z.b. Smartphones Basiert auf dem Linux Kernel Bis auf grundlegende Prozesse werden alle Anwenden mithilfe einer speziellen JVM

Mehr

Modellierung einer Android-App. 2. Mai 2013

Modellierung einer Android-App. 2. Mai 2013 Modellierung einer Android-App 2. Mai 2013 Taentzer Software-Praktikum 2013 42 Überblick Modellierung der wesentlichen Aspekte Welche Anwendungsfälle haben wir? Übersicht durch Anwendungsfalldiagramme

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Einführung in Android. 22. Oktober 2014

Einführung in Android. 22. Oktober 2014 Einführung in Android 22. Oktober 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

Mehr

Mobile Systeme Android 07.04.2011

Mobile Systeme Android 07.04.2011 Mobile Systeme Android 07.04.2011 Android Plattform/Betriebssystem für mobile Endgeräte wie z.b. Smartphones Basiert auf dem Linux Kernel Bis auf grundlegende Prozesse werden alle Anwenden mithilfe einer

Mehr

Mobile App Development. - Einführung -

Mobile App Development. - Einführung - Mobile App Development - Einführung - Inhalt Organisatorisches Vorlesungsinhalt Mobile Geräte Android Architektur App Aufbau Praktikum Organisatorisches 4 SWS, 5 ECTS 2 Vorlesung / 2 Praktikum 10 Wochen

Mehr

Seminar Multimediale Werkzeuge Sommersemester 2011

Seminar Multimediale Werkzeuge Sommersemester 2011 Seminar Multimediale Werkzeuge Sommersemester 2011 Dipl.-Ing. Marco Niehaus marco.niehaus@tu-ilmenau.de 09.06.2011 Page 1 Android Development - Installation Java SDK wird benötigt (http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Besprechung der Aufgaben 1) Legen Sie das Android-Projekt HelloWorldApp an so wie es in den vorherigen Folien beschrieben

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Einführung in die Einführung in Android Anwendungsentwicklung

Einführung in die Einführung in Android Anwendungsentwicklung Einführung in die Einführung in Android Anwendungsentwicklung FH Gießen Friedberg 27. Oktober 2010 Inhalt Was bisher geschah / Prognosen Grundlagen Entwicklungsumgebung Beispiel: Notensammler Intents und

Mehr

Mobile Application Development

Mobile Application Development Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann

Mehr

Mobile App Development

Mobile App Development Mobile App Development - Einführung - Inhalt Organisatorisches Vorlesungsinhalt Mobile Geräte Android Architektur App Aufbau Praktikum Organisatorisches 4 SWS, 5 ECTS 2 Vorlesung / 2 Praktikum 10 Wochen

Mehr

Erste Erfahrungen mit Android

Erste Erfahrungen mit Android Java User Group München, 22. 9. 2008 Erste Erfahrungen mit Android 1 Was ist Android? Die erste vollständige, offene und freie Plattform für mobile Telefone Entwickelt von der Open Handset Alliance (Telecoms,

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Organisatorisches Anmelden im Web: ZIV Lehre Anmelden Anwesenheitsliste Anwesenheitsschein bei 75% Anwesenheit Allgemeine

Mehr

Mobile App Development. - Grafische Oberflächen 2 -

Mobile App Development. - Grafische Oberflächen 2 - Mobile App Development - Grafische Oberflächen 2 - Inhalt Dimensionen Layouting Menüs Activities starten Übung Dimensionen Dimensionen Analog zu Strings und Farben können Dimensionen definiert werden Dimensionen

Mehr

Entwickeln für Android OS

Entwickeln für Android OS Entwickeln für Android OS Am Beispiel der WAPLA Wissenschaftliche Arbeitstechniken und Präsentation Lern Applikation Christian Kain Kevin Kain Wolfgang Kremser Gregor Bankhamer Warum Android? Verbreitung

Mehr

1 Der Einstieg in Java für Android

1 Der Einstieg in Java für Android 1 1 Der Einstieg in Java für Android Diese Ergänzung zum Buch Programmieren in Java will Ihnen dabei helfen, erste Programme für Smartphones der Android Plattform von Google zu erstellen und diese Programme

Mehr

ANDROID ANWENDUNGEN FÜR DAS HANDY- BETRIEBSSYSTEM ERFOLGREICH PROGRAMMIEREN

ANDROID ANWENDUNGEN FÜR DAS HANDY- BETRIEBSSYSTEM ERFOLGREICH PROGRAMMIEREN heiko MOSEMANN matthias KOSE ANDROID ANWENDUNGEN FÜR DAS HANDY- BETRIEBSSYSTEM ERFOLGREICH PROGRAMMIEREN Inhaltsverzeichnis 1 Android stellt sich vor............................. 1 1.1 Warum Java?................................

Mehr

Walkabout: Location Based Services mit Android und dem Google Phone

Walkabout: Location Based Services mit Android und dem Google Phone Walkabout: Location Based Services mit Android und dem Google Phone Teilbereich 1: Die Android Plattform für mobile Geräte (Software) Von: Sebastian Schul Inhalt Einleitung Was ist Android Exkurs: Wie

Mehr

Tutorial. Programmierung einer Android-Applikation. Teil 1

Tutorial. Programmierung einer Android-Applikation. Teil 1 Tutorial Programmierung einer Android-Applikation Teil 1 Autor: Oliver Matle Datum: März 2014, Version 1.0 Autor: Oliver Matle, www.matletarium.de Seite 1 von 28 Inhaltsverzeichnis Kapitel 1 Einleitung...3

Mehr

Matthias Furtmüller, Stefan Haselböck. Android

Matthias Furtmüller, Stefan Haselböck. Android Matthias Furtmüller, Stefan Haselböck Android Grundlagen, Entwicklungsumgebung, wichtige Konzepte und Bibliotheken, Unit Testing unter Android, Simulator, Deployment Inhaltsverzeichnis 1 Entwicklungsumgebung,

Mehr

Android 2. Grundlagen und Programmierung. dpunkt.verlag. Arno Becker Marcus Pant. 2., aktualisierte und erweiterte Auflage

Android 2. Grundlagen und Programmierung. dpunkt.verlag. Arno Becker Marcus Pant. 2., aktualisierte und erweiterte Auflage Arno Becker Marcus Pant Android 2 Grundlagen und Programmierung 2., aktualisierte und erweiterte Auflage Unter Mitarbeit von David Müller dpunkt.verlag IX I Inhaltsverzeichnis I Einführung 1 1 Ein erstes

Mehr

App Entwicklung für Android F O R T G E S C H R I T T E N E P R O G R A M M I E R U N G I N J A V A

App Entwicklung für Android F O R T G E S C H R I T T E N E P R O G R A M M I E R U N G I N J A V A App Entwicklung für Android F O R T G E S C H R I T T E N E P R O G R A M M I E R U N G I N J A V A D O Z E N T : R E F E R E N T : P R O F. D R. K L I N K E R R I C O L O S C H W I T Z Aufbau der Präsentation

Mehr

Anforderung. View Button. android:orientation="vertical"> LinearLayout

Anforderung. View Button. <LinearLayout android:layout_width=match_parent Layout. <TextView.../> android:orientation=vertical> LinearLayout Activities Views und Layouts Activity Benutzer Interaktion FullScreen UI-Element View und ViewGroup View: Abstrakte Basisklasse für UI-Komponenten (Widgets) ViewGroup: View, Sammlung/Kontainer von Views

Mehr

Auf einen Blick. Elementare Anwendungsbausteine. Telefonfunktionen nutzen. Dateien und Datenbanken. Organizer und Multimedia

Auf einen Blick. Elementare Anwendungsbausteine. Telefonfunktionen nutzen. Dateien und Datenbanken. Organizer und Multimedia Auf einen Blick Auf einen Blick TEIL I Grundlagen 1 Android eine offene, mobile Plattform... 21 2 Hallo Android!... 43 3 Von der Idee zur Veröffentlichung... 73 TEIL II Elementare Anwendungsbausteine 4

Mehr

APPS FÜR ANDROID ENTWICKELN

APPS FÜR ANDROID ENTWICKELN jan TITTEL jochen BAUMANN ELL N H C S IEG T S N I E APPS FÜR ANDROID ENTWICKELN AM BEISPIEL EINER REALEN APP Inhalt 1 Einführung.............................................. 1 1.1 Die Android-Plattform.................................................

Mehr

Arno Becker Marcus Pant. Android. Grundlagen und Programmierung. I dpunkt.verlag

Arno Becker Marcus Pant. Android. Grundlagen und Programmierung. I dpunkt.verlag Arno Becker Marcus Pant Android Grundlagen und Programmierung I dpunkt.verlag IX 1 Ein erstes Beispiel 3 1.1 Projekt anlegen 3 1.2 Die erste Activity 4 1.3 Layout definieren 5 1.4 Activities aufrufen 8

Mehr

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum Analyse der Android Plattform Andre Rein, Johannes Florian Tietje FH-Gieÿen-Friedberg Android Praktikum 28. Oktober 2010 Topics 1 Übersicht Android Plattform Application Framework Activities und Services

Mehr

App-Entwicklung für Android

App-Entwicklung für Android App-Entwicklung für Android Einleitung - Systemarchitektur Hochschule Darmstadt WS15/16 1 Inhalt Historie Systemarchitektur Sandbox 2 Motivation Kontra Pro Limitierte Größe Begrenzte Ressourcen Kein Standardgerät

Mehr

Android - Basics. 16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14

Android - Basics. 16.10.2013 Praktikum Enwicklung von Mediensystemen WS13/14 Android - Basics 1 Heute Was ist Android? Programmieren für Android App-Struktur Activities und Intents App-Design GUI und Layout 2 Android in a nutshell Open-Source (Open Headset Alliance) Basiert auf

Mehr

1 Ein erstes Beispiel

1 Ein erstes Beispiel 3 1 Ein erstes Beispiel In diesem Abschnitt werden wir ein erstes Android-Programm erstellen. Es dient dem schnellen Einstieg in die Programmierung von Android. Dabei handelt es sich um ein Programm zur

Mehr

4. Software-Komponenten in Android

4. Software-Komponenten in Android 4. Software-Kompponenten in Android Lernziele 4. Software-Komponenten in Android Themen/Lernziele Intents: Explizite und implizite Intents Intent-Filter Intent-Resolution Sub-Activities Broadcast Intents

Mehr

Mobile App Development. - Activities -

Mobile App Development. - Activities - Mobile App Development - Activities - Inhalt Activity Lifecycle Erstellen Starten & Stoppen Spezielle Activities Ac3vi3es Ac3vi3es Definition Eine Aktivität repräsentiert eine Interaktion mit einem Benutzer

Mehr

Android Processes & Services

Android Processes & Services Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Datenhaltung für Android. Model First

Datenhaltung für Android. Model First Datenhaltung für Android Model First Frederik Götz, Johannes Tysiak 26.05.2011 Unser Ziel! 26.05.2011 Datenhaltung in Android - Model First» Frederik Götz, Johannes Tysiak 2 Agenda Android Quickstart Datenhaltung

Mehr

LaVida. Mobile Endgeräte. Andreas Neupert

LaVida. Mobile Endgeräte. Andreas Neupert LaVida Mobile Endgeräte Andreas Neupert Einleitung 1 33 Was? 1) Android a. Hardware b. Entwickeln i. Tools ii. Architektur & Konzepte iii. Google App Inventor c. Benutzen versus 2) WP 7 a. Hardware b.

Mehr

ANDROID ANWENDUNGEN FÜR DAS HANDY- BETRIEBSSYSTEM ERFOLGREICH PROGRAMMIEREN

ANDROID ANWENDUNGEN FÜR DAS HANDY- BETRIEBSSYSTEM ERFOLGREICH PROGRAMMIEREN heiko MOSEMANN matthias KOSE ANDROID ANWENDUNGEN FÜR DAS HANDY- BETRIEBSSYSTEM ERFOLGREICH PROGRAMMIEREN Mosemann/Kose Android vbleiben Sie einfach auf dem Laufenden: www.hanser.de/newsletter Sofort anmelden

Mehr

Google's Betriebssystem für mobile Plattformen. Vortrag von Michaela Rindt Universität Siegen

Google's Betriebssystem für mobile Plattformen. Vortrag von Michaela Rindt Universität Siegen Google's Betriebssystem für mobile Plattformen Vortrag von Michaela Rindt Universität Siegen Übersicht Einleitung Softwarearchitektur Softwareentwicklung für Android Unterschied zu anderen mobilen Plattformen

Mehr

Apps Programmierung von Android-Smartphones

Apps Programmierung von Android-Smartphones Apps Programmierung von Android-Smartphones 2/34 Android-Apps Gliederung: Warum? / Warum Android? Grundlagen Beispiel (sehr kurz) weitere Möglichkeiten Einsatz im Unterricht Diskussion / Fragen 3/34 Smartphone-Programmierung

Mehr

Java - Programmierung für Android. Leibniz Universität IT Services Anja Aue

Java - Programmierung für Android. Leibniz Universität IT Services Anja Aue Java - Programmierung für Android Leibniz Universität IT Services Anja Aue Bücher Dirk Luis / Peter Müller: Android Thomas Künneth: Android 5: Apps entwickeln mit Android Studio Dawn Griffiths, David Griffiths:

Mehr

Android Entwicklung. App Entwickler Konferenz 2010 Bonn, 17. November Markus Junginger. Twitter: #app2010 @greenrobot_de

Android Entwicklung. App Entwickler Konferenz 2010 Bonn, 17. November Markus Junginger. Twitter: #app2010 @greenrobot_de Android Entwicklung App Entwickler Konferenz 2010 Bonn, 17. November Markus Junginger Twitter: #app2010 @greenrobot_de Über mich Markus Junginger, greenrobot 2007: Erste Android App 2001: Erstes Mobile

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Android-Apps weitere Möglichkeiten

Android-Apps weitere Möglichkeiten Android-Apps weitere Möglichkeiten 2/20 weitere Möglichkeiten Speichern in der Sandbox OnTouchListener Senden und Empfangen von SMS Anbindung von Datenbanken Der Beschleunigungssensor Übung 3/20 Speichern

Mehr

Bachelor Thesis Michael Barth

Bachelor Thesis Michael Barth Bachelor Thesis Michael Barth 1. One-Time Passwords 2. OTPW 3. Android Plattform 4. App Entwicklung 5. OTPManager App Umgeht Sicherheitsversprechen durch verschlüsselte Passwörter komplett Password muss

Mehr

Einführung in die Cross-Plattform Entwicklung Das Intel XDK

Einführung in die Cross-Plattform Entwicklung Das Intel XDK Einführung in die Cross-Plattform Entwicklung Das Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK vertraut. Es wird Schritt für Schritt die erste eigene Hybrid-App entwickelt

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

Programmierkonzepte von Android am Beispiel

Programmierkonzepte von Android am Beispiel Programmierkonzepte von Android am Beispiel Dominik Gruntz, Jörg Pleumann Android ist eine Open-Source-Plattform fur mobile Gerate. In JavaSPEKTRUM wurde schon ein Uberblick uber Android gegeben. In diesem

Mehr

Android. LUG-LD Christoph Maya 2011 http://demaya.de. Lizenz: http://creativecommons.org/licenses/by-nc/3.0/de/

Android. LUG-LD Christoph Maya 2011 http://demaya.de. Lizenz: http://creativecommons.org/licenses/by-nc/3.0/de/ Android LUG-LD Christoph Maya 2011 http://demaya.de Lizenz: http://creativecommons.org/licenses/by-nc/3.0/de/ Inhalt Inhalt: ein Mix für Einsteiger und Fortgeschrittene Was ist Android und wo kommts her?

Mehr

2. Auflage. Behandelt Android 4.3. O Reillys Taschenbibliothek. Android. Programmierung. kurz & gut O REILLY. Jörg Staudemeyer

2. Auflage. Behandelt Android 4.3. O Reillys Taschenbibliothek. Android. Programmierung. kurz & gut O REILLY. Jörg Staudemeyer O Reillys Taschenbibliothek 2. Auflage Behandelt Android 4.3 Android Programmierung kurz & gut O REILLY Jörg Staudemeyer Glossar Wenn man beginnt, sich mit der Anwendungsentwicklung unter Android zu beschäftigen,

Mehr

Softwarentwicklung für Android

Softwarentwicklung für Android Softwarentwicklung für Android Fachseminar Wintersemester 2008/09 Matrikelnummer.: 253631-1 - Inhaltsverzeichnis 1 Vorwort... 3 2 Vorraussetzungen zum Entwickeln von Android Anwendungen... 4 2.1 Standard

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Quelle: Quelle: Stanford.edu

Quelle: Quelle: Stanford.edu Quelle: Quelle: Stanford.edu Freies Betriebssystem für mobile Geräte Smartphones Tablet PCs Netbooks Betriebssystem und Softwareplattform Entwickelt von der Open Handset Alliance Ein Konsortium von 80

Mehr

JDroidLib mit Eclipse (Mac/Linux/Windows)

JDroidLib mit Eclipse (Mac/Linux/Windows) JDroidLib mit Eclipse (Mac/Linux/Windows) Version 1.3, 25. März 2013 (Unter Windows besser die ADT-Bundle Version installieren, siehe entsprechende Anleitung) Vorbereitungen: 1. JDK SE neuste Version installieren,

Mehr

Definition eigener Views

Definition eigener Views Definition eigener Views Prinzipielle Ansätze: Spezialisierung eines Widgets bei Nutzung der vorhandenen Darstellungsmöglichkeiten z.b. TextView zur formatierten Ausgabe von Fließkommazahlen Layoutdefinition

Mehr

Einführung in die Cross-Plattform Entwicklung Responsive Webdesign mit dem Intel XDK

Einführung in die Cross-Plattform Entwicklung Responsive Webdesign mit dem Intel XDK Einführung in die Cross-Plattform Entwicklung Responsive Webdesign mit dem Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK und dem Responsive Webdesign vertraut. Es wird

Mehr

Entwicklungswerkzeuge & - methoden

Entwicklungswerkzeuge & - methoden Entwicklungswerkzeuge & - methoden Debugging und Logging von mobile Apps Jürgen Menge Sales Consultant, Oracle Deutschland E-Mail: juergen.menge@oracle.com +++ Bitte nutzen Sie die bevorzugte Telefonnummer

Mehr

Netzwerk Technologien in LabVIEW

Netzwerk Technologien in LabVIEW Netzwerk Technologien in LabVIEW von Dirk Wieprecht NI Germany Hier sind wir: Agenda Agenda Bedeutung des Ethernet für die Messtechnik Ethernet-basierende Technologien in LabVIEW Low Level- TCP/IP Objekt

Mehr

Android 5. Programmieren für Smartphones und Tablets - Grundlagen und fortgeschrittene Techniken. von Arno Becker, Marcus Pant. 4., akt. u. erw.

Android 5. Programmieren für Smartphones und Tablets - Grundlagen und fortgeschrittene Techniken. von Arno Becker, Marcus Pant. 4., akt. u. erw. Android 5 Programmieren für Smartphones und Tablets - Grundlagen und fortgeschrittene Techniken von Arno Becker, Marcus Pant 4., akt. u. erw. Aufl dpunkt.verlag 2015 Verlag C.H. Beck im Internet: www.beck.de

Mehr

Mobile Application Plattforms

Mobile Application Plattforms Mobile Application Plattforms Trends in der Kommunikationstechnik DI Franz Geischläger Agenda Mobile Applications Allgemeine Betrachtung Mobile Betriebssysteme und Plattformen Die wichtigsten Vertreter

Mehr

Apps-Entwicklung mit Netbeans

Apps-Entwicklung mit Netbeans JDroid mit Netbeans Seite 1 Apps-Entwicklung mit Netbeans Version 2.2, 30. April 2013 Vorbereitungen: 1. JDK SE neuste Version installieren, (http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Mehr

Apps-Entwicklung mit Eclipse

Apps-Entwicklung mit Eclipse JDroid mit Eclipse Seite 1 Apps-Entwicklung mit Eclipse Version 1.1, 30. April 2013 Vorbereitungen: 1. JDK installieren JDK SE neuste Version (64 oder 32 Bit) herunterladen und installieren (http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Mehr

JOGGA Der Jogging-Companion

JOGGA Der Jogging-Companion JOGGA Der Jogging-Companion GLIEDERUNG: (1) Idee (2) Funktionen (3) Codebeispiele IDEE: Jeder Jogger kennt das Problem: Man rafft sich auf um eine Runde zu laufen, schwitzt während dessen ohne Ende und

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

Auffrischung jquery. jquery Mobile. Marco Francke I 24.02.2011

Auffrischung jquery. jquery Mobile. Marco Francke I 24.02.2011 Auffrischung jquery jquery Mobile Marco Francke I 24.02.2011 Mayflower GmbH 2010 write less do more Marco Francke 24. Februar 2011 24.02.11 Mayflower GmbH 2 Mayflower GmbH 2010 Was ist jquery und was kann

Mehr

3.9 Grundelemente einer Benutzeroberfläche

3.9 Grundelemente einer Benutzeroberfläche 92 3 Grundlagen einer ios-anwendung 3.8.4 Target-Actions Einer der häufigsten Anwendungsfälle bei einer Oberfläche ist das Betätigen einer Schaltfläche durch einen Anwender, woraufhin eine bestimmte Aktion

Mehr

Dokumentation: wi://googlemaps

Dokumentation: wi://googlemaps 1 Dokumentation: wi://googlemaps zur Einbindung von eigenen GoogleMaps Karten im TYPO3 Backend 2 Inhalt Einrichtung des Plugins... 3 Schritt 1: Frontend Plugin anlegen... 3 Schritt 2: Speicherort der Datensätze

Mehr

Programmierung mobiler Geräte

Programmierung mobiler Geräte Programmierung mobiler Geräte SoSe 2015 Native Entwicklung mit Android Einführung Markus Berg Hochschule Wismar Fakultät für Ingenieurwissenschaften Bereich Elektrotechnik und Informatik http://mmberg.net

Mehr

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg Connecting Android Externe Hardware mit dem grünen Roboter verbinden Alexander Dahmen Dominik Helleberg Speaker Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+

Mehr

eclipse - Entwicklungsumgebung und mehr ETIS SS05

eclipse - Entwicklungsumgebung und mehr ETIS SS05 eclipse - Entwicklungsumgebung und mehr ETIS SS05 Gliederung Motivation Geschichte Architektur Platform Runtime Eclipse Platform Java Development Tools (JDE) Plugin Development Environment (PDE) Zusammenfassung

Mehr

Sicherheit in Android

Sicherheit in Android Motivation Aufbau Sicherheit Ausblick Quellen Sicherheit in Android Peter Salchow INF-M2 - Anwendungen 1 Sommersemester 2008 Department Informatik HAW Hamburg 20. Mai 2008 Peter Salchow Sicherheit in Android

Mehr

Definition eigener Views

Definition eigener Views Definition eigener Views Prinzipielle Ansätze: Spezialisierung eines Widgets bei Nutzung der vorhandenen Darstellungsmöglichkeiten z.b. TextView zur formatierten Ausgabe von Fließkommazahlen Layoutdefinition

Mehr

Informatik Sommercamp 2012

Informatik Sommercamp 2012 Informatik Sommercamp 2012 App Entwicklung mit dem Android SDK Dominik W., Stefan S., Jan L. Fakultät für Informatik und Mathematik Universität Passau 23.07.2012 Gliederung 1 2 3 4 Warum? an Schule und

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Agenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges

Agenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges Komponentenbasierte Client-Architektur Hamburg, 16.11.2007 Bernd Olleck IT-Beratung Olleck Agenda Clients aus drei verschiedenen Perspektiven: Technische Infrastruktur Fachliche Sicht Aufgaben eines Clients

Mehr

Programmierung eines GIMP-Plugin

Programmierung eines GIMP-Plugin Programmierung eines GIMP-Plugin Was ist GIMP? GNU Image Manipulation Program Bildbearbeitungssoftware Bildkonvertierer Open Source Erweiterbar durch Plugins Mögliche Programmiersprachen für Plugin-Entwicklung

Mehr

Überleben im Funkloch

Überleben im Funkloch Überleben im Funkloch Offlinefähige Apps für Android entwickeln Christian Janz (@c_janz ) christian.janz@bridging-it.de Christian Janz Consultant im Bereich Softwareentwicklung Java/JEE bei Bridging IT

Mehr

Java Desktop Anwendungen

Java Desktop Anwendungen 5 1 Java Desktop Anwendungen das Problem: Desktop-Anwendungen werden mit Hilfe der Swing- Bibliothek programmiert, aber die Swing-Bibliothek ist riesig und unübersichtlich es gab kein Programmiergerüst

Mehr

NEXT GENERATION MOBILE PHONE PLATFORMS

NEXT GENERATION MOBILE PHONE PLATFORMS Stephan Zeisberg NEXT GENERATION MOBILE PHONE PLATFORMS Ein Einblick in die Systemarchitekturen aktueller Smartphones 1 Motivation Technologischer Stillstand in der Entwicklung mobiler Betriebssysteme

Mehr

CloudMatic V1.0. Inhalt

CloudMatic V1.0. Inhalt CloudMatic V1.0 Inhalt Einleitung... 2 CCUs hinzufügen... 3 meine-homematic.de... 4 Eigenes VPN... 4 View Editor... 5 Übersicht... 5 Allgemeine Einstellungen... 6 Kanäle hinzufügen... 6 Spezielle Kanäle...

Mehr

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel App Framework vom Intel XDK vertraut. Es wird Schritt für Schritt

Mehr

Studiengang Wirtschaftsinformatik

Studiengang Wirtschaftsinformatik Bachelorarbeit 2009 Studiengang Wirtschaftsinformatik Entwicklung eines Barcodelesers unter Android For Android S tudent : S tefan T heler Dozent : Laurent Sciboz www.hevs.ch Abstract Diese Bachelorarbeit

Mehr

5 Oberflächengestaltung

5 Oberflächengestaltung 49 5 Oberflächengestaltung Die Qualität der Programmoberfläche ist ein wichtiges Kriterium für die Akzeptanz durch den Anwender. Schon durch den geschickten Einsatz der bereitgestellten Oberflächenelemente

Mehr

Open Source IDE - eclipse ETIS SS04

Open Source IDE - eclipse ETIS SS04 Open Source IDE - eclipse ETIS SS04 Gliederung Motivation Geschichte Architektur Platform Runtime Eclipse Platform Java Development Tools (JDE) Plugin Development Environment (PDE) Zusammenfassung 2 Motivation

Mehr

Präsentation. homevisu Familie. Peter Beck. Juni 2011. www.p-b-e.de. 2011 p b e Peter Beck 1

Präsentation. homevisu Familie. Peter Beck. Juni 2011. www.p-b-e.de. 2011 p b e Peter Beck 1 Präsentation homevisu Familie Peter Beck Juni 2011 2011 p b e Peter Beck 1 Funktionensumfang Der Funktionsumfang das provisu Framework. Modular und durch Plug-In erweiterbar / anpassbar. Plug-In Schnittstelle

Mehr