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 peter.becker@h-brs.de 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=" 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=" 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... android:textcolor="@android:color/dark_gray" /> 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=" 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(" ", "nobody@nowhere.de"); 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=" <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(" 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

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

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

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

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

Google Android API. User Interface. Eine knappe Einführung

Google Android API. User Interface. Eine knappe Einführung Google Android API User Interface Eine knappe Einführung Google Android API User Interface Designelement Wofür Klasse/Package View Basisklasse für alle Designelemente public class android.view.view Viewgroup

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

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

Inhaltsverzeichnis. Heiko Mosemann, Matthias Kose. Android. Anwendungen für das Handy-Betriebssystem erfolgreich programmieren ISBN: 978-3-446-41728-1

Inhaltsverzeichnis. Heiko Mosemann, Matthias Kose. Android. Anwendungen für das Handy-Betriebssystem erfolgreich programmieren ISBN: 978-3-446-41728-1 Heiko Mosemann, Matthias Kose Android Anwendungen für das Handy-Betriebssystem erfolgreich programmieren ISBN: 978-3-446-41728-1 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-41728-1

Mehr

Heiko Mosemann Matthias Kose. Android. Anwendungen für das Handy-Betriebssystem erfolgreich programmieren HANSER

Heiko Mosemann Matthias Kose. Android. Anwendungen für das Handy-Betriebssystem erfolgreich programmieren HANSER Heiko Mosemann Matthias Kose Android Anwendungen für das Handy-Betriebssystem erfolgreich programmieren HANSER Inhaltsverzeichnis 1 Android stellt sich vor 1 1.1 Warum Java? ' 2 1.2 Einschränkungen 3 1.3

Mehr

2. Hintergrundverarbeitung in Android: Services und Notifications

2. Hintergrundverarbeitung in Android: Services und Notifications 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht: In Mobis 1: Threads; hier genauerer Blick auf Services

Mehr

App Entwicklung mit dem Android SDK

App Entwicklung mit dem Android SDK App Entwicklung mit dem Android SDK Grafische Benutzeroberfläche Dominik Wagner Informatik Sommercamp 2012 23.7.2012 Kurze Übersicht Um ein Layout für eine Android-Anwendung zu definieren schreibt man

Mehr

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Fachhochschule Münster Labor für Software Engineering luzar@fh-muenster.de www.naviki.org 1 Naviki die Idee www.naviki.org 2 Wie funktioniert

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 Inhalt Toast-Meldungen Permissions Sensoren GPS (Global Positioning System) Kamera Anzeigen von Koordinaten auf einer

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

tentoinfinity Apps 1.0 EINFÜHRUNG

tentoinfinity Apps 1.0 EINFÜHRUNG tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen

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

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

Ihr CMS für die eigene Facebook Page - 1

Ihr CMS für die eigene Facebook Page - 1 Ihr CMS für die eigene Facebook Page Installation und Einrichten eines CMS für die Betreuung einer oder mehrer zusätzlichen Seiten auf Ihrer Facebook Page. Anpassen der "index.php" Installieren Sie das

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 Android App-Entwicklung. Patrick Treyer und Jannis Pinter

Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter Einführung in die Android App-Entwicklung Patrick Treyer und Jannis Pinter Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Android User Interface

Android User Interface Android User Interface Eine Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 2 besprechen (inkl. Repetition)

Mehr

ROFIN App Benutzerhandbuch. Version 1.0

ROFIN App Benutzerhandbuch. Version 1.0 ROFIN App Benutzerhandbuch Version 1.0 Inhaltsverzeichnis 1. Beschreibung 2. Passwort und Einstellungen 3. Support Tab 4. Vertriebs Tab 5. Web Tab 6. Häufig gestellte Fragen BESCHREIBUNG Die ROFIN App

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Im folgenden wird die Outlookanbindung an organice/pi beschrieben.

Im folgenden wird die Outlookanbindung an organice/pi beschrieben. Einleitung Einleitung Im folgenden wird die Outlookanbindung an organice/pi beschrieben. Wir unterscheiden dabei Termine und Kontakte. Über das Outlookmenü werden zusätzliche Aktivitäten gesteuert. "Normale"

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

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

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

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

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller Proseminar: Website-Managment-System NetObjects Fusion von Christoph Feller Netobjects Fusion - Übersicht Übersicht Einleitung Die Komponenten Übersicht über die Komponenten Beschreibung der einzelnen

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Kurzeinführung Excel2App. Version 1.0.0

Kurzeinführung Excel2App. Version 1.0.0 Kurzeinführung Excel2App Version 1.0.0 Inhalt Einleitung Das Ausgangs-Excel Excel-Datei hochladen Excel-Datei konvertieren und importieren Ergebnis des Imports Spalten einfügen Fehleranalyse Import rückgängig

Mehr

MetaQuotes Empfehlungen zum Gebrauch von

MetaQuotes Empfehlungen zum Gebrauch von MetaQuotes Empfehlungen zum Gebrauch von MetaTrader 4 auf Mac OS Auch wenn viele kommerzielle Angebote im Internet existieren, so hat sich MetaQuotes, der Entwickler von MetaTrader 4, dazu entschieden

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld Sharing. Auf dem Bildschirm sollte folgendes Fenster erscheinen: Einleitung Unter MacOS X hat Apple die Freigabe standardmäßig auf den "Public" Ordner eines Benutzers beschränkt. Mit SharePoints wird diese Beschränkung beseitigt. SharePoints erlaubt auch die Kontrolle

Mehr

Installation SQL- Server 2012 Single Node

Installation SQL- Server 2012 Single Node Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit

Mehr

Benutzerhandbuch MedHQ-App

Benutzerhandbuch MedHQ-App Benutzerhandbuch MedHQ-App T h o r D y n a m i c s G m b H A m B ü c h e n b e r g s k a m p 2 2 2 1 0 3 9 B ö r n s e n V e r s i o n 1. 0 S t a n d : 0 4 / 2 0 1 5 z u r M e d H Q - A p p - V e r s i

Mehr

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX Allgemeines Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX Stand 21.11.2014 Die Yeastar MyPBX Telefonanlagen unterstützen die automatische Konfiguration der tiptel 3010, tiptel 3020 und tiptel 3030

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

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Anleitung zum Login über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Stand: 18.Dezember 2013 1. Was ist der Mediteam-Login? Alle Mediteam-Mitglieder können kostenfrei einen Login beantragen.

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Inhaltsverzeichnis. Apps für Android entwickeln

Inhaltsverzeichnis. Apps für Android entwickeln Inhaltsverzeichnis zu Apps für Android entwickeln von Jan Tittel und Jochen Baumann ISBN (Buch): 978-3-446-43191-1 ISBN (E-Book): 978-3-446-43315-1 Weitere Informationen und Bestellungen unter http://www.hanser-fachbuch.de/978-3-446-43191-1

Mehr

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java Stand: 21.02.2015 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16 Änderungen in Dokumentation und Software sind vorbehalten! Copyright Copyright 2005 COSA GmbH Alle Rechte vorbehalten.

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

COMPUTERIA VOM 29.1.14. Wenn man seine Termine am Computer verwaltet hat dies gegenüber einer Agenda oder einem Wandkalender mehrere Vorteile.

COMPUTERIA VOM 29.1.14. Wenn man seine Termine am Computer verwaltet hat dies gegenüber einer Agenda oder einem Wandkalender mehrere Vorteile. COMPUTERIA VOM 29.1.14 DESKTOP-TERMINKALENDER: VORTEILE GEGENÜBER EINER AGENDA RAINLENDAR Wenn man seine Termine am Computer verwaltet hat dies gegenüber einer Agenda oder einem Wandkalender mehrere Vorteile.

Mehr

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Seit Anfang Juni 2012 hat Facebook die Static FBML Reiter deaktiviert, so wird es relativ schwierig für Firmenseiten eigene Impressumsreiter

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden: Anleitung zur Installation der Exchange Mail Lösung auf Android 2.3.5 Voraussetzung für die Einrichtung ist ein vorliegender Passwortbrief. Wenn in der folgenden Anleitung vom Extranet gesprochen wird

Mehr

Thomas Künneth. Android 3. Apps entwickeln mit dem Android SDK. Galileo Press

Thomas Künneth. Android 3. Apps entwickeln mit dem Android SDK. Galileo Press Thomas Künneth Android 3 Apps entwickeln mit dem Android SDK Galileo Press Vorwort 13 TEIL I Grundlagen 1.1 Entstehung 19 1.1.1 Die Open Handset Alliance, 20 1.1.2 Android Ine 20 1.1.3 Evolution einer

Mehr

E-Mail Adressen der BA Leipzig

E-Mail Adressen der BA Leipzig E-Mail Adressen der BA Jeder Student der BA bekommt mit Beginn des Studiums eine E-Mail Adresse zugeteilt. Diese wird zur internen Kommunikation im Kurs, von der Akademie und deren Dozenten zur Verteilung

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

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

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

Was ist neu in Sage CRM 6.1

Was ist neu in Sage CRM 6.1 Was ist neu in Sage CRM 6.1 Was ist neu in Sage CRM 6.1 In dieser Präsentation werden wir Sie auf eine Entdeckungstour mitnehmen, auf der folgende neue und verbesserte Funktionen von Sage CRM 6.1 auf Basis

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005 Das Software Studio Christian Efinger mobilepoi 0.91 Demo Version Anleitung Erstellt am 21. Oktober 2005 Kontakt: Das Software Studio Christian Efinger ce@efinger-online.de Inhalt 1. Einführung... 3 2.

Mehr

App-Entwicklung für Android

App-Entwicklung für Android App-Entwicklung für Android XML / Layouts Hochschule Darmstadt WS15/16 1 Inhalt XML Layouts Layouttypen Dimensions View Element Designs Farben Strings 2 XML XML ist eine Meta-Sprache zur Festlegung der

Mehr

HSR git und subversion HowTo

HSR git und subversion HowTo HSR git und subversion HowTo An der HSR steht den Studierenden ein git Server für die Versionskontrolle zur Verfügung. Dieses HowTo fasst die notwendigen Informationen zur Verwendung dieses Dienstes zusammen.

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

novapro Open Audittrail Report

novapro Open Audittrail Report novapro Open Audittrail Report Bedienungshandbuch 7001042001 Q11 Diese Beschreibung entspricht dem aktuellen Programmstand Version 1.0. Änderungen erfolgen zu jeder Zeit und ohne vorherige Ankündigung.

Mehr

Applets I. Grundlagen der g Applet-Programmierung

Applets I. Grundlagen der g Applet-Programmierung Applets I Grundlagen der g Applet-Programmierung 2 Inhalt Applets Was sind Applets Entwicklung Grundlagen Zustandssteuerung eines Applets Methoden zum Nachrichtentransfer Soundausgabe Animation Einbindung

Mehr

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013 1 Vorwort OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013 Folgende Beschreibung wurde mit einem Ubuntu 7.10 mit Kernel 2.6.22-14, OpenVPN 2.0.9 und KVpnc 0.9.1-rc1 getestet. Ein weiterer erfolgreicher

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

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen 1 Download und Import der Lösung 2 Import der aktuellenverpflegungspauschalen 3 Weitere Informationen und Problembehandlung 1 Download

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

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation von NetBeans inkl. Glassfish Anwendungs-Server Installation von NetBeans inkl. Glassfish Anwendungs-Server Diese Anleitung führt Sie Schritt für Schritt durch die Einrichtung der Entwicklungsumgebung NetBeans, angefangen beim Download der benötigten

Mehr

PAUL App. Anleitung für Studierende und Lehrende

PAUL App. Anleitung für Studierende und Lehrende PAUL App Anleitung für Studierende und Lehrende Stand: 9. Dezember 2014 1 Liebe Studierende, liebe Lehrende, mit der Einführung der PAUL App können verschiedene Funktionalitäten der PAUL Webseite einfacher

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Bedienungsanleitung für den SecureCourier

Bedienungsanleitung für den SecureCourier Bedienungsanleitung für den SecureCourier Wo kann ich den SecureCourier nach der Installation auf meinem Computer finden? Den SecureCourier finden Sie dort, wo Sie mit Dateien umgehen und arbeiten. Bei

Mehr

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics Howto Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics Inhaltsverzeichnis: 1 GRUNDEINSTELLUNGEN IM SAP SOLUTION MANAGER... 3 1.1 ANLEGEN EINES SERVERS... 3 1.2 ANLEGEN EINES TECHNISCHEN

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen der Programmierung APPLETS Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets

Mehr

Installation und Sicherung von AdmiCash mit airbackup

Installation und Sicherung von AdmiCash mit airbackup Installation und Sicherung von AdmiCash mit airbackup airbackup airbackup ist eine komfortable, externe Datensicherungslösung, welche verschiedene Funktionen zur Sicherung, sowie im Falle eines Datenverlustes,

Mehr

Der einfache Weg zum CFX-Demokonto

Der einfache Weg zum CFX-Demokonto Der einfache Weg zum CFX-Demokonto Diese Anleitung hilft Ihnen bei der Eröffnung eines Demokontos beim CFX Broker. Jeder Schritt bis zur vollständigen Eröffnung wird Ihnen im Folgenden erklärt. Zur besseren

Mehr

Sehr geehrte Faktor-IPS Anwender,

Sehr geehrte Faktor-IPS Anwender, März 2014 Faktor-IPS 3.11 Das neue Release Faktor-IPS 3.11 steht Ihnen zum Download zur Verfügung. Wir informieren Sie über die neusten Feautres. Lesen Sie mehr Sehr geehrte Faktor-IPS Anwender, Auf faktorzehn.org

Mehr

Guideline. Facebook Posting. mit advertzoom Version 2.3

Guideline. Facebook Posting. mit advertzoom Version 2.3 Guideline Facebook Posting mit advertzoom Version 2.3 advertzoom GmbH advertzoom GmbH Stand November 2012 Seite [1] Inhalt 1 Facebook Posting Schnittstelle... 3 1.1 Funktionsüberblick... 3 2 Externe Ressource

Mehr

System-Update Addendum

System-Update Addendum System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im

Mehr

Informationen zu den regionalen Startseiten

Informationen zu den regionalen Startseiten Informationen zu den regionalen Startseiten Inhaltsverzeichnis Informationen zu den regionalen Startseiten 1 1. Grundlegende Regeln 2 1.1. Was wird angezeigt? 2 1.2. Generelle Anzeigeregeln 2 2. Anpassbare

Mehr

Installation des edu- sharing Plug- Ins für Moodle

Installation des edu- sharing Plug- Ins für Moodle Installation des edu- sharing Plug- Ins für Moodle [edu-sharing Team] [Dieses Dokument beschreibt die Installation und Konfiguration des edu-sharing Plug-Ins für das LMS Moodle.] edu- sharing / metaventis

Mehr

Content Management System mit INTREXX 2002.

Content Management System mit INTREXX 2002. Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,

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

Content Management System (CMS) Manual

Content Management System (CMS) Manual Content Management System (CMS) Manual Thema Seite Aufrufen des Content Management Systems (CMS) 2 Funktionen des CMS 3 Die Seitenverwaltung 4 Seite ändern/ Seite löschen Seiten hinzufügen 5 Seiten-Editor

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr