Diplomarbeit. Sven Möller geb. am 07. Juli 1983 in Limburg an der Lahn

Größe: px
Ab Seite anzeigen:

Download "Diplomarbeit. Sven Möller geb. am 07. Juli 1983 in Limburg an der Lahn"

Transkript

1 Diplomarbeit Sven Möller geb. am 07. Juli 1983 in Limburg an der Lahn Entwicklung von Komponenten für ein mobiles Büro unter dem Betriebssystem Android Technische Hochschule Mittelhessen Fachbereich Elektro- und Informationstechnik Studiengang Informations- und Kommunikationstechnik Referent: Korreferent: Firma: Firmenbetreuer: Prof. Bernhard Endl Prof. Dr.-Ing. Alexander Klös Prisma Gesellschaft für angewandte Informatik mbh Dipl.- Inform. (FH) Mike Bach Datum:

2 Zusammenfassung Das Ziel dieser Diplomarbeit war, eine Software zu entwickeln, die die Funktionen eines mobilen Büros beinhaltet. Zu diesem Zweck soll es möglich sein, wichtige Informationen über einen Kunden für den Außeneinsatz (beispielsweise im Vertrieb) mobil auf einem Tablet 1 zur Verfügung zu haben. Dazu zählen Informationen wie Name, Adresse, Telefonnummer, etc. des Kunden sowie eine Kontakthistorie, die Aufschluss darüber gibt wann und wie mit dem jeweiligen Kunden in Kontakt getreten wurde. Zusätzlich sollen über die Kontakthistorie alle Dokumente wie z.b. Gesprächsprotokolle, Besuchsberichte, Rechnungen, Angebote oder auch s, die durch die Kommunikation mit dem Kunden entstanden sind, zur Verfügung stehen. Die fertige Software war so zu entwickeln, dass sie unabhängig von einer dauerhaften Internetverbindung genutzt werden kann. Um diesen Komfort zu erreichen, muss auf den mobilen Endgeräten eine eigene Datenbank implementiert werden, die es erlaubt auch unterwegs wichtige Daten zu protokollieren und diese mit einer zentralen Stelle zu synchronisieren, sobald wieder eine Internetverbindung besteht. Die in dieser Diplomarbeit erfolgreich entwickelte Applikation für das mobile Betriebssystem Android ist in der Lage, Daten mit dem von der Firma Prisma GmbH entwickelten Informationsmanagementsystem UpToNet zu synchronisieren. Des Weiteren können neue Datensätze angelegt und auf Wunsch in das UpToNet übertragen werden. Alle synchronisierten und selbst erzeugten Daten werden in einer Datenbank abgespeichert und in einer grafischen Benutzeroberfläche übersichtlich dargestellt. 1 Begriffsdefinition Tablet siehe Glossar II

3 Danksagung Ich möchte mich hiermit bei allen bedanken, die mir bei der Erstellung dieser Diplomarbeit geholfen haben. Insbesondere gilt mein Dank meinem Betreuer Dipl.- Informatiker Mike Bach, der mir jederzeit mit Rat und Tat zur Seite stand und immer ein offenes Ohr für Fragen jeglicher Art hatte. Weiterhin möchte ich mich bei Herrn Professor Endl bedanken, der mich seitens der THM immer freundlich und tatkräftig beraten hat und mich mit zahlreichen Tipps und Anregungen bei der Bearbeitung dieser Diplomarbeit unterstützte. Zum Schluss noch eine Danksagung an alle Mitarbeiter der Prisma GmbH für das nette, angenehme und freundschaftliche Betriebsklima, welches mir die Durchführung dieser Diplomarbeit sehr erleichtert hat. III

4 Eidesstattliche Erklärung Hiermit erkläre ich, Sven Möller, geboren am , dass ich die vorliegende Diplomarbeit selbstständig angefertigt habe. Es wurden nur die in der Arbeit ausdrücklich benannten Quellen und Hilfsmittel benutzt. Wörtlich oder sinngemäß übernommenes Gedankengut habe ich als solches kenntlich gemacht. Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungsbehörde vorgelegt und auch nicht veröffentlicht... Ort, Datum Unterschrift IV

5 Abbildungsverzeichnis Abb 1. Tablet-Computer... 1 Abb 2. Überblick der weltweit installierten Android-Betriebssysteme Abb 3. Android Schichtenmodell... 5 Abb 4. Grafische Darstellung unterschiedlicher Activitys... 6 Abb 5. Übergänge und Zustände der Activitys... 8 Abb 6. Applikationsaufbau... 9 Abb 7. Start-Activity Abb 8. Eine Zeile der Kontaktansicht Liste Abb 9. Kundenakten-Activity Abb 10. Kontakthistorie-Activity Abb 11. Neuer Kontakt-Activity Abb 12. Einstellungen-Activity Abb 13. Tablet mit zweigeteilter Ansicht Abb 14. Smartphone mit zwei Activitys zum Anzeigen der gleichen Informationen wie auf einem Tablet Abb 15. Grafische Ansicht des Layouts aus Listing Abb 16. Action Bar Abb 17. Grafische Darstellung der Option-Buttons Abb 18. ListFragment mit individuellem Layout Abb 19. Konzept des Model-View-Controllers Abb 20. Steuerung der einzelnen Elemente durch die Activity Abb 21. UpToNet Cloud Modell Abb 22. Kontenverwaltung Abb 23. Starten der Synchronisation Abb 24. Ablaufplan der Synchronisation Abb 25. Ablaufplan zum Synchronisieren von Daten aus der Cloud Abb 26. Analyseablaufplan der Journal-Datei Abb 27. Datenbankmodell der UpToNet Mobile Datenbank V

6 Abkürzungsverzeichnis ADT App AVD CRM DMS dp JDK JVM SDK SSL Tab URI UUID XML Android Development Tools Applikation Android Virtual Device Customer-Relationship-Management (Kundenbeziehungsmanagement) Dokumentenmanagementsystem Density-Independent Pixel Java Development Kit Java Virtual Machine Software Development Kit Secure Sockets Layer Tabbed Browsing (Registernavigation) Uniform Resource Identifier Universally Unique Identifier Extensible Markup Language VI

7 Glossar App Cloud Eine App als Kurzform für Applikation bezeichnet im Allgemeinen jede Form von Anwendungsprogramm. Im heutigen Sprachgebrauch sind jedoch meistens Anwendungen für Smartphones und Tablets gemeint. Diese lassen sich mit Hilfe eines, in das Betriebssystem integrierten Onlineshops erwerben und installieren. Dadurch ist man in der Lage ein Endgerät mit beliebigen Zusatzfunktionen auszustatten und zu erweitern 2. Unter Cloud (engl. für Wolke ) oder auch Cloud-Computing wird ein Rechnernetzwerk bezeichnet, das onlinebasierte Speicher- und Serverdienste zur Verfügung stellt. Die Idee dahinter ist, dass Rechnerkapazität, Datenspeicher, Netzwerkkapazität oder auch Software über ein Netzwerk (beispielsweise das Internet) zur Verfügung gestellt werden 3. Smartphone Ein Smartphone ist ein Mobiltelefon, dass mehr Computerfunktionalität als ein herkömmliches Mobiltelefon zur Verfügung stellt. Aktuelle Smartphones lassen sich über Zusatzprogramme (Apps) vom Anwender individuell mit zusätzlichen Funktionen erweitern. 4 Tablet Ein Tablet oder auch Tablet-PC ist ein tragbarer, flacher Computer mit einem Touchscreen-Display, das im Vergleich zum Smartphone deutlich größer ist. Anders als ein Notebook verfügen Tablets über keine echte Maus und Tastatur sondern lediglich über ein virtuelle Tastatur, die je nach Bedarf ein- und ausgeblendet wird. Aus diesem Grund erfolgt die Bedienung über den berührungsempfindlichen Bildschirm mittels Finger oder speziellem Eingabestift. Tablets lassen sich wie Smartphones durch Apps individuell erweitern 5. 2 Quelle: (Stand 03.September 2012) 3 Quelle: (Stand 03.September 2012) 4 Quelle: (Stand 03.September 2012) 5 Quelle: (Stand 03.September 2012) VII

8 Inhaltsverzeichnis 1 Einleitung Grundlagen Entwicklungswerkzeuge Auswahl der Android-Version Android Grundlagen Bestandteile einer Applikation Vorstellung der Applikation Der Kreislauf der Activities Start-Activity Activity: Kundenakten Activity: Kontakthistorie Activity: Neuer Kontakt Activity: Einstellungen Die Benutzeroberfläche softwaretechnische Aspekte Das Layout der Activities Die Action Bar Implementierung der Action Bar Options Menü Die Activity mit Daten füllen Die Klasse ListFragment Implementierung der Klasse ListFragmentAnsprechpartner Reagieren auf Benutzereingaben Das Prinzip der Listener Listener registrieren Reagieren auf Benutzereingaben der Action Bar Synchronisation der Daten Synchronisation mit Hilfe von Online-Konten Ablauf der Synchronisation Synchronisieren von Dokumenten... 37

9 5.4 Synchronisieren von Datenbankeinträgen Datenspeicherung in Datenbanken Content-Provider Zugriff auf Datenbankinhalte Das Konzept der Klasse LoaderManager Die Methode setviewbinder( ) Fazit und Ausblick... 51

10 1 Einleitung Mobilität ist heutzutage ein immer wichtiger werdendes Thema und auch Smartphones 6 und Tablets rücken mehr und mehr in den Vordergrund. Waren zu Beginn dieser Ära Business-Apps 7 kaum ein Thema, so gewinnen sie auch im geschäftlichen Bereich immer mehr an Bedeutung. Dies liegt unter anderem an der Handlichkeit, der hohen Akkulaufzeit 8 und der einfachen und intuitiven Bedienung mittels Finger oder speziellem Eingabestift der mobilen Geräte. Zudem steht die Rechenleistung moderner Endgeräte einem Notebook in nichts mehr nach. Ein weiterer Vorteil, vor allem bei der Verwendung von einem Tablet in Gegenwart eines Kunden, ist die geringe Barriere die durch ein solches Gerät aufbaut wird. Bei der Verwendung eines Notebooks in Gegenwart eines Kunden wird durch den senkrecht stehenden Bildschirm oftmals eine Art von Sichtschutz aufgebaut, wodurch eine gewisse Distanz zum Kunden entsteht. Bei der Verwendung eines Tablets ist diese negative Eigenschaft nicht vorhanden. Die Bedienung des Gerätes gleicht eher einer Mitschrift auf einem Notizblock. Nachteil solcher Geräte sind allerdings der im Gegensatz zum Notebook kleinere Bildschirm und die virtuelle Tastatur, welche den darstellbaren Bereich beim Schreiben einer Nachricht noch einmal zusätzlich verkleinert. Abb 1. Tablet-Computer 6 Begriffsdefinition Smartphone siehe Glossar 7 Begriffsdefinition App siehe Glossar 8 Aktuelle Geräte wie das Samsung Galaxy Tab oder das Apple ipad haben eine Akkulaufzeit von ca. 8 Stunden beim Surfen im Internet. Quelle: (Stand: 10.September 2012) 1

11 Die Diplomarbeit gliedert sich in drei größere Teilbereiche. Der erste Teil ist die Entwicklung einer übersichtlichen, anwenderfreundlichen Benutzeroberfläche. Teil zwei umfasst die Entwicklung eines Synchronisationsmechanismus mit einem Cloud-ähnlichen 9 Dienst. Der letzte Teil befasst sich mit dem Speichern aller relevanten Daten in einer auf dem Endgerät befindlichen Datenbank. 9 Begriffsdefinition Cloud siehe Glossar 2

12 2 Grundlagen Das folgende Kapitel erläutert die grundlegenden Elemente der Android- Softwareentwicklung. Dazu werden zuerst die benötigten Entwicklungswerkzeuge vorgestellt. Im Anschluss folgt ein Überblick über die verschiedenen Android- Versionen, der Aufbau des Android-Betriebssystems sowie die wichtigsten Bestandteile einer Android-Applikation. 2.1 Entwicklungswerkzeuge Die wichtigste Grundlage bei der Softwareentwicklung unter Android ist das Android SDK. Dieses stellt alle benötigten Bibliotheken zum Zugriff auf die Laufzeitumgebung bereit. Zudem enthält es einen eigenen Emulator für jede Android-Version, Treiber für verschiedene Endgeräte, Beispielanwendungen und vieles mehr. Als Entwicklungsumgebung wurde Eclipse Indigo im Zusammenspiel mit dem Java Development Kit (JDK) in der Version 1.6 Update 33 verwendet. Zudem muss eine Version des ADT Plug-In für Eclipse installiert sein. Mit diesem ist es innerhalb von Eclipse möglich neue Android-Projekte anzulegen, diese zu debuggen, eine Benutzeroberfläche zu erstellen und das fertige Projekt zu exportieren. Eine detaillierte Vorgehensweise zur Installation und Einrichtung der Komponenten und dem Import des Quellcodes findet sich in Anhang A. Als Entwicklungs- und Testgerät wurde ein Motorola Xoom, anfänglich mit der Android-Version 3.2, gegen Ende dieser Diplomarbeit nach einem Update mit der Version verwendet (Technische Daten zu diesem Gerät befinden sich im Anhang A). 2.2 Auswahl der Android-Version Eine wichtige Frage, die man sich vor der Entwicklung einer Applikation (im weiteren App genannt) unter dem Betriebssystem Android stellen muss, ist die Frage, für welches Endgerät entwickelt werden soll. Bis zum 19. Oktober 2011 (Erscheinungsdatum von Android 4.0 Ice Cream Sandwich 10 ) wurde noch zwischen Android-Versionen unterschieden, die entweder nur für Smartphones (2.3.x Gingerbread) oder Tablets (3.x Honeycomb) geeignet waren. Mit der Einführung von Ice Cream Sandwich (die unterschiedlichen Android-Versionen werden immer nach einer Süßspeise benannt) gibt es nun wieder eine Version, 10 Quelle: (Stand: 04.September 2012) 3

13 die nicht zwischen Tablets und Smartphones unterscheidet und für beide Geräte die gleichen Funktionen zur Verfügung stellt. Nun wäre es aber ein Fehler, gleich für die neueste Android-Version zu entwickeln, da diese Applikationen nur auf Geräten funktionieren würden, die auch tatsächlich die neueste Betriebssystemversion installiert haben. In Abbildung 2 ist die Verteilung der weltweit installierten Android-Betriebssysteme dargestellt. Anhand dieser kann nun entschieden werden, womit man womöglich die besten Verkaufszahlen erzielen kann (In der Statistik werden nur Geräte aufgeführt, die sich auf Google Play eingeloggt haben). Abb 2. Überblick der weltweit installierten Android-Betriebssysteme 11 Als Entwicklungsversion wurde Android 3.2 Honeycomb gewählt, da die fertige Applikation vorerst ausschließlich auf Tablet-Computern lauffähig sein soll. Diese ist zwar laut Abbildung 2 nur auf ca. 1,6% aller Geräte installiert, allerdings sind alle Versionen aufwärtskompatibel, was bedeutet, dass die App auch auf allen Geräten der Version 4.x und evtl. Nachfolgenden einsetzbar ist. Eine Neuerung, die mit der Android-Version 4 eingeführt wurde, ist die so genannte Support- Library. Mit dieser ist es möglich, Komponenten, die für eine höhere Android- Version entwickelt wurden, auch auf Geräten mit einer niedrigeren Android- Version auszuführen. Dadurch wird eine gewisse Abwärtskompatibilität erreicht. 11 Quelle: (Stand: 04.September 2012) 4

14 2.3 Android Grundlagen Das Android-Betriebssystem basiert auf einem Linux-Kern. Linux ist ein für mehrere Benutzer ausgelegtes Betriebssystem (Multi-User-Kern). Es ist so konzipiert, dass jeder Benutzer seine Aktionen in einem eigenen Prozess (Thread) ausführt. Dies hat den Vorteil, dass bei einem fehlerhaften Prozess nur dieser neu gestartet werden muss und alle anderen Benutzer ohne Einschränkungen weiter arbeiten können. Android ist zwar kein Multi-User-Betriebssystem, macht sich dieses Konzept aber dennoch zu Nutze, indem jede Applikation einen eigenen Benutzer simuliert und in einem eigenen Linux-Prozess ausgeführt wird. Dadurch wird das Betriebssystem sehr sicher gegenüber Systemabstürzen, da jeweils nur der für den Fehler verantwortliche Prozess beendet werden muss. Android basiert auf einem Vier-Schichtenmodell (siehe Abbildung 3) 12, wobei die Schichten Applications, Application-Framework und die Core-Libraries als Dalvik-Bytecode auf der Dalvik Virtual Machine ausgeführt werden. Der Linux- Kern, die Libraries und die Dalvik Virtual Machine sind dagegen in C/C++ programmiert. Abb 3. Android Schichtenmodell Auf der untersten Schicht dieses Modells ist der Linux-Kern mit allen benötigten Hardwaretreibern angesiedelt. Auf der zweiten Schicht befindet sich neben den 12 Quelle: (Stand 09.September 2012) 5

15 Standard-Bibliotheken die Dalvik Virtual Machine 13. Der erzeugte Bytecode einer Applikation wird nicht von einer Java Virtual Machine (JVM) oder dem Prozessor des Mobiltelefons / Tablets ausgeführt, sondern von der Dalvik Virtual Machine, die für den Linux-Kern wie ein eigenes Programm erscheint. Die dritte Schicht enthält das sogenannte Application-Framework, welches das Programmiergerüst enthält. Auf der obersten Schicht befinden sich die für den Anwender sichtbaren Applikationen Bestandteile einer Applikation Im Grunde kann man eine Android-App in 3 Bestandteile zerlegen. Zum einen gibt es eine Activity, die vereinfacht dargestellt eine Bildschirmseite auf dem Tablet oder Smartphone darstellt (siehe Abbildung 4). Sie ist eine eigene Java-Klasse und steuert u.a. die Funktionen der auf dem Bildschirm dargestellten Elemente, öffnet Netzwerk- und Datenbankverbindungen und startet andere Activitys. Abb 4. Grafische Darstellung 14 unterschiedlicher Activitys Als zweites existieren verschiedenste Ressourcendateien. Diese haben in Android vielseitige Aufgaben. Sie können beispielsweise das Aussehen einer Activity 13 vgl: Künneth, Thomas(2012): Android 4-Apps entwickeln mit dem Android SDK, Bonn 2012, S Quelle: (Stand: 03.September 2012) 6

16 bestimmen, verschiedene Strings an einer zentralen Stelle sammeln (zum leichteren Übersetzen der App in andere Sprachen) oder Animationen festlegen. Als letzten Bestandteil gibt es das so genannte Manifest. Dies ist eine besondere Ressourcendatei, die wichtige Informationen zum Programm enthält. Dort werden alle Activitys aufgelistet, der Einstiegspunkt beim Starten der App festgelegt, Hintergrundservices und Content-Provider deklariert oder Intent-Filter vergeben. Letztere bestimmen, ob Funktionen des Programms auch anderen Anwendungen zur Verfügung stehen sollen. Beispielsweise kann die geräteinterne Kamera- Activity von jeder anderen Anwendung gestartet werden. Zusätzlich müssen innerhalb der Manifest-Datei alle von der Applikation verwendeten Betriebssystem- und Laufzeitkomponenten über sogenannte Permissions (Berechtigungen) angegeben werden. Diese Berechtigungen werden bei der Veröffentlichung der Applikation in Google Play angezeigt und müssen vor der Installation auf einem Endgerät durch den Benutzer bestätigt werden. Dabei ist es nicht möglich nur einzelne Berechtigungen zu akzeptieren und andere nicht. Das Konzept der Berechtigungen bietet dem Benutzer der Applikation eine gewisse Sicherheit vor schadhafter Software bzw. Spionagesoftware. Möchte beispielsweise eine Applikation zum Bearbeiten von Bildern eine Berechtigung für die Benutzung des Mikrofons oder zum Auslesen des Telefonbuchs, so ist dies kritisch zu hinterfragen. Da die Grundlagen der Android-Softwareentwicklung ein sehr umfangreiches Themengebiet sind, befindet sich im Anhang A eine einführende Beschreibung dieser Thematik. Diese umfasst den Aufbau der Projektstruktur, die Grundlagen der Layout-Ressourcen und eine Beschreibung der Klassen Activity und Fragment. 7

17 3 Vorstellung der Applikation Zum besseren Verständnis der nachfolgenden Kapitel werden in diesem Abschnitt die einzelnen Komponenten der Applikation aufgezeigt und deren Zusammenspiel untereinander erläutert. 3.1 Der Kreislauf der Activities Die in der Diplomarbeit zu entwickelnde Applikation besteht aus insgesamt sechs unterschiedlichen Activitys. Der Ablaufplan mit den jeweiligen Übergängen und Zuständen der Activitys ist in Abbildung 5 dargestellt. Abb 5. Übergänge und Zustände der Activitys 8

18 In Abbildung 6 ist eine Übersicht des Applikationsaufbaus mit dem Zusammenspiel der Komponenten aus dem Android-Framework dargestellt. Abb 6. Applikationsaufbau Im folgenden Abschnitt wird die Benutzeroberfläche im Hinblick auf die entwickelten Activitys vorgestellt (aus Sicht des Benutzers). In Kapitel 4 hingegen steht der softwaretechnische Aspekt bei der Entwicklung der Benutzeroberfläche im Vordergrund. 9

19 3.2 Start-Activity Abb 7. Start-Activity In Abbildung 7 ist die Start-Activity dargestellt, die sich zum Applikationsstart öffnet. Auf der Action Bar, die sich am oberen Bildschirmrand befindet, sind insgesamt fünf Elemente vorhanden. In dem orange umrandeten Bereich befindet sich das Applikations-Logo mit zugehöriger Überschrift. Dieses ist innerhalb der Start-Activity nicht anklickbar und erfüllt an dieser Stelle keine weitere Funktion. Rechts neben der Überschrift befindet sich in dem lila umrandeten Feld eine Funktionsleiste mit insgesamt drei Tabs. Diese erfüllen zu diesem Zeitpunkt noch keine wichtigen Funktionen. Mit einem Klick auf den Reiter UpToNet Online wird das Fragment, in dem sich die letzten Kontakte befinden, durch eine Web- View ausgetauscht und die Homepage der Prisma GmbH geöffnet. An dieser Stelle soll in Zukunft das UpToNet in einer Online-Version erscheinen und von hier aus bedient werden können. Nach Auswahl des Reiters Kalender wird der Standard-Kalender geöffnet, der z. Z. nur als Platzhalter dient. In einer eventuellen 10

20 Weiterentwicklung soll es möglich sein, Termine aus dem UpToNet synchronisieren, die an dieser Stelle dargestellt werden sollen. zu In dem dunkelblauen Bereich ist eine Suchleiste implementiert, mit der es möglich ist, innerhalb der Firmenliste nach einer bestimmten Firma zu suchen. Die Suche ist so realisiert, dass nach jedem neu eingegebenen bzw. gelöschten Zeichen eine neue Suche beginnt. Die Groß- und Kleinschreibung wird hierbei ignoriert. Zudem ist es möglich, nur nach bestimmten Teilen eines Wortes zu suchen. Wird die Firmenliste mit Hilfe der Suche auf weniger als 10 Einträge reduziert, startet in der Kontakthistorien-Liste (grün umrandet) ebenfalls eine Datenbankabfrage, nach der nur noch Kontakte aufgelistet werden, die den gefilterten Firmen zugehörig sind. Bei einem Klick auf das grau umrandete Icon wird eine Activity zum Anlegen von neuen Kontakten gestartet (siehe Abbildung 11). Das letzte Element auf der Action Bar ist das türkis umrandete Icon zum Öffnen der Einstellungen-Activity (siehe Abbildung 12). Durch die Auswahl einer Firma in der Firmenliste (rot umrandeter Bereich) gelangt man in die Kundenakten-Activity (siehe Abbildung 9). Auf der rechten Seite des Bildschirms befindet sich die Kontakthistorie (grün umrandeter Bereich). Hier werden alle Kontakte die auf dem Gerät vorhanden sind nach Datum sortiert angezeigt. Innerhalb einer Zeile der Kontakthistorie werden folgende Informationen dargestellt: Abb 8. Eine Zeile der Kontaktansicht Liste Durch einen Klick auf einen Kontakt öffnet sich die Kontakthistorie-Activity (siehe Abbildung 10). 11

21 3.3 Activity: Kundenakten Abb 9. Kundenakten-Activity In Abbildung 9 ist die Kundenakten-Activity dargestellt. Zu dieser gelangt man, nachdem in der Start-Activity eine bestimmte Firma ausgewählt wurde. Auf der Action Bar befindet sich von links aus gesehen als erstes Element das App-Logo. Dieses ist anklickbar und erfüllt die gleiche Funktion wie der Zurück- Button des Tablets. Rechts neben dem App-Logo befindet sich die Überschrift der Activity (dunkelblau umrandet). Diese zeigt die momentan geöffnete Firma an. Innerhalb des gelb markierten Bereichs sind zwei Tabs vorhanden. Mit diesen wird zwischen den Kontakten und den zugehörigen Anhängen gewechselt. Dazu wird das Fenster, in dem alle Kontakte angezeigt werden, nach rechts aus dem sichtbaren Bereich geschoben und durch ein neues Fenster, welches die Anhänge anzeigt, ersetzt. Im rechten Bereich der Action Bar befindet sich ein Suchfeld (schwarz umrandet), mit dem innerhalb der Kontaktansicht nach einem bestimmten Datum, Betreff oder Mitarbeiter gesucht werden kann. 12

22 Das letzte Element ist ein anklickbares Icon (hellblau umrandet), mit dem neue Kontakte angelegt werden können (siehe Abbildung 11) Unterhalb der Action Bar befinden sich drei unterschiedliche Bereiche. In dem lila umrandeten Feld ist eine Ansprechpartnerübersicht dargestellt. Dies ist eine Liste mit allen Ansprechpartnern einer bestimmten Firma. Dabei wird die Firma selbst ebenfalls als Ansprechpartner angezeigt und befindet sich immer an erster Stelle der Liste. In dem rot umrandeten Bereich befinden sich Details zu dem gewählten Ansprechpartner. Hier werden alle Zusatzinformationen wie Name, Adresse, Telefonnummer, und Webadresse dargestellt. Bei einem Klick auf einen als Link markierten Eintrag wird eine zu diesen Daten passende Applikation gestartet. Wurde beispielsweise die Adresse ausgewählt, wird eine Anwendung gestartet, mit der es möglich ist s zu versenden (wenn eine solche Anwendung auf dem Gerät installiert ist). Bei Auswahl der Adresse wird diese in Google Maps angezeigt. Eine Webadresse wird mit dem Standard-Browser des Tablets geöffnet. Auf der rechten Seite des Bildschirms (innerhalb des hellgrün umrandeten Bereichs) befindet sich die Kontaktansicht. Hier werden alle Kontakte eines Ansprechpartners aufgelistet. Ist die Firma in der Ansprechpartnerübersicht ausgewählt, werden von allen Ansprechpartnern dieser Firma die Kontakte angezeigt. Nachdem ein bestimmter Kontakt ausgewählt wurde, öffnet sich die Kontakthistorie-Activity, in der weitere Details eines Kontaktes angezeigt werden (siehe Abbildung 10). Mit einem langen Klick auf einen Kontakt öffnet sich ein Kontextmenü, in dem man die Möglichkeit hat einen Kontakt zu löschen und zu bearbeiten. Hinweis: Das Löschen ist aus Sicherheitsgründen nur bei Kontakten möglich, die innerhalb der App erzeugt und noch nicht synchronisiert wurden. 13

23 3.4 Activity: Kontakthistorie Abb 10. Kontakthistorie-Activity Die in Abbildung 10 dargestellte Kontakthistorie-Activity ist der Kundenakten- Activity aus Abbildung 9 sehr ähnlich. Die Action Bar ist in beiden Activitys identisch und besitzt die gleichen Elemente und Funktionen. Das Fragment Kontaktansicht (hellblau umrandet) ist das Gleiche wie in der Kundenakte, besitzt lediglich eine andere Layout-Ressource und damit ein anderes Aussehen. In dem schwarz umrandeten Bereich befinden sich Details zu dem in der Kontaktansicht gewählten Kontakt. Hier werden die Felder Kontaktart, Kontaktrichtung, Anlage durch, Anlagedatum, Ansprechpartner, Mitarbeiter und Betreff des Kontaktes dargestellt. Unterhalb der Kontaktdetails befindet sich eine zoombare Web-View (ähnlich einem Browserfenster), in dem die Notizen zu einem Kontakt angezeigt werden. An dieser Stelle können keine Informationen geändert oder ergänzt werden. Dies ist ebenfalls nur über einen langen Klick in der Kontaktansicht und anschließender Auswahl der Aktion im sich öffnenden Kontextmenü möglich. 14

24 3.5 Activity: Neuer Kontakt Abb 11. Neuer Kontakt-Activity In Abbildung 11 ist der Dialog zum Anlegen und Bearbeiten von Kontakten dargestellt. Im linken Bereich der Action Bar sind das Applikationslogo und eine Überschrift vorhanden. Mit einem Klick auf das Logo und anschließendem Bestätigen einer Sicherheitsabfrage kann die Activity verlassen werden. Im rechten Bereich der Action Bar hat man die Möglichkeit die Aktion abzubrechen oder den Kontakt zu speichern, woraufhin dieser in die Datenbank geschrieben wird. Das letzte Element ist ein anklickbares Icon, mit dem Anhänge zu dem jeweiligen Kontakt erstellt werden können. Mit einem Klick auf dieses Icon wird die Android-eigene Kameraanwendung gestartet, mit der Bilder aufgenommen werden können. Die Idee dahinter ist, wichtige Dokumente oder Visitenkarten zu scannen und mit einem Kontakt zu verknüpfen. Alle gescannten Dokumente werden in dem Feld Anhänge (grün umrandet) angezeigt. Hier hat man die Möglichkeit durch einen langen Klick ein Kontextmenü zu öffnen, mit dem die Anhänge umbenannt oder gelöscht werden können. In dem rot markierten Bereich können alle wichtigen Angaben zu einem Kontakt gemacht werden. Die Elemente Firma, Ansprechpartner, Mitarbeiter, Kontaktart und Kontaktrichtung sind als Spinner (Drop-Down-Choice) realisiert. Je nach ausgewählter Firma ändern sich die in dem Spinner Ansprechpartner angezeigten Einträge. Bei den Feldern Betreff und Notizen handelt es sich um mehrzeilige Eingabefelder, die ihre Größe an den eingegebenen Text anpassen. 15

25 3.6 Activity: Einstellungen Abb 12. Einstellungen-Activity In Abbildung 12 ist das Einstellungsmenü der Applikation dargestellt. Hier hat man die Möglichkeit die Download-URL und die Site-ID zu ändern. Die Download-URL ist eine Webadresse, mit der die UpToNet-Cloud adressiert wird. Bei der Site-ID handelt es sich um eine vierstellige Zahl, mit der man eine Datenbank kennzeichnet. Die Idee dahinter ist, dass alle Daten aus dem UpToNet und den mobilen Geräten an einer zentralen Stelle innerhalb der Cloud gesammelt werden. Dabei kennzeichnet jede Datenbank seine exportierten Daten durch die eigene Site-ID. Bei der Synchronisation wird nun das Cloud-Verzeichnis untersucht, in dem sich alle Dateien befinden. Im Anschluss werden nur diejenigen Daten heruntergeladen und importiert, die nicht die eigene Site-ID besitzen und nach dem letzten Synchronisationszeitpunkt erstellt wurden. 16

26 4 Die Benutzeroberfläche softwaretechnische Aspekte Das Ziel bei der Entwicklung der grafischen Benutzeroberfläche war es, eine möglichst übersichtliche, aber dennoch informative Darstellung zu erreichen. Dazu stellt Android einige Hilfsmittel bereit, die im Folgenden näher beschrieben werden. Dabei werden die softwaretechnischen Aspekte einer Layout-Ressource, das Prinzip der Action Bar sowie die Implementierung eines ListFragments mit anschließender Reaktion auf eine Benutzereingabe erläutert. 4.1 Das Layout der Activities Das Layout der Activities wurde mit Hilfe von Frame-Layouts und Fragmenten aufgebaut (Eine nähere Beschreibung zu Fragmenten befindet sich im Anhang A). Ein Framelayout ist einfach ausgedrückt ein Container, in den verschiedene Elemente wie z. B. eine Draw-View oder ein List-Fragment eingesetzt werden können. Ein Fragment ist eine eigene Java-Klasse, die genau wie eine Activity ein eigenes Layout besitzt. Die Verwendung solcher Komponenten hat den Vorteil, dass sich diese während der Laufzeit leicht gegen andere Elemente austauschen lassen. Zudem ist es dadurch möglich, mit geringem Mehraufwand, die App auch auf Smartphones einzusetzen. Dies wurde im Rahmen dieser Diplomarbeit allerdings nicht realisiert. Da es sich hierbei um eine App für Tablet-Computer handelt, steht dementsprechend viel Platz zum Anzeigen von Informationen zur Verfügung. Dadurch bietet es sich an, eine zweigeteilte Ansicht zu verwenden. Hierbei besteht die Möglichkeit, beispielsweise auf der linken Seite des Bildschirms, eine Liste mit Auswahlmöglichkeiten und auf der rechten Seite die zugehörigen Details darzustellen (siehe Abbildung 13). Abb 13. Tablet mit zweigeteilter Ansicht 17

27 Auf einem kleinerem Bildschirm (Smartphone) müsste zum Anzeigen der gleichen Informationen wie auf einem Tablet eine weitere Activity verwendet werden. Diese würde beispielsweise nur die Details einer zuvor getroffenen Auswahl anzeigen (siehe Abbildung 14). Abb 14. Smartphone mit zwei Activitys zum Anzeigen der gleichen Informationen wie auf einem Tablet Listing 1 zeigt das Layout einer zweigeteilten Ansicht auf einem Android-Tablet in XML-Schreibweise. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:baselinealigned="false" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <FrameLayout android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" > </FrameLayout> <FrameLayout android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" > </FrameLayout> </LinearLayout> Listing 1: Layout-Ressource der Start-Activity 18

28 Durch die beiden Frame-Layouts innerhalb des Linear-Layouts wird die Benutzeroberfläche geteilt. Das Attribut android:layout_weight="1" gibt an, in welchem Größenverhältnis die Elemente zueinander stehen. In diesem Beispiel hat das erste Frame-Layout Element eine layout_weight von 1 und das zweite Element eine layout_weight von 2. Somit ist das zweite Element doppelt so groß wie das erste (siehe Abbildung 15). Abb 15. Grafische Ansicht des Layouts aus Listing 1 Die App wäre zu diesem Zeitpunkt schon fehlerfrei kompilier- und ausführbar, allerdings hätte sie keinerlei Funktion. Die Activity hat nun die Aufgabe die leeren Frame-Layouts mit Daten zu füllen (siehe Kapitel 4.3). 4.2 Die Action Bar Android stellt zur übersichtlichen Navigation innerhalb einer App eine Windows ähnliche Navigationsleiste zur Verfügung. Diese ist permanent am oberen Bildschirmrand sichtbar und kann unterschiedliche Elemente enthalten, mit denen der Benutzer interagieren kann. So kann sie z.b. über eine Tab-Navigation, einen Zurück-Button, eine Suchleiste und verschiedenste Icons verfügen. Abb 16. Action Bar 19

29 Wie in Abbildung 16 zu sehen ist, unterteilt sich die Action Bar in unterschiedliche Bereiche: Applikations-Icon, das gleichzeitig als Zurück-Button fungiert Überschrift der Activity Tab-Navigation Suchfeld Icon zum Anlegen von Kontakten Implementierung der Action Bar Jede Activity besitzt bereits eine verwendbare Action Bar. Dazu benötigt man eine Objektinstanz der Klasse ActionBar, die man sich durch den Funktionsaufruf in Listing 2 übergeben lassen kann. ActionBar actionbar = getactionbar(); Listing 2: Erzeugen eines ActionBar Objektes Nun können mit Hilfe des Objektes actionbar der Navigationsleiste weitere Elemente hinzugefügt werden (siehe Listing 3). actionbar.setnavigationmode(actionbar.navigation_mode_tabs); //Tab-Navigation actionbar.settitle(firmenname); //Überschrift setzen actionbar.setdisplayhomeasupenabled(true); //Beim Klick auf das App-Icon zur vorherigen Activity wechseln //Tabs erzeugen ActionBar.Tab tabkontakte = actionbar.newtab(). settext(getresources().getstring(r.string.kontakte)).seticon(r.drawable.kontakt_label); ActionBar.Tab tabdokumente = actionbar.newtab().settext(getresources(). getstring(r.string.dokument)).seticon(r.drawable.anhang_label); //Der ActionBar die Tabs hinzufügen actionbar.addtab(tabkontakte); actionbar.addtab(tabdokumente); Listing 3: Der Action Bar Elemente hinzufügen In Listing 3 wird der Action Bar eine Überschrift, zwei Tabs und ein Zurück- Button hinzugefügt. An dieser Stelle wäre beim Ausführen der Applikation die Action Bar bereits sichtbar, allerdings würde hinter den einzelnen Elementen keinerlei Funktion stecken. Eine detaillierte Beschreibung zum Reagieren auf Benutzereingaben findet sich in Kapitel

30 4.2.2 Options Menü Seit Android-Version 3 ist es zusätzlich möglich, der Action Bar ein Optionsmenü anzuhängen. Dieses war zuvor meist nur über einen eigens für diesen Zweck enthaltenen Menü-Button zu erreichen 15. Jede Activity besitzt die überschreibbare Methode oncreateoptionsmenu(menu menu), in der das Optionsmenü zu implementieren ist. Dies ist auf zwei unterschiedliche Arten realisierbar. Zum einen ist es möglich eine Ressourcendatei (ähnlich einem Layout) anzulegen (siehe Listing 4). <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:showasaction="always withtext"> </item> <item android:showasaction="always withtext"> </item> <item android:showasaction="always"> </item> </menu> Listing 4: Beispiel einer in XML realisierten Action Bar Diese ist nun innerhalb der Methode oncreateoptionsmenu(menu menu) mit Hilfe des MenuInflaters (frei übersetzt: Menüaufbläser) einzubinden (siehe Listing public boolean oncreateoptionsmenu(menu menu) { this.getmenuinflater().inflate(r.menu.neuenkontaktoptionsmenue, menu); } return super.oncreateoptionsmenu(menu); Listing 5: Die Menü Ressource in die Action Bar einbinden Eine andere Möglichkeit das Options Menü ohne Hilfe von Ressourcendateien direkt in der Methode oncreateoptionsmenu(menu menu) zu beschreiben, ist in Listing 6 dargestellt. 15 Quelle: (Stand 08. September 2012) 21

31 @Override public boolean oncreateoptionsmenu(menu menu) { MenuItem itemspeichern = menu.add("speichern"); MenuItem itemabbrechen = menu.add("abbrechen"); MenuItem itemcaptureimage = menu.add("bild aufnehmen"); itemspeichern.seticon(r.drawable.ok); itemspeichern.setshowasaction(menuitem.show_as_action_with_text); itemabbrechen.seticon(r.drawable.abbrechen); itemabbrechen.setshowasaction(menuitem.show_as_action_with_text); itemcaptureimage.seticon(r.drawable.camera); itemcaptureimage.setshowasaction(menuitem.show_as_action_with_text); } return super.oncreateoptionsmenu(menu); Listing 6: Options Menü ohne Ressourcendatei erstellen Die grafische Darstellung der Option-Buttons auf der Action Bar ist in Abbildung 17 dargestellt. Abb 17. Grafische Darstellung der Option-Buttons 22

32 4.3 Die Activity mit Daten füllen Wie in Kapitel 4.1 beschrieben, besteht die Activity aus mehreren Frame-Layouts. Um diese nun mit Hilfe von Fragmenten zu füllen, benötigt man zunächst eine Klasse, die von Fragment bzw. ListFragment erbt Die Klasse ListFragment Als Beispiel wird die Klasse ListFragmentAnsprechpartner.java näher betrachtet. Sie hat die Aufgabe alle Ansprechpartner einer Firma aus der geräteinternen Telefonbuch-Datenbank zu laden und diese mit Name und Bild anzuzeigen (siehe Abbildung 18). Abb 18. ListFragment mit individuellem Layout Diese Klasse erbt von der aus dem Android-Framework stammenden Klasse ListFragment und ist dadurch in der Lage Inhalte in Form einer Liste darzustellen. Zudem implementiert sie bereits Methoden, mit deren Hilfe auf Benutzereingaben reagiert werden kann. Die Klasse ListFragmentAnsprechpartner.java lädt eigenständig Daten aus einer Datenbank und zeigt diese in Listenform an. Wird nun ein Eintrag durch den Benutzer selektiert, informiert dieses Fragment mit Hilfe eines Listeners die Activity, dass ein Eintrag ausgewählt wurde (eine Erläuterung des Begriffs Listener findet sich in Kapitel 4.4.1). Diese kann nun auf die Eingabe reagieren. Somit besitzt das Fragment einzig die Aufgabe Daten zu laden, diese anzuzeigen und eine andere Klasse über Benutzereingaben zu informieren. Ein solches Konzept hat den großen Vorteil, dass dadurch das Fragment abgekapselt wird und an 23

33 anderen Stellen im Programm wiederverwendet werden kann Implementierung der Klasse ListFragmentAnsprechpartner Zunächst wird ein Objekt der Klasse ListFragmentAnsprechpartner erzeugt. private ListFragmentAnsprechpartner listfragmentansprechpartner = new ListFragmentAnsprechpartner(this, firma_uid); Listing 7: Anlegen eines Objektes der Klasse ListFragmentAnsprechpartner Als Übergabeparameter werden der Context der Activity und die Unique-Id der Firma übergeben. Der Context ist ein Interface, mit dem man Zugriff auf androidspezifische Ressourcen und Klassen hat. Beispielsweise kann man mit dem Context auf Datenbanken oder String-Ressourcen zugreifen. Eine Erläuterung zu dem Begriff Unique-Id findet sich im Anhang A. An dieser Stelle ist es wichtig zu erwähnen, dass mit dem Erstellen des Objektes aus Listing 5 das Fragment noch nicht in der Activity gezeichnet wird. Es wird lediglich der Konstruktor aufgerufen und Speicherplatz für dieses Objekt reserviert. Android entscheidet eigenständig darüber, wann ein Fragment gezeichnet wird, bzw. wann die Methode oncreateview( ) der Fragment-Klasse aufgerufen wird. Android bietet die Möglichkeit, unterschiedliche Methoden, wie z.b. oncreateview( ), onactivitycreated( ), onpause( ), onresume( ), etc. zu überschreiben. Dadurch ist man in der Lage, in unterschiedliche Lebenszyklen eines Fragments oder einer Activity einzugreifen. Beispielsweise wird die Methode onpause( ) immer dann aufgerufen, wenn eine Activity in den Hintergrund gelangt, bzw. nicht mehr sichtbar ist, weil sie geschlossen oder eine andere Activity geöffnet wurde. Somit ist dies die richtige Stelle, an der man Daten speichern sollte, um die Activity wiederherstellen zu können, nachdem diese gegebenenfalls aus dem Speicher bereinigt wurde. Die Wiederherstellung der Daten sollte in der Methode onresume( ) erfolgen. Diese wird immer dann aufgerufen, wenn die Activity wieder sichtbar wird. Näheres über den Lebenszyklus einer Activity findet sich im Anhang A. In Listing 6 wird das Überschreiben der Methode oncreateview( ) dargestellt. Diese Methode wird aufgerufen, wenn Android bereit ist das ListFragment-Objekt zu erzeugen. 24

34 private List<AnsprechpartnerInformationen> public View oncreateview(layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) { //Kontakte laden kundeninfoliste = ladeansprechpartneraustelefonbuch(firma_uid); } //Eigenen Adapter erzeugen, um Firmenmitarbeiter mit Bild und Name anzuzeigen AdapterAnzeigeBildUndName adapter = new AdapterAnzeigeBildUndName(context, kundeninfoliste); //FragmentListe Adapter setzen this.setlistadapter(adapter); return super.oncreateview(inflater, container, savedinstancestate); Listing 8: Die Methode oncreateview( ) überschreiben Mit der Methode ladeansprechpartneraustelefonbuch(firma_uid) werden alle Ansprechpartner, die zu einer bestimmten Firma gehören aus der Android eigenen Telefonbuch-Datenbank ausgelesen und in die ArrayList kundeninfoliste geschrieben (eine nähere Beschreibung zum Auslesen von Daten aus einer Datenbank findet sich in Kapitel 6). Diese ArrayList kann Objekte vom Typ AnsprechpartnerInformationen aufnehmen. Es handelt sich hierbei um eine Klasse, deren einzige Aufgabe darin besteht, gewisse Kundeninformationen (Name, E- Mail, Adresse, Webseite etc.) aufzunehmen und diese mit Hilfe von Getter- und Setter Methoden verfügbar zu machen. Zum Anzeigen der geladenen Daten wird ein so genannter Adapter benötigt. Ein Adapter ist eine Klasse, die von der Android-Klasse BaseAdapter erbt und verschiedene Methoden implementiert, mit deren Hilfe Daten auf dem Bildschirm angezeigt werden können. Das Konzept hinter Adaptern ist, dass sie unterschiedlichste Daten verwalten und anzeigen können, dabei aber immer die gleiche Schnittstelle verwenden. Android stellt bereits verschiedene Adapter zur Verfügung (ArrayAdapter, CursorAdapter etc.). Dabei wird das Architekturmuster des Model View Controllers verfolgt, mit dem es möglich ist eine hohe Wiederverwendbarkeit der einzelnen Komponenten zu erreichen 16 (siehe Abbildung 19). 16 Nähere Informationen zu dem Konzept des Model View Controllers findet sich unter: (Stand 15.September 2012) 25

35 Abb 19. Konzept des Model-View-Controllers Um individuelle Daten, wie in diesem Fall ein Bild mit zugehörigem Namen anzuzeigen, muss ein eigener Adapter implementiert werden (siehe Listing 9). Vorteil eines eigens erstellten Adapters ist, dass man völlig freie Hand hat, in welcher Art und Weise man die Daten darstellen möchte. Hierzu wird eine Layout- Ressource angefertigt (gleiche Vorgehensweise wie bei einer Activity), die das Aussehen jeder einzelnen Zeile der Liste bestimmt. 26

36 public class AdapterAnzeigeBildUndName extends BaseAdapter { private Context context; private List<AnsprechpartnerInformationen> kundeninfoliste; } public AdapterAnzeigeBildUndName(Context context, List<AnsprechpartnerInformationen> kundeninfoliste) { //Konstruktor this.context = context; this.kundeninfoliste = kundeninfoliste; //An den Adapter übergebene //Daten, die angezeigt werden sollen } public int getcount()//gibt die Anzahl der Listenelemente zurück { if(kundeninfoliste!= null) return kundeninfoliste.size(); return 0; } public Object getitem(int position)//gibt ein Element in der Liste zurück { if(kundeninfoliste!= null) return kundeninfoliste.get(position); return null; } public long getitemid(int position)//gibt die Item-Position innerhalb der //Liste zurück { return position; } public View getview(int position, View convertview, ViewGroup parent) { View result = convertview; //Bereits vorhandene Elemente werden //recycelt if(result == null) { //Elemente können nicht recycelt werden und müssen aus diesem //Grund neu gezeichnet werden //LayoutInflater Objekt erzeugen LayoutInflater inflater = (LayoutInflater) context. getsystemservice(context.layout_inflater_service); //Layout aufpumpen result = inflater.inflate(r.layout.layout_anzeige_bildundname, null); } TextView tvanzeigename = (TextView)result.findViewById(R.id.TextViewAnzeigenameVorschau); ImageView imageviewicon = (ImageView)result. findviewbyid(r.id.imageviewfotothumbnail); if(kundeninfoliste!= null) { //Name und Foto setzen tvanzeigename.settext(kundeninfoliste.get(position).getanzeigename()); imageviewicon.setimagebitmap(kundeninfoliste. get(position).getfoto()); } return result; } Listing 9: Adapter zum Anzeigen von individuellen Daten 27

37 Die fertige Adapter-Klasse muss nun instanziiert werden (siehe Listing 10). AdapterAnzeigeBildUndName adapter = new AdapterAnzeigeBildUndName(context, kundeninfoliste); Listing 10: Ein Objekt vom Typ AdapterAnzeigeBildUndName erzeugen Damit das ListFragment weiß, welcher Adapter zum Anzeigen der Daten verwendet werden soll, muss mit this.setlistadapter(adapter); der zuvor erzeugte Adapter gesetzt werden. 4.4 Reagieren auf Benutzereingaben Das Prinzip der Listener Hinter dem Prinzip der Listener verbirgt sich ein sehr mächtiger Mechanismus, nämlich der des Interfaces. Ein Interface enthält, ähnlich einer normalen Java- Klasse, eine oder mehrere Methoden, die zwar deklariert werden, aber noch keinerlei Funktion besitzen (siehe Listing 11). Es wird lediglich festgelegt, dass es diese Methode(n) gibt, die Implementierung selbst muss aber von einer anderen Klasse übernommen werden. public interface ListenerOnAnsprechpartnerSelected { public abstract void onansprechpartnerclicked(string ansprechpartner_uid); } Listing 11: Beispiel eines Java Interface mit einer Methode Mit Hilfe dieses Mechanismus ist es möglich eine Klasse bei einer anderen Klasse als Listener zu registrieren um beim Auftreten von bestimmten Ereignissen (beispielsweise wenn ein Button gedrückt wurde) benachrichtigt zu werden Listener registrieren Viele Android-Klassen nutzen dieses Prinzip, indem sie eine public Methode zur Verfügung stellen, die es erlaubt, sich als so genannter Listener zu registrieren. Als Beispiel werden die Tabs in der Action Bar betrachtet. Mit tabkontakte.settablistener(this); registriert man sich bei dem Objekt tabkontakte der Klasse Tab als Listener. Mit this als Übergabeparameter wird festgelegt, dass man selbst (die Klasse in der der Listener registriert wird) das Interface 28

38 implementieren möchte. Im Falle des Tab-Listeners besitzt das Interface drei Methoden, die nun auszuformulieren sind (siehe Listing 12). public void ontabreselected(tab tab, FragmentTransaction ft) { //Wird aufgerufen, nachdem ein Tab erneut ausgewählt wurde } public void ontabselected(tab tab, FragmentTransaction fmt) { //Wird aufgerufen, nachdem ein Tab selektiert wurde } public void ontabunselected(tab tab, FragmentTransaction ft) { //Wird aufgerufen, nachdem ein Tab deselektiert wurde } Listing 12: Methoden des Interface TabListener Wenn der Benutzer nun einen Tab auswählt, reagiert die Klasse Tab auf dieses Ereignis und ruft die passende Methode des Interface auf. Nun wird bei allen Klassen die als Listener registriert sind diese Methode aufgerufen, in der nun auf die Tab-Selektion reagiert werden kann. Weitere Klassen, bei denen es möglich ist sich als Listener zu registrieren, sind beispielsweise die Android-Klassen Button und SearchView. Die Vorgehensweise ist im Grunde immer gleich. Man registriert eine Klasse als Listener, implementiert dessen Interface, übernimmt alle zu implementierenden Methoden in seine Klasse und formuliert diese aus. Bei manchen Klassen ist es nicht notwendig sich als Listener zu registrieren. Wenn man z.b. eine Klasse von ListFragment ableitet, ist die Vorgehensweise ein wenig anders. Diese Klasse besitzt bereits eine Methode public void onlistitemclick( ), die überschrieben werden kann. Man muss sich also in diesem Fall nicht als Listener registrieren und ein Interface implementieren, sondern kann direkt in dieser Methode auf eine Benutzereingabe reagieren. Es besteht natürlich auch die Möglichkeit ein eigenes Interface zu erstellen und zu implementieren. Dies wurde in diesem Projekt in allen ListFragment-Klassen eingesetzt, um mit Hilfe eines Listeners die Activity zu benachrichtigen, dass ein Eintrag durch den Benutzer ausgewählt wurde. Diese Vorgehensweise ist nötig, damit nur die Activity die Steuerung der einzelnen Fragmente übernimmt und 29

39 diese sich nicht gegenseitig steuern. Dies stellt die Wiederverwendbarkeit der Fragmente sicher (siehe Abbildung 20). Abb 20. Steuerung der einzelnen Elemente durch die Activity Reagieren auf Benutzereingaben der Action Bar In manchen Fällen ist es nicht nötig einem Element einen Listener zu setzen, da die benötigten Funktionen bereits durch das Android-Framework implementiert sind. Dies ist z.b. bei Menü- und Option-Items auf der Action Bar der Fall. Um auf Benutzereingaben dieser Elemente zu reagieren, besitzt die Activity bereits zwei überschreibbare Methoden, public boolean onoptionsitemselected(menuitem item) und public boolean onmenuitemselected(int featureid, MenuItem item). Diese werden, je nachdem ob es sich um ein Menü- oder um ein Option-Item handelt, nach einer Benutzereingabe aufgerufen. Um z.b. auf einen Klick auf das Icon der Applikation zu reagieren, muss auf dessen Item-Id abgefragt werden (siehe Listing 13). Die Vorgehensweise für Option-Items ist analog und wird deshalb nicht näher betrachtet. 30

40 @Override public boolean onmenuitemselected(int featureid, MenuItem item) { //Wurde das Icon der Applikation in der Action Bar gedrückt, wird die Activity beendet if(item.getitemid() == android.r.id.home) finish(); //Die Activity beim Schließen animieren overridependingtransition(r.animator.activity_enter_animation_right_to_left, R.animator.activity_exit_animation_right_to_left); } return super.onmenuitemselected(featureid, item); Listing 13: Reagieren auf eine Menüauswahl 31

41 5 Synchronisation der Daten Ein wichtiger Bestandteil dieser Diplomarbeit ist die Synchronisation von Daten zwischen dem UpToNet und mobilen Endgeräten. Diese läuft über einen Cloudähnlichen Dienst ab, bei dem die zu synchronisierenden Daten an einer zentralen Stelle gesammelt werden und von dort aus abrufbar sind. Abb 21. UpToNet Cloud Modell Datensätze, die aus dem UpToNet synchronisiert werden sollen, müssen zuvor explizit ausgewählt und exportiert werden. Dies hat den Vorteil, dass nur wichtige Informationen auf dem Endgerät vorhanden sind und zudem kein unnötiger Datentransfer in der Cloud entsteht. Das Synchronisieren von Daten, die sich auf den mobilen Geräten befinden, muss ebenfalls manuell gestartet werden. Dadurch kann der Zeitpunkt des Synchronisierens durch den Benutzer festgelegt werden. Dieser hat somit die Möglichkeit den Synchronisationsvorgang nur dann zu starten, wenn eine schnelle und geeignete Internetverbindung zur Verfügung steht. 5.1 Synchronisation mit Hilfe von Online-Konten Unter Android ist es möglich, in manchen Fällen sogar zwingend erforderlich, ein Online-Konto anzulegen und zu verwalten. Beispielsweise wird zum Herunterladen von Apps aus dem Android Market ein Google-Konto benötigt. Mit Hilfe dieser Konten können zudem beliebige Daten synchronisiert werden. Um dieses Prinzip nutzen zu können, muss ein eigenes Konto erstellt werden, über das die gesamte 32

42 Synchronisation abgearbeitet wird. Alle Online-Konten werden in den Einstellungen des Android-Betriebssystems verwaltet (siehe Abbildung 22). Abb 22. Kontenverwaltung Von hier aus ist es nun möglich, die Synchronisation zu starten (siehe Abbildung 23). Abb 23. Starten der Synchronisation Jedes Konto benötigt zur Anmeldung am entsprechenden Onlineserver eine 33

43 Authentifizierung mittels Benutzername und Passwort. Für die Durchführung der Synchronisation muss eine neue Klasse erstellt werden, die von AbstractThreadedSyncAdapter erbt und die Methode public void onperformsync( ) überschreibt und implementiert. In dieser Methode können nun alle benötigten Daten mit dem Cloud-Server ausgetauscht werden. Durch die Synchronisation mit Hilfe eines Kontos wird der Synchronisationsvorgang in einem eigenen Thread gestartet. Dadurch können Netzwerk- und Datenbankzugriffe ausgeführt werden, ohne das Betriebssystem zu blockieren. Der Ablauf der Synchronisierung in der Methode public void onperformsync( ) wird im folgenden Kapitel erläutert. 5.2 Ablauf der Synchronisation In Abbildung 24 ist der Ablaufplan der Synchronisation dargestellt. An dieser Stelle ist zu erwähnen, dass Daten, die während der Benutzung der App gelöscht werden, noch nicht endgültig aus der Datenbank entfernt werden. Es wird lediglich ein Delete-Flag gesetzt. Das endgültige Entfernen der Daten aus der Datenbank erfolgt erst während des Synchronisationsvorganges. Dies dient der Vorbereitung zur Synchronisation von gelöschten Daten und soll evtl. in einer späteren Version der App realisiert werden. 34

44 Abb 24. Ablaufplan der Synchronisation 35

45 Der Punkt Daten aus der Cloud synchronisieren kann als eigener Prozess angesehen werden und wird in einem gesonderten Ablaufplan dargestellt (siehe Abbildung 25). 36

46 Abb 25. Ablaufplan zum Synchronisieren von Daten aus der Cloud 5.3 Synchronisieren von Dokumenten Alle Serveranfragen werden mittels HttpGet ausgeführt (siehe Listing 14). Der Server antwortet mit einem HttpResponse, aus dem der entsprechende InputStream ausgelesen wird. Je nachdem, ob eine Anfrage auf einen Ordner oder eine Datei 37

47 an den Server gesendet wurde, enthält der InputStream entweder einen XML- Datenstrom (siehe Listing 15) oder die angeforderte Datei. //HTTP-Get Anfrage stellen HttpGet httpget = new HttpGet(prismaDownloadUrl + "/" + encodedpath); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getentity(); InputStream instream = entity.getcontent(); Listing 14: Anfrage an den Server schicken Zu Beginn der Synchronisation ist die erste Anfrage an den Cloud-Server immer eine Abfrage auf den Kundenordner des Benutzers. Dadurch wird erreicht, dass der Server mit einem XML-Datenstrom antwortet, der im Anschluss analysiert wird. Diese Verfahrensweise hat den großen Vorteil, dass nur wenige Kilobyte an Datentransfer nötig sind, um zu überprüfen, ob alle Daten auf dem Endgerät vorhanden und aktuell sind. <uptonet-cloud> <file type="file" modified=" " size=" " hash="bfd a8f538d23cd6d72561a6abafe63abf49ad58789b8bfc729d"> Adressen und Kontakte uxp </file> <file type="dir" modified=" "> Anhänge </file> </uptonet-cloud> Listing 15: XML-Datenstrom Der XML-Datenstrom enthält Informationen über den Dateityp (Ordner oder Datei), Änderungsdatum (in Millisekunden), Dateigröße (in Kilobyte) und Dateiname. Dabei beinhaltet ein File-Tag (<file></file>) außerdem alle Metadaten zu einer Datei. Bei der serverseitigen Erstellung des Änderungsdatums in Millisekunden werden die letzten drei Ziffern durch 0 ersetzt. Der Grund dafür ist, dass das Android-System Dateiänderungen nur sekundengenau abspeichert und ohne diese Korrektur der Zeit keine brauchbare Abfrage auf das Änderungsdatum erfolgen könnte. Alle Metadaten einer Datei werden als Objekte einer Klasse gespeichert. Diese 38

48 Klasse hat ausschließlich die Aufgabe, Informationen mittels Settermethoden aufzunehmen und mittels Gettermethoden verfügbar zu machen. Alle Klassenobjekte werden daraufhin in einer ArrayListe abgelegt und zwischengespeichert. Im Anschluss wird die Liste mithilfe einer for-schleife durchlaufen, wobei jedes Objekt nach einer bestimmten Vorgehensweise untersucht wird. Handelt es sich bei dem Dateityp um eine tatsächliche Datei (type="file"), wird zunächst überprüft, ob die Datei bereits auf dem Dateisystem existiert. Ist dies der Fall, wird mithilfe der Metadaten (Größe, Änderungsdatum und Hashwert) geprüft, ob die Datei geändert wurde. Ist die Datei noch nicht vorhanden oder eine neuere Version auf dem Server verfügbar, wird diese vom Server angefordert und heruntergeladen. Angeforderte Dateien können entweder Anhänge von Kontakten oder aber Datenbankexporte sein. Letztere werden in eine spezielle Datei geschrieben (näheres zu diesen Dateien findet sich in Kapitel 5.4). Ist die Datei vom Typ Dateiordner (type="dir"), wird erneut ein XML-Datenstrom vom Server angefordert, der alle Dateien dieses Unterordners auflistet. Dadurch kommt es zur Rekursion innerhalb der Funktion. Die ArrayListe ist noch nicht vollständig durchlaufen, fordert aber bereits einen neuen XML-Datenstrom vom Server an, der daraufhin zuerst abgearbeitet wird. Diese Rekursion wiederholt sich, entsprechend der Anzahl der Unterordner. Die Ordnerstruktur auf dem Server wird dabei exakt auf dem Endgerät nachgebildet. 5.4 Synchronisieren von Datenbankeinträgen Das Synchronisieren von Datensätzen aus einer Datenbank erfolgt mit Hilfe von speziellen Dateien (im Weiteren Journale genannt). Diese beinhalten die einzelnen Datenexporte in tabellarischer Form (siehe Listing 17). Die jeweiligen Zeilen einer Datenbanktabelle sind innerhalb des Journals durch eine Leerzeile getrennt. Somit ergeben sich einzelne Blöcke, von denen jeweils einer einem Datensatz in der Datenbank entspricht. Jeder dieser Blöcke besitzt an erster Stelle eine Kopfzeile, die Informationen darüber enthält, um welche Art von Datensatz es sich handelt. Diese lässt sich in vier Elemente zerlegen, von denen jedes durch einen Doppelpunkt getrennt ist. 39

49 Die Kopfzeile x:kontaktart:2:{6ec057eb f9f-b1e4-9a4dceffc35b} besteht aus: x: Art des Datenbankexports [u = update, i = insert, d = delete, x = export] Kontaktart: Name der Datenbanktabelle 2: Interne Datensatz-Id im UpToNet {6ec057eb f9f-b1e4-9a4dceffc35b}: Unique-Id des Datensatzes Listing 16: Bedeutung der einzelnen Elemente der Kopfzeile Im Anschluss an die Kopfzeile folgen die eigentlichen Daten der Tabelle. Diese bestehen aus drei Elementen, die ebenfalls durch einen Doppelpunkt getrennt sind. Das erste Element gibt den Spaltennamen der Datenbanktabelle an. Die zweite Stelle ist eine Integer-Zahl, die angibt aus wie vielen Bytes sich die eigentliche Information (drittes Element) zusammensetzt. Dadurch ist es möglich, dass ein einzelnes Feld eines Datensatzes mehrere Zeilen in einem Journal belegt. x:kontaktart:2:{6ec057eb f9f-b1e4-9a4dceffc35b} KONART_AENDERUNGAM:16: :51 KONART_AENDERUNGDURCH:38:{8fb7e4ad eb-54c8aa83f047} KONART_Bezeichnung:7:Telefon KONART_Id:1:2 KONART_Intern:1:3 KONART_Symbol:0: PUID:38:{6ec057eb f9f-b1e4-9a4dceffc35b} x:kontakt:714:{455f2c13-ac7c-435a-acb a8d189d} KON_Adresse:38:{e6182fb3-b6c4-47b6-ab5d-84fcf25f5f50} KON_AENDERUNGAM:16: :01 KON_AENDERUNGDURCH:38:{8fb7e4ad eb-54c8aa83f047} KON_ANLAGEAM:16: :47 KON_Anlagedatum:16: :47 KON_ANLAGEDURCH:38:{8fb7e4ad eb-54c8aa83f047} KON_Ansprechpartner:38:{87e bb4-4aae-ad47-951c6518af29} KON_Beginn:16: :46 KON_Betreff:9:Telefonat KON_Datum:16: :46 KON_Dauer:4:0,02 KON_Ende:16: :47 KON_Id:3:714 KON_Kontaktart:38:{6ec057eb f9f-b1e4-9a4dceffc35b} KON_Mitarbeiter:38:{8fb7e4ad eb-54c8aa83f047} PUID:38:{455f2c13-ac7c-435a-acb a8d189d} Listing 17: Beispiel einer Journal-Datei Die Vorgehensweise zum Analysieren der Journale und anschließendem Eintragen der ausgelesenen Datensätze in die Datenbank ist in Abbildung 26 dargestellt. 40

50 Abb 26. Analyseablaufplan der Journal-Datei 41

51 6 Datenspeicherung in Datenbanken Android stellt zur Speicherung von Daten eine in das Android SDK integrierte SQLite-Bibliothek zur Verfügung. Hierbei handelt es sich um eine abgespeckte Version eines SQL-Datenbankmanagementsystems. Dieses ist vor allem für den Embedded-Einsatz entworfen worden und besitzt zu diesem Zweck eine nur wenige Kilobyte große Bibliothek 17. SQLite besitzt gegenüber anderen Datenbankmanagementsystemen einige Nachteile 18. Diese sind: Nicht alle JOIN-Befehle werden unterstützt. LEFT OUTER JOIN ist implementiert, RIGHT OUTER JOIN und FULL OUTER JOIN werden nicht unterstützt. Der Befehl ALTER TABLE ist nur teilweise realisiert. RENAME TABLE und ADD COLUMN werden unterstützt, alles andere ist nicht implementiert. TRIGGER vom Typ FOR EACH ROW werden unterstützt, FOR EACH STATEMENT TRIGGER nicht. VIEWS können erstellt, aber nur gelesen werden. Die Befehle DELETE, UPDATE und INSERT können nicht auf eine VIEW angewendet werden. Es ist nicht möglich Berechtigungen für verschiedene Benutzer anzulegen. SQLite kommt nicht nur auf Android-Geräten zum Einsatz, sondern wird ebenfalls von namhaften Herstellern wie Apple, Mozilla, Adobe oder Skype Technologies verwendet. Im Rahmen dieser Diplomarbeit wurden zwei unterschiedliche Datenbanken verwendet. Alle Ansprechpartner und Firmen mit Adresse, Telefonnummer etc. werden in die bereits auf dem Endgerät befindliche Telefonbuchdatenbank geschrieben. Der Vorteil an dieser Lösung ist, dass kein eigenes Konzept zum Verwalten und Anzeigen dieser Daten entwickelt werden musste, sondern das Android-Telefonbuch verwendet werden konnte. Dieses stellt innerhalb der Telefonbuchdatenbank insgesamt vier SYNC-Felder zur Verfügung, die mit eigenen Daten zur Synchronisation beschrieben werden können. Hier wurde in das SYNC1-Feld die Unique-ID des Ansprechpartners eingetragen. Dies dient der eindeutigen Unterscheidung der jeweiligen Ansprechpartner. Das SYNC2- Feld wird mit einem Flag belegt, welches den jeweiligen Ansprechpartner als Person oder Firma kennzeichnet (0 = Person, 1 = Firma). 17 Quelle: (Stand 17. September 2012) 18 Quelle: (Stand 17. September 2012) 42

52 Zum Speichern und Verwalten der restlichen Daten, wie z.b. Kontakten, Mitarbeiter etc. wurde eine eigene Datenbank entwickelt. In Abbildung 27 ist die Datenstruktur der Datenbank des mobilen Büros im Zusammenspiel mit der Android-Telefonbuchdatenbank dargestellt. Innerhalb dieser werden Ansprechpartner in der Tabelle RawContact angelegt. Jeder Eintrag innerhalb dieser Tabelle wird einem bestimmten Synchronisationskonto zugeordnet. Dadurch ist es möglich, dass eine Person mehrfach in der Tabelle RawContact erscheint, je nachdem durch welche Quelle sie angelegt bzw. synchronisiert wurde (Bsp. Google, Facebook, Account, usw.). Alle Kontaktinformationen wie Adresse, Telefonnummer etc. werden in der Tabelle Data abgelegt, welche auf die Tabelle RawContact verweist. Abb 27. Datenbankmodell der UpToNet Mobile Datenbank Für das Erstellen einer Datenbank wird eine Klasse benötigt, die von SQLiteOpenHelper erbt und die Methoden public void oncreate(sqlitedatabase db) und public void onupgrade(sqlitedatabase db, int oldversion, int newversion) überschreibt. Innerhalb dieser Methoden ist die Neuerstellung und Aktualisierung einer Datenbank zu implementieren. Ein Beispiel zur Erstellung einer neuen Datenbank ist in Listing 18 dargestellt. 43

53 @Override public void oncreate(sqlitedatabase db) { db.execsql(kontakte.create_table); db.execsql(kontaktart.create_table); db.execsql(mitarbeiter.create_table); db.execsql(anhang.create_table); createkontaktarten(db); //Kontaktarten Datenbank initial befüllen } Listing 18: Neue Datenbank erstellen Zur besseren Übersicht und zur leichteren Pflege der Datenbank werden alle enthaltenen Tabellen durch eine eigene Klasse repräsentiert (ein Beispiel ist in Listing 19 anhand der Klasse Kontaktart dargestellt). Diese Klasse enthält Konstanten für die jeweiligen Spalten, den Namen, den MIME-Type und einen String zum Erstellen der Datenbanktabelle. Dieses Konzept hat den Vorteil, dass Änderungen jeweils nur an einer zentralen Stelle ausgeführt werden und sich von dort aus auf das gesamte Projekt auswirken. Zudem bietet es eine übersichtliche Ansicht aller Elemente einer Tabelle. public class Kontaktart { public static class Columns implements BaseColumns { public static final String KONART_BEZEICHNUNG = "KONART_Bezeichnung"; public static final String KONART_ICON_ID = "KONART_ICON_Id"; public static final String KONART_UID = "KONART_UID"; } public static final String CONTENT_DIRECTORY = "kontaktart"; public static final String TABLE_NAME = "KONTAKTART"; public static final Uri CONTENT_URI = Uri.parse( "content://"+uptonetcontentprovider.authority+"/"+content_directory); public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/com.prisma.uptonet.kontaktart"; public static final String CONTENT_TYPE = "vnd.android.cursor.dir/com.prisma.uptonet.kontaktart"; } public static final String CREATE_TABLE = "create table "+TABLE_NAME+"( " + Columns._ID + " integer primary key autoincrement, " + Columns.KONART_BEZEICHNUNG + " text, " + Columns.KONART_ICON_ID + " integer, " + Columns.KONART_UID + " text" + ")"; Listing 19: Hilfsklasse zum Repräsentieren einer Datenbanktabelle 44

54 6.1 Content-Provider Mit Hilfe eines Content-Providers (frei übersetzt: Inhaltslieferant) bietet man anderen Anwendungen die Möglichkeit, auf den Inhalt einer applikationsspezifischen Datenbank zuzugreifen. Beispielsweise hat man über einen Content-Provider auf alle Daten innerhalb der geräteinternen Telefonbuchdatenbank Zugriff. Ein solcher Provider wurde im Rahmen dieser Diplomarbeit entwickelt. Die Idee dahinter war, allen zukünftig entwickelten Apps der Firma Prisma GmbH zu ermöglichen, auf Daten der UpToNet Mobile Datenbank zuzugreifen. Zudem wird dadurch eine definierte Schnittstelle innerhalb der Applikation implementiert, durch die es theoretisch sogar möglich wäre, auf ein anderes Datenbankmanagementsystem als SQLite umzusteigen, ohne jeden Datenbankzugriff innerhalb der Applikation ändern zu müssen. Unter Android besitzt jede Datenquelle eine eindeutige Adresse, welche als URI (Uniform Resource Identifier) bezeichnet wird. Der Aufbau eines URI folgt dem Muster: content://<authority>/<tablename>/<id>, wobei die <Authority> den Besitzer der Daten kennzeichnet, in diesem Fall die Applikation. Diese Authority besitzt z.b. die Form com.prisma.uptonet und benennt den Content-Provider innerhalb des Systems. Das Element <Tablename> adressiert eine Tabelle innerhalb der Datenbank, die durch den Content-Provider verwaltet wird. Mit <Id> wird eine konkrete Zeile innerhalb der Tabelle adressiert. Der Zugriff auf den Content-Provider erfolgt über den Content-Resolver. Dieser stellt Methoden zum Abfragen (Select), Erstellen (Insert), Aktualisieren (Update) und Löschen (Delete) von Daten zur Verfügung. Der Resolver löst die Adresse auf und wählt den zur <Authority> passenden Content-Provider aus. Dieser wird im Anschluss gestartet und die entsprechende Methode ausgeführt 19. Wird beispielsweise eine Datenbankabfrage (Query) durchgeführt, liefert der Content- Provider einen Cursor (einen Zeiger auf Datenbankeinträge) zurück, aus dem die entsprechenden Ergebniszeilen ausgelesen werden können (ein Beispiel ist in Kapitel 6.2 beschrieben). Für die Erstellung eines Content-Providers wird eine neue Klasse benötigt, die von 19 vgl: Bach, Mike(2012): Mobile Anwendungen mit Android - Entwicklung und Praktischer Einsatz, München 2012, S

55 der Android-Klasse ContentProvider erbt. In dieser neu erstellten Klasse werden insgesamt fünf Methoden überschrieben, um dem Content-Provider seine Funktionalität zu geben. Diese public String gettype(uri uri) { return null; public Uri insert(uri uri, ContentValues values) { return null; public int update(uri uri, ContentValues values, String selection, String[] selectionargs) { return 0; public int delete(uri uri, String selection, String[] selectionargs) { return 0; public Cursor query(uri uri, String[] projection, String selection, String[] selectionargs, String sortorder) { return null; } Listing 20: Wichtigste Methoden innerhalb des Content Providers Die weitere Implementierung des Content-Providers ist sehr umfangreich und wird aus diesem Grund nicht näher beschrieben. Die vollständige Klasse UpToNetContentProvider findet sich auf der CD im Anhang B dieser Diplomarbeit. 6.2 Zugriff auf Datenbankinhalte Wie in Kapitel 6.1 erwähnt, erfolgt der Zugriff auf Content-Provider und somit auf Datenbankinhalte über die Klasse ContentResolver. Ein Objekt dieser Klasse erhält man über den Methodenaufruf getcontentresolver(). Mit diesem ist es nun möglich auf die Datenbank zuzugreifen. Ein Beispiel für eine Datenbankabfrage mithilfe des ContentResolver ist in Listing 21 dargestellt. 46

56 Cursor cursor = getcontentresolver().query( Kontaktart.CONTENT_URI, //URI der abzufragenden Tabelle new String[] {Kontaktart.Columns.KONART_UID}, //Tabellenspalte die zurück gegeben wird Kontaktart.Columns.KONART_BEZEICHNUNG + " =?", //Abfragebedingung (where...) new String[]{"Brief"}, //Ersetzt das? in der Abfragebedingung Kontaktart.Columns.KONART_UID); //Sortierungsreihenfolge while (cursor.movetonext()) { String unique_id = cursor.getstring( cursor.getcolumnindex(kontaktart.columns.konart_uid))); //Unique_ID aus dem Cursor auslesen }... // Unique-ID verarbeiten cursor.close(); //Cursor schließen um Speicher freizugeben Listing 21: Beispiel Datenbankabfrage auf die Unique-ID einer Kontaktart Die Methode query( ) liefert als Ergebnis einen Cursor zurück, in dem das Ergebnis der Abfrage enthalten ist. Der zurückgegebene Cursor ist immer vor dem ersten Element der Ergebnismenge positioniert. Durch die while-schleife while(cursor.movetonext()) werden alle Zeilen, die als Ergebnis der Abfrage zurückgegeben werden, durchlaufen. Der Cursor wird nicht automatisch geschlossen und muss, wenn er nicht mehr benötigt wird, mit cursor.close(); explizit aus dem Speicher bereinigt werden. 6.3 Das Konzept der Klasse LoaderManager Bei der Darstellung von großen Datenmengen einer Datenbankabfrage ist es in den meisten Fällen nicht sinnvoll, alle Daten auf einmal aus einem Cursor auszulesen, zwischenzuspeichern und darzustellen. Diese Vorgehensweise wäre sehr speicher- und zeitintensiv, da jeweils nur ein Bruchteil der Daten auf dem Bildschirm sichtbar ist. Die restlichen ungenutzten Daten würden unnötig viel Speicherplatz verbrauchen. Um solch eine Situation zu vermeiden, stellt Android ein Loader-Framework zur Verfügung. Mit diesem ist es möglich, nur diejenigen Daten aus der Datenbank zu laden, die momentan zum Anzeigen auf dem Bildschirm nötig sind. Wird innerhalb der Liste gescrollt, werden alle benötigten Daten aus der Datenbank nachgeladen. Dieses Konzept ist sehr ressourcenschonend und zum Anzeigen von großen 47

57 Datenmengen entwickelt worden. Um ein solches Konzept zu realisieren, wird zunächst eine Klasse benötigt, die das Interface LoaderManager.LoaderCallbacks<Cursor> implementiert und dessen Methoden überschreibt. Diese public Loader<Cursor> oncreateloader(int id, Bundle args) { return null; public void onloaderreset(loader<cursor> loader) { public void onloadfinished(loader<cursor> loader, Cursor cursor) { } Listing 22: Zu implementierende Methoden des Interface LoaderManager.LoaderCallbacks<Cursor> Innerhalb der Methode oncreateloader ist das eigentliche Laden der Daten aus der Datenbank zu realisieren. In den Methoden onloaderreset und onloadfinished wird der momentane Cursor zurück- bzw. neu gesetzt. Ein Beispiel ist anhand der Klasse ListFragmentFirmenUebersicht in Listing 23 dargestellt. Um die geladenen Daten in einem ListFragment darzustellen, wird ein neuer Adapter benötigt. Da es sich in diesem Fall um eine Datenbankabfrage handelt, die einen Cursor als Ergebnis zurück liefert, kann ein SimpleCursorAdapter verwendet werden. Dieser wird bereits vom Android-Framework bereitgestellt (ein Beispiel für die Implementierung des Cursor-Adapters mit anschließendem Starten des Ladevorganges ist in Listing 24 dargestellt). 48

58 private SimpleCursorAdapter public Loader<Cursor> oncreateloader(int id, Bundle args) { CursorLoader cursorloader = null; //CursorLoader Objekt erzeugen } cursorloader = new CursorLoader(context, ContactsContract.RawContacts.CONTENT_URI, null, ContactsContract.RawContacts.SYNC2 + "=?", new String[] {"1"}, null); //Gleiche Vorgehensweise wie bei einer normalen Datenbank Query, mit dem Unterschied, dass bei einem CursorLoader zusätzlich der Context übergeben werden muss. return public void onloaderreset(loader<cursor> loader) { cursoradapter.swapcursor(null); //Setzt den aktuellen Cursor auf null public void onloadfinished(loader<cursor> loader, Cursor cursor) { } cursoradapter.swapcursor(cursor); //Ersetzt den aktuellen Cursor Listing 23: Implementierte Methoden des Interface LoaderManager.LoaderCallbacks<Cursor> private SimpleCursorAdapter cursoradapter; private static final int INIT_CURSOR = 0; [ ] //Datenbankfelder die den entsprechenden Elementen des Layouts zugeordnet werden String[] from = {ContactsContract.RawContacts.DISPLAY_NAME_PRIMARY, ContactsContract.RawContacts.CONTACT_ID}; //Layoutelemente die von den Daten innerhalb der Spalten from beschrieben werden int[] to = {R.id.TextViewAnzeigenameVorschau, R.id.imageViewFotoThumbnail}; //Neues CursorAdapter Objekt erzeugen und initialisieren cursoradapter = new SimpleCursorAdapter(context, R.layout.layout_anzeige_bildundname, null, from, to); //Ladevorgang starten getloadermanager().restartloader(init_cursor, null, this); Listing 24: Initialisieren des SimpleCursorAdapter und Starten des Ladevorgangs 49

59 6.4 Die Methode setviewbinder( ) Bei der Verwendung von Standard-Adaptern ist es manchmal nötig, die aus der Datenbank ausgelesenen Daten noch einmal zu verändern bevor sie innerhalb der Anwendung dargestellt werden. In Listing 24 wird bei der Initialisierung des cursoradapter eine Tabellenspalte einem Element innerhalb einer Layout-Ressource zugeordnet. Dies geschieht mit den Variablen from und to. Das heißt, dass der Adapter die in dem Cursor enthaltenen Daten ( from ) ausliest und diese in ein Element ( to ) innerhalb der Layout-Ressource schreibt. In diesem Beispiel wird dem Datenbankfeld ContactsContract.RawContacts.CONTACT_ID das Element R.id.imageViewFotoThumbnail zugeordnet. Das Datenbankfeld beinhaltet allerdings nur Daten vom Typ Long. Bei dem Layout-Element handelt es sich um eine Image-View, die mit diesem Datentyp nicht umgehen kann. Somit ist es an dieser Stelle zwingend erforderlich die CONTACT_ID vom Typ Long in ein für die Image- View brauchbares Datenformat umzuwandeln. Dies geschieht dadurch, dass das Bild des Kontaktes aus dem Telefonbuch mit der ID CONTACT_ID aus der Datenbank geladen und der Image-View übergeben wird. Zu diesem Zweck stellt Android die Methode setviewbinder(...) zur Verfügung. Mit dieser ist es möglich, aus der Datenbank kommende Daten abzufangen und zu verändern. In Listing 25 ist eine beispielhafte Implementierung dieser Methode dargestellt. cursoradapter.setviewbinder(new SimpleCursorAdapter.ViewBinder() //Die Methode setviewvalue(...) der Inneren Klasse SimpleCursorAdapter.ViewBinder() überschreiben public boolean setviewvalue(view view, Cursor cursor, int columnindex) { if(view.getid() == R.id.imageViewFotoThumbnail) { Bitmap foto; //An dieser Stelle das Bild aus der Datenbank laden [ ] //Die vollständige Implementierung dieser Methode findet sich In der Klasse ListFragmentFirmenUebersicht Im Anhang B auf der CD. ImageView iv = (ImageView) view; iv.setimagebitmap(foto); //Das geladene Bild setzen return true; } return false; } }); Listing 25: Implementierung der Methode setviewbinder(...) 50

60 7 Fazit und Ausblick Nach dem Fertigstellen dieser Diplomarbeit lässt sich feststellen, dass alle Anforderungen an die entwickelte Software erfüllt wurden und eine übersichtliche und stabile App für das Betriebssystem Android entstanden ist. Durch erweiterte Tests der Anwendung durch mehrere Mitarbeiter kann davon ausgegangen werden, dass die Applikation weitestgehend fehlerfrei ist. Vor der Inbetriebnahme und Veröffentlichung der App müssen noch einige wichtige Erweiterungen implementiert werden, die zwar im Rahmen dieser Diplomarbeit nicht gefordert waren, aber für einen sinnvollen Einsatz der Applikation unerlässlich sind. Ein wichtiger Punkt, der zum Abschluss dieser Diplomarbeit noch nicht einwandfrei funktionierte, ist die Neuanlage und Bearbeitung von synchronisierten Ansprechpartnern innerhalb des Telefonbuchs. Diese werden zwar korrekt angezeigt, können aber nicht verändert werden. Hier war zu erwarten, dass zu diesem Zweck die Android eigenen Standard-Eingabeformulare verwendet werden können. Allerdings musste festgestellt werden, dass dies nicht der Fall war. Stattdessen wirft das Betriebssystem eine EmptyClassException, die anzeigt, dass an dieser Stelle wohl eine eigene Activity zum Bearbeiten der Ansprechpartner implementiert werden muss. Des Weiteren ist die Anmeldung des Synchronisations-Kontos an dem Cloud- Server noch nicht vollständig funktionsfähig. Hier fehlt eine serverseitige Anmeldung mittels Benutzername und Passwort, wodurch eine eindeutige Unterscheidung der jeweiligen Benutzer erreicht wird. Zur sicheren Synchronisierung der Daten zwischen dem Cloud-Server und den Endgeräten ist noch eine Verschlüsselung der Daten nötig. Dies könnte zum Einen über eine SSL verschlüsselte Verbindung realisiert werden, was allerdings mit weiteren Kosten für ein SSL-Zertifikat verbunden ist. Eine andere Möglichkeit wäre, die Daten mithilfe eines durch den Benutzer festgelegten Passworts bereits auf dem Gerät zu verschlüsseln und anschließend zu versenden. Der große Vorteil an dieser Lösung wäre, dass alle Daten verschlüsselt auf dem Cloud- Server vorliegen würden, was eine zusätzliche Sicherheit gewährt. Für eine maximale Sicherheit könnte man diese beiden Methoden verbinden und die bereits verschlüsselten Daten über eine SSL- verschlüsselte Verbindung senden. 51

61 Weiterhin sind noch kleinere Optimierungen denkbar. Beispielsweise könnten Dateien, die während des Synchronisationsvorganges bereits vollständig geladen wurden, in einem neuen Thread gleichzeitig in die Datenbank geschrieben werden. Dadurch würde das Laden der Dateien und Schreiben der geladenen Informationen nicht mehr nacheinander (seriell) erfolgen, sondern parallel abgearbeitet werden, was einen Geschwindigkeitsvorteil bewirken würde. Zudem sollte das Fehlerhandling bei Verbindungsabbrüchen während der Synchronisation weiter optimiert werden. Momentan werden nur fehlerhafte XML-Datenströme überprüft und erneut angefordert. Dieses Verhalten sollte auch auf heruntergeladene Dateien übertragen werden. Mit dem Abschluss dieser Diplomarbeit ist der Grundstein für die mobile Strategie für das CRM und DMS der Prisma GmbH gelegt. Im direkten Anschluss an diese Diplomarbeit werden die für die Marktreife benötigten Elemente schnellstmöglich realisiert, um die Produktpalette UpToNet sinnvoll zu erweitern. 52

62 Literaturverzeichnis Bücher: [1] Mike Bach: Mobile Anwendungen mit Android - Entwicklung und Praktischer Einsatz. 1. Auflage, Addison Wesley, München 2012 [2] Thomas Künneth: Android 4 Apps entwickeln mit dem Android SDK. 2. Aktualisierte und erweiterte Auflage, Galileo Press, Bonn 2012 Internetquellen: [3] (Stand: 03.September 2012) [4] (Stand: 03.September 2012) [5] (Stand 03.September 2012) [6] (Stand 03.September 2012) [7] / (Stand: 10.September 2012) [8] (Stand: 04.September 2012) [9] (Stand: 04.September 2012) [10] (Stand 09.September 2012) [11] (Stand: 03.September 2012) [12] (Stand 08. September 2012) 53

63 [13] (Stand 15.September 2012) [14] (Stand 17. September 2012) [15] (Stand 17. September 2012) 54

64 Anhang A

65 Abbildungsverzeichnis Anhang A Abb 1. Neue Elemente auf der Menüleiste in Eclipse... 1 Abb 2. Import Dialog Auswahl der Importmethode... 3 Abb 3. Import Dialog Auswahl des Projektes... 3 Abb 4. Android Virtual Device Manager... 4 Abb 5. Dialog zum Anlegen eines neuen Emulators... 5 Abb 6. Menüpunkt Debug Configurations... 6 Abb 7. Anlegen einer Debug-Konfiguration... 7 Abb 8. Manuelle Auswahl des Zielgerätes festlegen... 7 Abb 9. Package Explorer... 8 Abb 10. Grafischer Layout Editor Abb 11. Ein einfaches Layout mit einer TextView und einem Button Abb 12. Eine Auswahl an Layout Elementen auf einen Blick Abb 13. Der Lebenszyklus einer Activity Abb 14. Fragmente auf unterschiedlichen Endgeräten Abb 15. Lebenszyklus eines Fragments Abb 16. Status der Activity, bezogen auf den Lebenszyklus des Fragments Abb 17. Dialog Fragment Abb 18. Motorola Xoom Tablet I

66 Inhaltsverzeichnis Anhang A 1 Installation der Komponenten Inbetriebnahme des Projektes Import des Projektes Installation der Gerätetreiber Anlegen eines Emulators Die Applikation ausführen Grundlagen der Android-Softwareentwicklung Die Projektstruktur Layout-Ressourcen Activity Fragmente Unique-Id Das Motorola Xoom Tablet II

67 1 Installation der Komponenten Für die Android-Entwicklung werden folgende Komponenten benötigt: Eclipse ( ) Java (JDK) vorzugsweise in der Version 1.6 ( ) Android SDK ( ) ADT Plug-In für Eclipse ( ) Alle benötigten Komponenten (mit Ausnahme des ADT-Plug-In) für eine 32 und 64 Bit Windows-Installation sind auf der beigefügten CD im Anhang B vorhanden. Das ADT-Plug-In für Eclipse wird nicht über einen Installer, sondern mit Hilfe von so genannten Update-Sites installiert. Eine Installationsanleitung findet sich unter folgender URL: (Stand ). Das ADT-Plug-In bietet eine optimale Integration des SDK in die Entwicklungsumgebung Eclipse. Hinweis: Die Installation des Android SDK kann mitunter mehrere Stunden andauern. Dies ist von den zur Installation ausgewählten Android-Versionen abhängig. Jede dieser Version besitzt einen eigenen Emulator, wodurch die Installation mehrere Gigabyte Speicherplatz in Anspruch nehmen kann. Nach der Installation des ADT-Plug-In stehen in Eclipse neue Funktionen zum Anlegen und Bearbeiten von Android-Projekten zur Verfügung. Die wichtigsten Android-Elemente werden standardmäßig in der Menüleiste angezeigt (siehe Abbildung 1). Abb 1. Neue Elemente auf der Menüleiste in Eclipse 1

68 SDK-Manager: Hier lassen sich neue Android-Versionen, Updates und Treiber herunterladen und installieren. AVD-Manager: Der Android Virtual Device-Manager dient dem Anlegen und Bearbeiten von virtuellen Android-Geräten. Diese können innerhalb der Entwicklungsumgebung als Emulatoren zum Testen der Applikation verwendet werden. New Project: An dieser Stelle kann ein neues Android-Projekt angelegt werden. Hierbei wird man durch ein Menü geleitet, welches einem die Konfiguration des Projektes erleichtert. New Test Project: Mit einem Test-Projekt lässt sich eine entwickelte Applikation mit automatisierten Mechanismen testen. Dies ist vorteilhaft bei Komponenten, die keine sichtbaren Elemente besitzen und mit Hilfe des Emulators nur schwierig zu testen sind (beispielsweise Content-Provider) 20. New XML-File: Hier lassen sich neue Ressource-Dateien wie Layouts, Animationen oder Menüs anlegen. 2 Inbetriebnahme des Projektes 2.1 Import des Projektes Nach der erfolgreichen Installation der benötigten Komponenten kann das auf der CD befindliche Projekt UpToNetApp importiert werden. Hierzu wählt man in der Entwicklungsumgebung Eclipse unter der Rubrik File den Menüpunkt Import. Im sich öffnenden Dialog wählt man unter dem Ordner General den Eintrag Existing Projects into Workspace (siehe Abbildung 2). Im darauf folgenden Fenster kann das Projekt nun importiert werden. Dazu ist das Verzeichnis des Projektes in der Spalte Select root directory anzugeben. Dieses befindet sich auf der beigefügten CD unter dem Ordner Mobiles Büro Quelldateien. Nach Auswahl des Dateipfades erscheinen in dem Feld Projects alle importierbaren Projekte. Nach Auswahl des Projektes ist es wichtig, einen Haken in dem Feld Copy projects into workspace zu setzen, da ansonsten nur eine Verknüpfung zu dem Projekt erzeugt werden würde (siehe Abbildung 3). 20 Quelle: (Stand: 09. September 2012) 2

69 Abb 2. Import Dialog Auswahl der Importmethode Abb 3. Import Dialog Auswahl des Projektes 3

70 2.2 Installation der Gerätetreiber Nach dem erfolgreichen Import des Projektes in den Eclipse-Workspace, kann die Applikation nun ausgeführt werden. Zu diesem Zweck wird entweder ein realer Tablet-Computer oder ein entsprechender Emulator mit der Android-Version 3.2+ benötigt. Bei der Verwendung eines realen Endgerätes ist dieses zunächst über ein USB- Kabel mit dem PC zu verbinden. Anschließend müssen die neuesten Treiber des Gerätes installiert werden. Mit der Installation des SDK-Managers wurden bereits USB-Treiber für die gängigsten Geräte installiert. Sollten sich die Treiber nach Anschluss des Gerätes nicht automatisch installieren kann die Angabe des SDK- Dateipfades bei der Treibersuche evtl. Abhilfe verschaffen. Konnten auch innerhalb dieses Ordners keine passenden Gerätetreiber gefunden werden, so finden sich auf der Android-Entwickler-Homepage 21 Treiber verschiedenster Gerätehersteller. 2.3 Anlegen eines Emulators Steht kein reales Gerät zum Testen der Applikation zu Verfügung, so kann mit Hilfe des AVD-Managers ein neuer Emulator erzeugt werden, der ein reales Gerät 1:1 simuliert. Hierzu klickt man innerhalb von Eclipse auf der Menüleiste das Icon (AVD-Manager) wodurch sich ein neues Menü öffnet, in dem man die Möglichkeit hat, Emulatoren anzulegen und zu verwalten (siehe Abbildung 4). Abb 4. Android Virtual Device-Manager 21 (Stand ) 4

71 Durch einen Klick auf den Button New öffnet sich ein neuer Dialog zum Anlegen eines neuen Emulators (siehe Abbildung 5). Abb 5. Dialog zum Anlegen eines neuen Emulators Innerhalb des Feldes Name kann dem Emulator ein beliebiger Name gegeben werden. Unter Target wird dem Emulator eine Android-Betriebssystemversion zugewiesen. In der Eingabemaske SD Card kann dem virtuellen Gerät eine SD- Karte als zusätzlicher Speicher hinzugefügt werden. Durch die Checkbox Snapshot kann eine Momentaufnahme des Emulators auf der Festplatte gespeichert werden. Innerhalb der Eingabemaske Skin kann nach Bedarf die Größe des Emulators festgelegt werden. Unter dem Punkt Hardware können dem Emulator bestimmte, virtuelle Hardwarekomponenten hinzugefügt werden (beispielsweise eine Kamera, Hardware-Buttons oder eine GPS Unterstützung, etc.). Hinweis: Bei der Verwendung von GPS kann entweder ein fest vorgegebener Standort simuliert oder es können KML- oder GPX-Dateien 22 abgespielt werden. 22 Bei KML und GPX Dateien handelt es sich um ein Dateiformat zur Speicherung von Geodaten, wodurch eine zurückgelegte Route simuliert werden kann. Weitere Informationen finden sich unter: (Stand 11. September 2012) oder (Stand 11. September 2012) 5

72 2.4 Die Applikation ausführen Nachdem nun ein reales oder virtuelles Gerät vorhanden ist, kann die Applikation im Debug-Modus gestartet werden. Dazu ist es ratsam eine neue Debug- Konfiguration für dieses Projekt anzulegen. Hierzu wählt man unter dem Menüpunkt Run den Unterpunkt Debug Configurations (siehe Abbildung 6). Abb 6. Menüpunkt Debug Configurations Im sich öffnenden Dialog wählt man im linken Bereich den Punkt Android Applikation und legt mit dem Icon (New launch configuration) eine neue Debug- Konfiguration an. Im rechten Bereich des Dialogs vergibt man der Konfiguration einen eindeutigen Namen und wählt unter Project das UpToNetApp Projekt aus (siehe Abbildung 7). Im letzten Schritt setzt man innerhalb des Reiters Target den Deployment Target Selection Mode auf manual (siehe Abbildung 8). Dadurch wird vor jedem Debug-Vorgang ein Dialog zur Auswahl des Zielgerätes angezeigt. Durch einen Klick auf Debug und anschließender Auswahl des Zielgerätes wird die Applikation auf dem gewählten Gerät installiert und im Debug-Modus gestartet. Das Debuggen einer Android-Applikation gestaltet sich wie bei einer normalen Java-Anwendung und wird aus diesem Grund nicht weiter erläutert. 6

73 Abb 7. Anlegen einer Debug-Konfiguration Abb 8. Manuelle Auswahl des Zielgerätes festlegen 7

74 3 Grundlagen der Android-Softwareentwicklung 3.1 Die Projektstruktur Abb 9. Package-Explorer In dem in Abbildung 9 dargestellten Package-Explorer ist die Struktur eines Android-Projektes zu erkennen. Unterhalb des Ordners src befinden sich, in verschiedene Pakete unterteilt, alle benötigten Java-Quellen. In dem Ordner gen werden alle benötigten Ressourcen-ID s innerhalb der Klasse R.java abgelegt. Dabei handelt es sich um eine automatisch erzeugte Klasse, in der keine Änderungen vorzunehmen sind. 8

75 Der Ordner Android 3.2 beinhaltet alle Bibliotheken, die zur Ausführung der Applikation benötigt werden. Innerhalb des Ordners Assets können beliebige Dateien abgelegt werden. Auf diese wird im Gegensatz zu Ressourcen nicht über eine Konstante ID, sondern mit dem Dateinamen zugegriffen. Diese Dateien werden bei Auslieferung der Applikation ohne weitere Optimierung 1:1 übernommen. Der Ordner bin wird ebenfalls wie der Ordner gen automatisch erzeugt. Hier sind ebenfalls keine Änderungen vorzunehmen. Alle Ressource-Dateien befinden sich innerhalb des Ordners res. Hierbei handelt es sich beispielsweise um Layouts, Menüs, Animationen, Strings etc. Für alle Ressourcen werden Identifizierer in Form von Konstanten in der Klasse R.java angelegt. Mit Hilfe dieser Konstanten kann innerhalb des Quellcodes auf die Ressourcen zugegriffen werden. Das Herzstück einer Applikation bildet das AndroidManifest.xml. Innerhalb dieser speziellen Ressource-Datei werden die Grundbestandteile einer Applikation deklariert. Im Folgenden sind die wichtigsten Elemente genannt: Activitys: Eine Bildschirmseite der Applikation (siehe Kapitel 3.3). Services: Ein Dienst, der im Hintergrund der Applikation ausgeführt wird. Content-Provider: Ermöglicht anderen Anwendungen auf die applikationseigene Datenbank zuzugreifen. Permissions: Berechtigungen über die innerhalb der Applikation verwendeten Elemente (Bsp.: Internet, Telefonie, Kontakte auslesen, Kontakte schreiben etc.). Diese Berechtigungen sind öffentlich und müssen vor der Installation der Applikation auf dem Endgerät durch den Benutzer bestätigt werden. Dabei ist es nicht möglich nur einen Teil der Berechtigungen zu akzeptieren und andere nicht. Demnach müssen vor der Installation ausnahmslos alle Berechtigungen akzeptiert werden. Intent-Filter: Deklariert zum einen den Startpunkt der Applikation und zum anderen wird hierdurch festgelegt, mit welcher Art von Dateitypen die Applikation umgehen kann. 9

76 3.2 Layout-Ressourcen Layout-Ressourcen definieren bei der Android-Softwareentwicklung die Oberflächen für Activitys oder eigene Benutzerinterface-Komponenten. Die Deklaration erfolgt mit Hilfe von XML-Dateien, die im Verzeichnis res/layout angelegt werden. Diese Dateien können auf zwei unterschiedliche Arten bearbeitet werden. Zum Einen ist es möglich, alle Elemente in reinem XML zu beschreiben. Zum Anderen stellen die Android Development Tools einen eigenen Layout-Editor zur Verfügung, der einem besonders zu Beginn der Android- Programmierung die Erstellung eines Layouts erleichtert. Hierbei handelt es sich um einen grafischen Editor, mit dem man das Layout per Drag-und-Drop aufbauen kann (siehe Abbildung 10). Dieser macht allerdings im Hintergrund nichts anderes, als alle Elemente, die man grafisch angeordnet hat, in ein XML-Dokument umzuwandeln. Somit wird dem Entwickler ein wenig Schreibarbeit erspart, allerdings stößt der Editor sehr schnell an seine Grenzen, wenn das Layout komplexer wird. Abb 10. Grafischer Layout Editor 10

77 In einer Layout-Ressource werden alle Elemente wie z.b. Buttons, Bilder, Textfelder etc. innerhalb einer View bzw. einer Ableitung dieser Klasse deklariert. Dazu stellt Android mehrere Klassen zur Verfügung, die die Anordnung dieser Elemente bestimmen. Die Wichtigsten sind: LinearLayout (Vertical): Alle beinhalteten Elemente werden untereinander angeordnet. LinearLayout (Horizontal): Alle beinhalteten Elemente werden nebeneinander angeordnet. RelativeLayout: Alle beinhalteten Elemente werden relativ zu anderen Elementen platziert. FrameLayout: Innerhalb eines FrameLayouts können Elemente während der Laufzeit hinzugefügt und ausgetauscht werden. Dabei ist auch eine Kombination mehrerer Views möglich. Beispielsweise kann ein vertikales LinearLayout ein horizontales LinearLayout beinhalten. Dadurch ist jede denkbare Anordnung der Elemente möglich. Ein Beispiel eines einfachen Layouts mit einem Feld zum Anzeigen von Text (TextView) und einem Knopf (Button) ist in Abbildung 11 dargestellt. Abb 11. Ein einfaches Layout mit einer TextView und einem Button Listing 1 zeigt das Layout aus Abbildung 11 in XML-Schreibweise. 11

78 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancelarge" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> Listing 1: Layout Ressource in XML-Schreibweise Eine Layout Ressource beginnt immer mit der Zeile <?xml version="1.0" encoding="utf-8"?>. Diese legt die verwendete XML-Version und das Encoding fest. Als Nächstes folgt eine, alles umschließende View bzw. ein LinearLayout. Dieses bestimmt die Anordnung der beinhalteten Elemente. Jedes Element beginnt mit einem Kleinerzeichen (<) gefolgt vom Namen des Elements. Hinter dem Namen können jedem Element verschiedene Attribute hinzugefügt werden. Solche Attribute sind beispielsweise android:id (Identifizierer des Elements), android:layout_width (Breite des Elements), android:layout_height (Höhe des Elements), android:orientation (vertikale oder horizontale Ausrichtung), android:background (Hintergrund des Elements) etc. Ein Element kann auf zwei unterschiedliche Arten wieder geschlossen werden. Handelt es sich um ein Element, welches andere Elemente umschließt (beispielsweise ein LinearLayout), so verwendet man ein Schließen-Tag mit dem jeweiligen Elementnamen </LinearLayout>. Der Unterschied zu einem Öffnen- Tag ist der Schrägstrich (/) hinter dem Kleinerzeichen. Alle anderen Elemente, können mit einem Schrägstrich, gefolgt von einem Größerzeichen geschlossen werden (/>). In Abbildung 12 ist eine Auswahl an Elementen zum Gestalten eines Layouts dargestellt. 12

79 Abb 12. Eine Auswahl an Layout Elementen auf einen Blick Um die Größe eines Elementes festzulegen, werden die Attribute android:layout_width und android:layout_height verwendet. Diesen Attributen können unterschiedliche Werte zugewiesen werden. Diese sind: match_parent: Passt die Größe des Elements an das umgebene Element an (z. B. an ein umgebenes LinearLayout). Existiert kein solches umgebenes Element, so wird es an die Bildschirmgröße angepasst. wrap_content: Passt die Größe an den Inhalt des Elementes an. Handelt es sich beispielsweise um einen Button, so wird dieser so groß, dass er den beinhaltenden Text anzeigen kann. dp: Density-independent Pixel ist eine bildschirmunabhängige Größenangabe. Dabei entspricht 1dp einem Pixel auf einem 160dpi Bildschirm. Die Umwandlung von dp zu Pixeln berechnet sich folgendermaßen 23 : px dp dpi 160. Die Angabe von Größen in dp ist anderen Größenangaben wie z.b. px (Pixel) oder mm (Millimeter) vorzuziehen, da hierbei alle Elemente auf unterschiedlich großen Bildschirmen den gleichen Platz beanspruchen. 23 Quelle: (Stand ) 13

80 3.3 Activity Eine Activity ist eine Bildschirmseite auf einem mobilen Endgerät, mit der der Benutzer interagieren kann. Eine Applikation muss aus mindestens einer, kann aber durchaus auch aus mehreren Activitys bestehen. Dabei reagiert die Activity auf Benutzereingaben, öffnet Netzwerk- und Datenbankverbindungen, startet andere Activitys etc. Sie ist so zu sagen die Schaltzentrale, die das Zusammenspiel der einzelnen Elemente koordiniert. Eine Activity ist eine Java-Klasse, die von der Elternklasse Activity erbt. Das Aussehen wird mit Hilfe einer Layout-Ressource bestimmt. Der Aufbau einer Activity gleicht einer normalen Java-Klasse. Zunächst wird mit package com.prisma.uptonet; das Paket deklariert, in dem sich die Klasse befindet. Es folgen etwaige Import-Anweisungen von fremden Klassen, die innerhalb der Activity verwendet werden (Listing 2). import android.app.actionbar; import android.app.actionbar.tab; import android.app.actionbar.tablistener; import android.content.intent; Listing 2: Import externer Klassen Als Nächstes wird die Klasse selbst deklariert. public class UpToNetAppActivity extends Activity implements TabListener Listing 3: Deklaration der Klasse UpToNetAppActivity Das Schlüsselwort extends kennzeichnet die Elternklasse, von der geerbt wird. Das Schlüsselwort implements kennzeichnet alle Interfaces, die durch die Activity implementiert werden. Die Elternklasse Activity besitzt Methoden, die innerhalb der eigenen Activity überschrieben werden können. Die überschriebenen Methoden werden durch die gekennzeichnet. Durch das Überschreiben hat man die Möglichkeit, in verschiedene Lebenszyklen einer Activity einzugreifen und auf diese zu reagieren. Abbildung 13 zeigt den Lebenszyklus 24 einer Activity. 24 Quelle: (Stand ) 14

81 Abb 13. Der Lebenszyklus einer Activity Nachdem eine Activity gestartet wurde, wird die Methode oncreate( ) aufgerufen. Diese wird dazu verwendet der Activity ein Layout zuzuweisen oder unterschiedliche Objekte zu initialisieren. Zu diesem Zeitpunkt ist die Activity noch nicht sichtbar. Der gesamte Lebenszyklus der Activity liegt zwischen den Methoden oncreate( ) und ondestroy( ). Die Methode onstart( ) wird aufgerufen, wenn die Activity sichtbar wird. Der für den Benutzer sichtbare Lebenszyklus liegt zwischen den Methoden onstart( )und onstop( ). Letztere wird aufgerufen, wenn die Activity nicht mehr sichtbar ist, weil beispielsweise eine andere Activity gestartet wurde. Die Methode onpause( ) wird aufgerufen, wenn die Activity kurz davor ist aus dem sichtbaren Bereich zu verschwinden. Sobald die Activity wieder sichtbar wird und kurz davor steht Interaktionen durch den Benutzer zuzulassen, wird die Methode onresume( ) aufgerufen. 15

82 3.4 Fragmente Fragmente wurden mit der Android-Version 3 eingeführt und bestehen aus einer eigenen Klasse, die von der Elternklasse Fragment erbt. Fragmente besitzen ein eigenes Layout und müssen immer in eine Activity eingebettet werden. Innerhalb einer Activity können mehrere Fragmente kombiniert werden, was vor allem auf Tablet-Computern durch den zur Verfügung stehenden Platz sinnvoll ist. Der große Vorteil von Fragmenten ist, dass sie während der Laufzeit der Applikation gegen andere Fragmente ausgetauscht werden können und dadurch in der Lage sind, der Activity eine ganz neue Funktion zu geben. Ein weiterer Vorteil ist, dass es durch die Verwendung von Fragmenten vereinfacht wird, eine für ein Tablet entwickelte App auch auf einem Smartphone einzusetzen. Abbildung 14 soll dies verdeutlichen 25. Abb 14. Fragmente auf unterschiedlichen Endgeräten Ein Fragment hat ebenso wie eine Activity einen eigenen Lebenszyklus. Dieser ist in Abbildung 15 dargestellt 26. In Abbildung 16 wird der jeweilige Status der Activity, bezogen auf den Lebenszyklus des Fragmentes, verdeutlicht Quelle: (Stand ) 26 Quelle: (Stand ) 27 Quelle: (Stand ) 16

83 Abb 15. Lebenszyklus eines Fragments Abb 16. Status der Activity, bezogen auf den Lebenszyklus des Fragments 17

84 Neben der Basisklasse Fragment stellt das Android-Framework mehrere abgeleitete Klassen zur Verfügung 28. Diese sind: DialogFragment: Mit Hilfe eines DialogFragment lässt sich ein kleines Fenster anzeigen, dass sich vor die aktuelle Activity schiebt (siehe Abbildung 17). Dieses lässt sich beispielsweise zum Anzeigen von Warnungen oder zum Eingeben von Text einsetzen. ListFragment: Mit einem ListFragment lassen sich Daten mit Hilfe einer Liste darstellen. PreferenceFragment: Mit einem PreferenceFragment lassen sich Einstellungen mit Hilfe einer Liste darstellen. Abb 17. Dialog Fragment 28 Quelle: (Stand ) 18

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

APPS FÜR ANDROID ENTWICKELN

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

Mehr

4.1 Download der App über den Play Store

4.1 Download der App über den Play Store 4 4.1 Download der App über den Play Store Die App TopSec Phone kann über den Play Store auf dem Smartphone oder über das Internet an Ihrem Computer heruntergeladen werden. Um Inhalte laden zu können,

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

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

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

DGNB System Software: Unterschiede zwischen Version 1 und Version 2

DGNB System Software: Unterschiede zwischen Version 1 und Version 2 DGNB System Software: Unterschiede zwischen Version 1 und Version 2 1 DGNB GmbH 2015 Inhaltsverzeichnis (1) 1. Aufteilung in Web-Oberfläche und Client 2. Anmeldung in der Web-Oberfläche 3. Installieren

Mehr

1 Einrichten von AGzESS - Mobile... 2. 2 Arbeiten mit AGzESS - Mobile... 5. 3 Synchronisation zwischen AGzESS und AGzESS-Mobile...

1 Einrichten von AGzESS - Mobile... 2. 2 Arbeiten mit AGzESS - Mobile... 5. 3 Synchronisation zwischen AGzESS und AGzESS-Mobile... Inhaltsverzeichnis 1 Einrichten von AGzESS - Mobile... 2 2 Arbeiten mit AGzESS - Mobile... 5 3 Synchronisation zwischen AGzESS und AGzESS-Mobile... 10 4 Fehleingaben korrigieren... 11 5 Verknüpfung auf

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

Optionale Umstellung der Intranet-Version von Perinorm auf wöchentliche Aktualisierung

Optionale Umstellung der Intranet-Version von Perinorm auf wöchentliche Aktualisierung Optionale Umstellung der Intranet-Version von Perinorm auf wöchentliche Aktualisierung Perinorm Online wurde im Dezember 2013 auf eine wöchentliche Aktualisierung umgestellt. Ab April 2014 können auch

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

SIHLNET E-Mail-Konfiguration

SIHLNET E-Mail-Konfiguration SIHLNET E-Mail-Konfiguration Inhaltsverzeichnis 1. Allgemeines...2 2. OWA...2 2.1. Anmeldung... 2 2.2. Arbeiten mit OWA... 3 2.2.1. Neue E-Mail versenden... 3 2.2.2. E-Mail beantworten / weiterleiten...

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

OWNCLOUD DIENST AN DER STAATLICHEN AKADEMIE DER BILDENDEN KÜNSTE STUTTGART

OWNCLOUD DIENST AN DER STAATLICHEN AKADEMIE DER BILDENDEN KÜNSTE STUTTGART A OWNCLOUD DIENST AN DER STAATLICHEN AKADEMIE DER BILDENDEN KÜNSTE STUTTGART Owncloud ist ein Cloud-Service, der auf Servern der Kunstakademie betrieben wird. Er bietet die Möglichkeit der Nutzung einer

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

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. 2 24.09.2013 Mobile Systeme - Android

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

Mehr

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

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

Mehr

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

GroupWise Kurs. erweiterte Funktionen

GroupWise Kurs. erweiterte Funktionen GroupWise Kurs erweiterte Funktionen Gliederung 1. REGEL/ FILTER/ SPAM 2 1.1. Urlaubsregel 2 1.2. Junk-Regel 3 2. GRUPPENARBEIT 4 2.1. Freigaben 4 2.2. Vertretung 7 3. SUCHERGEBNISSORDNER 9 4. EXTERNE

Mehr

Anleitung zu Projekte

Anleitung zu Projekte Web Site Engineering GmbH Anleitung zu Projekte Projekte im WPS Version 4.3 Seite 1 Projekte verwalten...1 2 Projekt hinzufügen...4 3 Projekt löschen...9 4 Projekt ändern...9 5 Projektdaten drucken und

Mehr

CalenGoo Einführung 1.5.14

CalenGoo Einführung 1.5.14 English Deutsch Start Einführung Konfiguration Support Updates Impressum/Datenschutz CalenGoo Einführung 1.5.14 Einführung Der folgende Text gibt einen Überblick wie CalenGoo bedient wird. Er erklärt die

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

Tutorial. Programmierung einer Android-Applikation. Teil 1

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

Mehr

Outlook Web App 2010. Kurzanleitung. interner OWA-Zugang

Outlook Web App 2010. Kurzanleitung. interner OWA-Zugang interner OWA-Zugang Neu-Isenburg,08.06.2012 Seite 2 von 15 Inhalt 1 Einleitung 3 2 Anmelden bei Outlook Web App 2010 3 3 Benutzeroberfläche 4 3.1 Hilfreiche Tipps 4 4 OWA-Funktionen 6 4.1 neue E-Mail 6

Mehr

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

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

Mehr

Bedienungsanleitung ComfortTouch App für Busch-ComfortPanel. Busch-ComfortPanel 9 8136/09-811 8136/09-825

Bedienungsanleitung ComfortTouch App für Busch-ComfortPanel. Busch-ComfortPanel 9 8136/09-811 8136/09-825 1373-1-8367 01.08.2013 Bedienungsanleitung Busch- 9 8136/09-811 8136/09-825 Busch- 12.1 8136/12-811 8136/12-825 1 Einleitung... 3 1.1 Bestimmungsgemäßer Gebrauch... 3 2 Systemvoraussetzung der mobilen

Mehr

Apps-Entwicklung mit Netbeans

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

Mehr

Mobiltelefon Registrierung in Afaria Inhaltsverzeichnis

Mobiltelefon Registrierung in Afaria Inhaltsverzeichnis Mobiltelefon Registrierung in Afaria Inhaltsverzeichnis Windows Phone Registrierung Seite 2 iphone Registrierung Seite 10 Android Registrierung Seite 20 Windows Phone Registrierung Dokumentname: Kontakt:

Mehr

crm-now/ps Anwenderhandbuch für die Thunderbird Erweiterung Zweite Ausgabe

crm-now/ps Anwenderhandbuch für die Thunderbird Erweiterung Zweite Ausgabe crm-now/ps Anwenderhandbuch für die Thunderbird Erweiterung Zweite Ausgabe crm-now/ps: Copyright 2006 crm-now Versionsgeschichte Version 02 08.09.2006 Release Version Version 01 16.06.2005 crm-now c/o

Mehr

Mitarbeitereinsatzplanung. easysolution GmbH 1

Mitarbeitereinsatzplanung. easysolution GmbH 1 Mitarbeitereinsatzplanung easysolution GmbH 1 Mitarbeitereinsatzplanung Vorwort Eines der wichtigsten, aber auch teuersten Ressourcen eines Unternehmens sind die Mitarbeiter. Daher sollten die Mitarbeiterarbeitszeiten

Mehr

Unterscheidung Tablet PC & Tablet Computer. Tablet PC; ursprüngliche Bezeichnung von Microsoft. Tablets gemeint

Unterscheidung Tablet PC & Tablet Computer. Tablet PC; ursprüngliche Bezeichnung von Microsoft. Tablets gemeint Überblick Unterscheidung Tablet PC & Tablet Computer Tablet PC; ursprüngliche Bezeichnung von Microsoft Mit Tablet Computer sind die heutigen gängigen Mit Tablet Computer sind die heutigen gängigen Tablets

Mehr

Erste Schritte mit Elvis 3 ein Beispielprojekt

Erste Schritte mit Elvis 3 ein Beispielprojekt Erste Schritte mit Elvis 3 ein Beispielprojekt Um Sie mit Elvis 3 vertraut zu machen möchten wir mit Ihnen mit diesem Kapitel ein Beispielprojekt vom ersten Aufruf von Elvis 3 bis zum Testlauf aufbauen.

Mehr

SBB Schulung für digitale Fahrplanabfrage und Ticketkäufe.

SBB Schulung für digitale Fahrplanabfrage und Ticketkäufe. SBB Schulung für digitale Fahrplanabfrage und Ticketkäufe. Vielen Dank, dass Sie sich für die SBB Schulung für die digitale Fahrplanabfrage und Ticketkäufe angemeldet haben. Das vorliegende Dokument erklärt

Mehr

2.1 Wozu dient das Betriebssystem

2.1 Wozu dient das Betriebssystem PC-EINSTEIGER Das Betriebssystem 2 Themen in diesem Kapitel: Das Betriebssystem Die Windows-Oberfläche Elemente eines Fensters 2.1 Wozu dient das Betriebssystem Das Betriebssystem (engl.: operating system,

Mehr

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

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

Mehr

DEJORIS iphone-app Anleitung

DEJORIS iphone-app Anleitung DEJORIS iphone-app Anleitung Stand: März 2014 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Voraussetzungen... 3 1.2. Funktionen von allgemeinen Schaltflächen und Symbolen... 4 2. Arbeiten mit der DEJORIS-App...

Mehr

Teamcenter Rapid Start (Rich Client)

Teamcenter Rapid Start (Rich Client) 15.06.15-1 - E:\Stefan\CAD\Teamcenter\TCRS10\Anleitungen\TeamcenterRich.doc Teamcenter Rapid Start (Rich Client) 1. Starten und Beenden - Teamcenter starten (Desktop-Verknüpfung): - Anmeldeinformationen

Mehr

Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein.

Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein. Pfade einstellen Stand: Dezember 2012 Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein. Diese Anleitung soll zeigen, wie man Pfad-Favoriten

Mehr

Leitfaden für die Installation der freien Virtual Machine. C-MOR Videoüberwachung auf einem VMware ESX Server

Leitfaden für die Installation der freien Virtual Machine. C-MOR Videoüberwachung auf einem VMware ESX Server Diese Anleitung illustriert die Installation der Videoüberwachung C-MOR Virtuelle Maschine auf VMware ESX Server. Diese Anleitung bezieht sich auf die Version 4 mit 64-Bit C-MOR- Betriebssystem. Bitte

Mehr

App-Entwicklung für Android

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

Mehr

@HERZOvision.de. Kurzanleitung WebClient. v 1.0.0 by Herzo Media GmbH & Co. KG - www.herzomedia.de

@HERZOvision.de. Kurzanleitung WebClient. v 1.0.0 by Herzo Media GmbH & Co. KG - www.herzomedia.de @HERZOvision.de Kurzanleitung WebClient v 1.0.0 by Herzo Media GmbH & Co. KG - www.herzomedia.de Inhaltsverzeichnis Inhaltsverzeichnis... 2 E-Mails direkt im Browser bearbeiten... 3 Einführung in den WebClient

Mehr

Arbeiten mit. Arbeiten mit raum level10-tablet. Kaiser edv-konzept

Arbeiten mit. Arbeiten mit raum level10-tablet. Kaiser edv-konzept Arbeiten mit raum level10-tablet ist eine Version von raum level10, die speziell für die Arbeit auf Tablet-PC s entwickelt wurde. Achtung: raum level10-tablet läuft nur auf Tablets mit Windows8-Vollversion.

Mehr

Einrichtung des NVS Calender-Google-Sync-Servers. Installation des NVS Calender-Google-Sync Servers (Bei Neuinstallation)

Einrichtung des NVS Calender-Google-Sync-Servers. Installation des NVS Calender-Google-Sync Servers (Bei Neuinstallation) Einrichtung des NVS Calender-Google-Sync-Servers Folgende Aktionen werden in dieser Dokumentation beschrieben und sind zur Installation und Konfiguration des NVS Calender-Google-Sync-Servers notwendig.

Mehr

Erste Hilfe bei Problemen mit Iustec Mandat

Erste Hilfe bei Problemen mit Iustec Mandat Erste Hilfe bei Problemen mit Iustec Mandat Inhaltsverzeichnis 1. Nach dem Programmstart werden Sie aufgefordert, die Verbindung zu Ihrem Daten-Ordner neu herzustellen, obwohl Sie keine neue Version von

Mehr

Brainloop Secure Dataroom Version 8.30. QR Code Scanner-Apps für ios Version 1.1 und für Android

Brainloop Secure Dataroom Version 8.30. QR Code Scanner-Apps für ios Version 1.1 und für Android Brainloop Secure Dataroom Version 8.30 QR Code Scanner-Apps für ios Version 1.1 und für Android Schnellstartanleitung Brainloop Secure Dataroom Version 8.30 Copyright Brainloop AG, 2004-2015. Alle Rechte

Mehr

Handbuch für Android 1.5

Handbuch für Android 1.5 Handbuch für Android 1.5 1 Inhaltsverzeichnis 1 Leistungsumfang... 3 1.1 Über Boxcryptor Classic... 3 1.2 Über dieses Handbuch... 3 2. Installation... 5 3. Grundfunktionen... 5 3.1 Einrichtung von Boxcryptor

Mehr

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch:

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch: O UTLOOK EDITION Was ist die Outlook Edition? Outlook Edition integriert Microsoft Outlook E-Mail in Salesforce. Die Outlook Edition fügt neue Schaltflächen und Optionen zur Outlook- Benutzeroberfläche

Mehr

StickSecurity Home Edition 2006

StickSecurity Home Edition 2006 StickSecurity Home Edition 2006 Inhalt: 1. Konfiguration Sprache wählen Wechseldatenträger wählen 1. 1 Allgemein Bedienung Hotkey 2. Menü Aktionen Passwort Sonstige USB Stick Info USB Explorer USB Backup

Mehr

Die Kunst des Lebens lehren

Die Kunst des Lebens lehren Inhalt: 1. Download der Stundenplandateien als.ics bzw..pdf 2. Import / Anzeige des Stundenplans 2.1 Import der Stundenplandatei in Outlook 2003 2.2 Import der Stundenplandatei bei Android-Mobiltelefonen

Mehr

Hello World in Java. Der Weg zum ersten Java-Programm

Hello World in Java. Der Weg zum ersten Java-Programm Vorwort Hello World in Java Der Weg zum ersten Java-Programm Diese Anleitung wurde unter Windows XP verfasst. Grundsätzlich sollte sie auch unter späteren Windows Versionen wie Windows Vista oder Windows

Mehr

Apps-Entwicklung mit Eclipse

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

Mehr

INSTALLATION OFFICE 2013

INSTALLATION OFFICE 2013 INSTALLATION OFFICE 2013 DURCH OFFICE 365 Zur Verfügung gestellt von PCProfi Informatique SA Einleitung Das folgende Dokument beschreibt Ihnen Schritt für Schritt, wie man Office Umgebung 2013 auf Ihren

Mehr

Leseprobe. Sven Owsianowski SVO-Webdesign GbR 22.02.2015 3. Auflage

Leseprobe. Sven Owsianowski SVO-Webdesign GbR 22.02.2015 3. Auflage 2015 Sven Owsianowski SVO-Webdesign GbR 22.02.2015 3. Auflage Inhalt Android Smartphone & Tablets 1 Herzlich willkommen... 4 2 Inhalt des Tagesseminars... 5 3 Android ein System mit Potenzial... 7 3.1

Mehr

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Android-Smartphone und die Google-Cloud

Android-Smartphone und die Google-Cloud Cloud? Cloud heißt zu Deutsch Wolke. Vielleicht haben Sie schon einmal in einer Werbung gehört, dass Daten wie Filme oder Musik in einer Cloud liegen. Aber was genau bedeutet das? Es stecken zwei Dinge

Mehr

1 Das Windows 10-Startmenü

1 Das Windows 10-Startmenü 1 Das Windows 10-Startmenü Nach dem Start des Computers wird der Desktop (Arbeitsfläche) angezeigt. Da Sie sich Ihr Windows fast nach Belieben einstellen können, sieht Ihr Desktop höchstwahrscheinlich

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr

Arbeiten mit Outlook Web Access und Outlook 2003

Arbeiten mit Outlook Web Access und Outlook 2003 Konfigurationsanleitung inode Hosted Exchange Arbeiten mit Outlook Web Access und Outlook 2003 Inhaltsverzeichnis 1. Grundlegendes...3 2. Online Administration...4 2.1 Mail Administration Einrichten des

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

Kurzanleitung für die mobile Novell Messenger 3.0.1-App

Kurzanleitung für die mobile Novell Messenger 3.0.1-App Kurzanleitung für die mobile Novell Messenger 3.0.1-App Mai 2015 Novell Messenger 3.0.1 und höher ist für unterstützte ios-, Android- und BlackBerry-Mobilgeräte verfügbar. Da Sie an mehreren Standorten

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

Dokumentation Softwareprojekt AlumniDatenbank

Dokumentation Softwareprojekt AlumniDatenbank Dokumentation Softwareprojekt AlumniDatenbank an der Hochschule Anhalt (FH) Hochschule für angewandte Wissenschaften Fachbereich Informatik 13. Februar 2007 Betreuer (HS Anhalt): Prof. Dr. Detlef Klöditz

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Matthias Furtmüller, Stefan Haselböck. Android

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

Mehr

Konfiguration und Verwendung von MIT - Hosted Exchange

Konfiguration und Verwendung von MIT - Hosted Exchange Konfiguration und Verwendung von MIT - Hosted Exchange Version 3.0, 15. April 2014 Exchange Online via Browser nutzen Sie können mit einem Browser von einem beliebigen Computer aus auf Ihr MIT-Hosted Exchange

Mehr

Übernahme der Termine aus dem Cisco-Calendar auf den eigenen Computer oder das Smartphone

Übernahme der Termine aus dem Cisco-Calendar auf den eigenen Computer oder das Smartphone Übernahme der Termine aus dem Cisco-Calendar auf den eigenen Computer oder das Smartphone Der erste Teil der Anleitung richtet sich vor allem an Schülerinnen und Schüler. Das Verfahren ist sehr einfach,

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Userhandbuch. Version B-1-0-2 M

Userhandbuch. Version B-1-0-2 M Userhandbuch Version B-1-0-2 M Inhaltsverzeichnis 1.0 Was bietet mir SERVRACK?... 3 1.1 Anmeldung... 3 1.2 Passwort vergessen?... 3 1.3 Einstellungen werden in Realtime übernommen... 4 2.0 Die SERVRACK

Mehr

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

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

Mehr

Teil 6 Kontakt, E-Mail Index

Teil 6 Kontakt, E-Mail Index HANDBUCH Inhalt Teil 1 Übersicht I 1 1 Was ist... der Chico Browser 1 2 Rechtliche... Bestimmungen 2 3 So funktioniert... der Chico Browser 3 Kom ponenten... 3 Kategorien und... URL Gruppen 3 Benutzer

Mehr

Anwendungsbeschreibung Tobit David.fx Client Web

Anwendungsbeschreibung Tobit David.fx Client Web Anwendungsbeschreibung Tobit David.fx Client Web Stand: Oktober 2009 ...Inhalt Inhalt Inhalt...1-2 1.) Vorabinformation...1-3 2.) Starten des David.fx Client Web im Browser...2-3 3.) Arbeiten mit E-Mails...3-11

Mehr

Handbuch zu AS Connect für Outlook

Handbuch zu AS Connect für Outlook Handbuch zu AS Connect für Outlook AS Connect für Outlook ist die schnelle, einfache Kommunikation zwischen Microsoft Outlook und der AS Datenbank LEISTUNG am BAU. AS Connect für Outlook Stand: 02.04.2013

Mehr

Installations- und Bedienungshinweise für die neue SchulfixApp

Installations- und Bedienungshinweise für die neue SchulfixApp Installations- und Bedienungshinweise für die neue SchulfixApp Systemvoraussetzungen: Deskop-PC kostenpflichtige Freischaltung des Zusatzmoduls SchulfixApp Schulfix ab Version 8.3.4 Windows XP (SP2) oder

Mehr

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

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

Mehr

5 Modern UI und Desktop

5 Modern UI und Desktop Modern UI und Desktop 5 Modern UI und Desktop 5.1 Modern UI und Desktop Die augenfälligste Änderung in Windows 8 gegenüber allen früheren Windows-Versionen ist die sogenannte Modern UI (ursprünglich Metro-Oberfläche"),

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

Internetauftritt: Hochschulpartnerschaften - Datenbank

Internetauftritt: Hochschulpartnerschaften - Datenbank Hochschule für Technik, Wirtschaft und Kultur Leipzig (FH) University of Applied Sciences Internetauftritt: Hochschulpartnerschaften - Datenbank Modul: Anleitung für Typo3 bzgl. Partnerhochschulen einpflegen

Mehr

Anleitung für Klassenlehrkräfte zur

Anleitung für Klassenlehrkräfte zur Seite 1/17!!! WICHTIG!!! Es wird JEDER Klassenlehrkraft empfohlen, die Reihenfolge der Erste Schritte Anleitung genau und vollständig einzuhalten. Meine Kundennummer: Meine Schulnummer: Mein Passwort:

Mehr

Hinweise zu Java auf dem Mac:

Hinweise zu Java auf dem Mac: Hinweise zu Java auf dem Mac: 1. Möglichkeit zum Überprüfen der Java-Installation / Version 2. Installiert, aber im Browser nicht AKTIVIERT 3. Einstellungen in der Java-KONSOLE auf Deinem MAC 4. Java Hilfe

Mehr

Zeiterfassung-Konnektor Handbuch

Zeiterfassung-Konnektor Handbuch Zeiterfassung-Konnektor Handbuch Inhalt In diesem Handbuch werden Sie den Konnektor kennen sowie verstehen lernen. Es wird beschrieben wie Sie den Konnektor einstellen und wie das System funktioniert,

Mehr

Outlook - CommuniGate Pro Schnittstelle installieren. Outlook - Elemente freigeben. Outlook - Freigegebene Elemente öffnen

Outlook - CommuniGate Pro Schnittstelle installieren. Outlook - Elemente freigeben. Outlook - Freigegebene Elemente öffnen Microsoft Outlook 1 Nutzung der Groupware mit Microsoft Outlook 1.1 Outlook - CommuniGate Pro Schnittstelle installieren 4 1.2 Outlook - Elemente freigeben 11 1.3 Outlook - Freigegebene Elemente öffnen

Mehr

RÖK Typo3 Dokumentation

RÖK Typo3 Dokumentation 2012 RÖK Typo3 Dokumentation Redakteur Sparten Eine Hilfe für den Einstieg in Typo3. Innpuls Werbeagentur GmbH 01.01.2012 2 RÖK Typo3 Dokumentation Inhalt 1) Was ist Typo3... 3 2) Typo3 aufrufen und Anmelden...

Mehr

3.2 Android-Praxis Kalender richtig synchronisieren

3.2 Android-Praxis Kalender richtig synchronisieren 3. Android im Business 3.2 Android-Praxis Kalender richtig synchronisieren Wer unterwegs seine Termine verwalten oder überprüfen will, hat mit Android- Smartphones und -Tablets zahlreiche Möglichkeiten

Mehr

Installationsanleitung Webhost Linux Flex

Installationsanleitung Webhost Linux Flex Installationsanleitung Webhost Linux Flex Stand März 2014 Inhaltsverzeichnis 1. Zugangsdaten & Login... 3 2. Passwort ändern... 4 3. Leistungen hinzufügen / entfernen... 6 4. Datenbanken anlegen / entfernen...

Mehr

2 DAS BETRIEBSSYSTEM. 2.1 Wozu dient das Betriebssystem. 2.2 Die Bildschirmoberfläche (Desktop) Themen in diesem Kapitel: Das Betriebssystem

2 DAS BETRIEBSSYSTEM. 2.1 Wozu dient das Betriebssystem. 2.2 Die Bildschirmoberfläche (Desktop) Themen in diesem Kapitel: Das Betriebssystem 2 DAS BETRIEBSSYSTEM Themen in diesem Kapitel: Das Betriebssystem Die Windows-Oberfläche Elemente eines Fensters 2.1 Wozu dient das Betriebssystem Das Betriebssystem (engl.: operating system, kurz: OS)

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

VdKKasse - Handbuch. OC-Anwendungsentwicklung und Datenbanken Berlin, Stresemannstr. 30 Paul-Singer-Haus. (Stand 08.2013)

VdKKasse - Handbuch. OC-Anwendungsentwicklung und Datenbanken Berlin, Stresemannstr. 30 Paul-Singer-Haus. (Stand 08.2013) OC-Anwendungsentwicklung und Datenbanken Berlin, Stresemannstr. 30 Paul-Singer-Haus Im Auftrag des Sozialverband VdK Nordrhein-Westfalen e.v. VdKKasse - Handbuch (Stand 08.2013) Herausgeber Office Consult

Mehr

Windows Live Mail Konfiguration IMAP

Windows Live Mail Konfiguration IMAP Windows Live Mail Konfiguration IMAP Einrichten eines IMAP-Kontos unter Windows Live Mail zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Windows Live Mail ist der Nachfolger

Mehr

Das Studiengangsinformationssystem (SGIS)

Das Studiengangsinformationssystem (SGIS) Das Studiengangsinformationssystem (SGIS) Manual für Typo3-Redakteure Version 1.a Mai 2015 Kontakt: Referat 1.4 - Allgemeine Studienberatung und Career Service Christian Birringer, christian.birringer@uni-rostock.de

Mehr

a) WebDav-Laufwerk einrichten (Windows Vista, W7, W8) Seite 2

a) WebDav-Laufwerk einrichten (Windows Vista, W7, W8) Seite 2 DIANIZER 3.0 WEB einrichten Inhalt a) WebDav-Laufwerk einrichten (Windows Vista, W7, W8) Seite 2 b) Dianizer WEB einrichten Seite 5 b1) Rufen Sie Ihre Wunsch-Subdomain auf. Seite 5 b2) Melden Sie sich

Mehr

Mobile App Development. - Grafische Oberflächen 2 -

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

Mehr

Inhaltsverzeichnis. Allgemein... 2 Hochladen & Erstellen... 3 Dateien wiederherstellen... 3

Inhaltsverzeichnis. Allgemein... 2 Hochladen & Erstellen... 3 Dateien wiederherstellen... 3 Einführung: Unser Produkt «Hosted Drive» basiert auf der Cloud-Software OwnCloud. Mit OwnCloud stehen dem Benutzer unzählige Möglichkeiten offen, die Cloud Speichertechnik zu verwenden. Deshalb haben wir

Mehr

Password Depot für Android

Password Depot für Android Password Depot für Android * erfordert Android Version 2.3 oder höher Oberfläche... 3 Action Bar... 3 Overflow-Menü... 3 Eintragsleiste... 5 Kontextleiste... 5 Einstellungen... 6 Kennwörterdatei erstellen...

Mehr

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung Dipl.

Mehr

Signieren und Verschlüsseln mit Outlook 2013

Signieren und Verschlüsseln mit Outlook 2013 Anleitung: Von Tobias Neumayer (support@thi.de) MAIL-VERSCHLÜSSELUNG / SIGNIERUNG Einführung Die meisten Mailprogramme unterstützen den Umgang mit S/MIME-Zertifikaten zur Verschlüsselung bzw. Signierung

Mehr

Arbeiten mit UAG. Inhaltsverzeichnis. 1. Einleitung. 2. Voraussetzungen

Arbeiten mit UAG. Inhaltsverzeichnis. 1. Einleitung. 2. Voraussetzungen Arbeiten mit UAG Inhaltsverzeichnis 1. Einleitung...1 2. Voraussetzungen...1 2.1. Windows...1 2.2. Mac OS X...1 3. Dienste und Programme...2 4. Vorgehen mit Windows 7...2 4.1. Eintragen der SRZA-Adresse

Mehr

Fork Leitfaden. BibApp Android

Fork Leitfaden. BibApp Android Fork Leitfaden BibApp Android letzte Aktualisierung: 24. April 2013 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 2 2 Eclipse Projekt 2 3 Abhängigkeiten 2 4 Konfiguration 3 4.0.1 Paketname...............................

Mehr