Entwicklung einer Applikation für mobile Endgeräte mit Anbindung an bestehende Server-Software

Größe: px
Ab Seite anzeigen:

Download "Entwicklung einer Applikation für mobile Endgeräte mit Anbindung an bestehende Server-Software"

Transkript

1 Bachelor Thesis zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) an der Fachhochschule Dortmund im Fachbereich Informatik im Studiengang Praktische Informatik Entwicklung einer Applikation für mobile Endgeräte mit Anbindung an bestehende Server-Software Auswahl einer Entwicklungsplattform und Realisierung eines Sportwetten-Prototyps auf Basis von Android Autor: Marco Alexander Schmitz Matrikel-Nr.: Erstprüfer: Prof. Dr. Johannes Ecke-Schüth Zweitprüfer: Prof. Dr. Sabine Sachweh Abgabe am:

2

3 Inhaltsverzeichnis III Inhaltsverzeichnis 1 Einleitung Motivation Hintergrund Vorgehen Wahl einer geeigneten Entwicklungsplattform Java Platform, Micro Edition Übersicht der Java-Plattformen Architektur Softwareentwicklung Alternative GUI Frameworks Zusammenfassung und Bewertung Apple iphone Produktlinie Betriebssystem itunes und Alternativen Softwareentwicklung Zusammenfassung und Bewertung Google Android Google Inc Android Open Handset Alliance Android Developer Challenge Zusammenfassung und Bewertung Gegenüberstellung und Bewertung der Plattformen Android im Detail Architektur Applications Application Framework Libraries Android Runtime Linux Kernel... 36

4 Inhaltsverzeichnis IV 3.2 Software Development Kit Entwicklungswerkzeuge Android Emulator Hierarchy Viewer Draw 9-patch Dalvik Debug Monitor Service Android Debug Bridge Android Asset Packaging Tool Android Interface Description Language sqlite mksdcard Dalvik Cross-Compiler UI/Application Exerciser Monkey activitycreator Android Development Toolkit Plug-In für Eclipse Endgeräte mit Android-Betriebssystem T-Mobile G1 HTC Dream Vodafone G2 HTC Magic HTC Hero Kogan Agora Lenovo OPhone Samsung I7500 Galaxy Entwicklung eines Anmeldeformulars Anforderungen Erstellung von einem Android Project Manifest Strings-Ressource Layout Ressourcen in Java Activity Lebenszyklus einer Activity Umsetzung Layout Benutzerereignisse... 63

5 Inhaltsverzeichnis V Modaler Fehlerdialog Kontextmenü Persistenz Anpassung der GUI-Komponenten Hintergrundgrafik Button mit NinePatch-Grafik Internationalisierung Strings-Ressource Umschalten der Ländereinstellung Entwicklung eines Sportwetten-Prototyps Sportwetten Grafische Benutzerschnittstelle Aktivitätsdiagramm Listen Dynamisches Layout mit Java Integration des Frameworks log4j log4j Probleme bei der Integration Logging mit Android Problemlösungen Integration der bestehenden Klasse EntityStore Serialisierung und Deserialisierung Fehlende Klassen Core-Library Dependency Viewer Classycle Ant Verarbeitung der XML-Datei Algorithmus Ausgabe als HTML DependencyViewer als Ant-Task Serveranbindung Servlet Client... 90

6 Inhaltsverzeichnis VI 6 Fazit Abkürzungsverzeichnis Abbildungsverzeichnis Tabellenverzeichnis Literaturverzeichnis Eidesstattliche Erklärung

7 1 Einleitung 1 1 Einleitung Dieses Kapitel bietet eine Einleitung in das Thema Entwicklung einer Applikation für mobile Endgeräte mit Anbindung an bestehende Server-Software Auswahl einer Entwicklungsplattform und Realisierung eines Sportwetten-Prototyps auf Basis von Android. Im ersten Abschnitt wird die Entwicklung einer solchen Applikation motiviert. Anschließend wird der Hintergrund dieser Arbeit geschildert. Im letzen Abschnitt wird das Vorgehen dieser Arbeit beschrieben. 1.1 Motivation Spiele, Routenplaner, Wetterinfos, Trinkgeldrechner und so weiter stündlich steigt die Zahl der Anwendungen, die man aufs Handy laden kann. Offiziell heißen die Programme mobile Applikationen, umgangssprachlich werden sie Apps genannt. In Apples App Store gibt es davon die größte Auswahl: mehr als Anwendungen. Die Amerikaner haben im Geschäft mit den mobilen Applikationen die Nase vorn im Juli 2009, ein Jahr nach Eröffnung des App Stores, wurde bereits die Marke von 1,5 Milliarden Downloads durchbrochen. [ ] Der Geschäftserfolg des App Stores hat die Wettbewerber auf den Plan gerufen: Nokias Ovi Store ist im Mai 2009 an den Start gegangen. [ ] Googles Pendant, der Android Market, bietet sogar über Programme für diverse Mobiltelefon-Modelle an. [ ] Blackberry betreibt die App World, und vor kurzem hat Sony Ericsson die Pforten der PayNow Arena für Spiele, Musik und anderes eröffnet. Und die Zahl der appfähigen Mobiltelefone wächst stetig Hintergrund In dem Zeitraum bis hat der Autor freiberuflich für die Firma netzprofis GmbH & Co. KG in Dortmund gearbeitet 2. Das mittelständische Unternehmen, unter der Geschäftsführung von Dipl.-Inf. Thomas Louis und Dipl.-Inf. Marcel Gleis, ist spezialisiert auf die Entwicklung von Individualsoftware für Unternehmen. Für die Firma Booxware GmbH, mit Geschäftssitz in Karlsruhe, wird seit vielen Jahren komplexe Software im Bereich der Sportwetten entwickelt, getestet und gepflegt. Der Autor wurde damit beauftragt, diese in der Programmiersprache Java geschriebene Software auf mobile Endgeräte nachzubilden und dabei möglichst viele Quelltexte zu adaptieren. Nach sorgfältiger Recherche und Evaluation fiel die gemeinsame Wahl auf die Entwicklungsplattform Android. 1 [Davi09] 2 Fortan wird die Firma netzprofis GmbH & Co. KG als Auftragsgeber bezeichnet.

8 1 Einleitung Vorgehen Am Anfang steht die Wahl einer geeigneten Entwicklungsplatform für mobile Endgeräte. Es werden Java ME, iphone und Android einzeln vorgestellt und bewertet. Am Ende des Kapitels erfolgen eine Gegenüberstellung und die Entscheidungsfindung. In Kapitel 3 wird Android detailliert betrachtet. Hierbei stehen die die Architektur, das SDK und die Entwicklungswerkzeuge im Mittelpunkt. Der letzte Abschnitt gilt den Endgeräten mit Android-Betriebssystem samt kritischen Stimmen. Kapitel 4 beinhaltet die exemplarische Entwicklung einer Anmeldeformular-Applikation mit Android. Nach der Zusammenfassung der Anforderungen wird gezeigt, wie mit der Eclipse ein Projekt erstellt und die Anforderungen umgesetzt werden. Anschließend werden GUI- Komponenten angepasst und die Applikation internationalisiert. Kapitel 5 erklärt Sportwetten im Allgemeinen und die Realisierung des Prototyps. Aufgrund der Schwierigkeiten bei der Integration bestehender Java-Bibliotheken in Android wird ein spezielles Werkzeug zur Darstellung von Abhängigkeitsbäumen entwickelt und vorgestellt. Im Anschluss daran wird der Prototyp an bestehende Server-Software angebunden. Im letzen Kapitel folgt das Fazit, in dem die Umsetzung bewertet wird und gewonnene Erkenntnisse und Erfahrungen geschildert werden.

9 2 Wahl einer geeigneten Entwicklungsplattform 3 2 Wahl einer geeigneten Entwicklungsplattform In diesem Kapitel wird nach einer geeigneten Entwicklungsplattform für mobile Endgeräte gesucht. Oberstes Ziel ist es, möglichst viele Java-Quelltexte der bereits existierenden Software aus dem Bereich der Sportwetten zu adaptieren. Zur Wahl dabei stehen: Plattform Beschreibung Java ME seit vielen Jahren etablierter Standard im Java-Umfeld Apple iphone modernes Smartphone mit ansprechender Oberfläche Google Android Betriebssystem und Softwareplattform für Smartphones und Mobiltelefone Tab. 1: Übersicht Entwicklungsplattformen In den ersten drei Unterkapiteln werden die Plattformen einzeln vorgestellt und bewertet. Am Ende des Kapitels erfolgen eine Gegenüberstellung und die Auswahl der geeigneten Entwicklungsplattform. 2.1 Java Platform, Micro Edition In diesem Unterkapitel wird die Java Platform, Micro Edition vorgestellt. Im ersten Schritt wird diese unter den anderen existierenden Java-Plattformen eingeordnet und die Architektur erläutert. Anschließend wird untersucht, wie Software mit Java ME entwickelt wird, welche Werkzeuge existieren und welche zusätzlichen oder alternativen Frameworks benötigt werden. Im letzen Abschnitt erfolgt eine Zusammenfassung und Bewertung Übersicht der Java-Plattformen Auf der weltweit größten Java-Entwicklerkonferenz, der JavaOne in San Francisco stellte Alan Baratz, Präsident von Java-Software, 1999 die neue Plattformarchitektur vor [sic!]. Die etablierte Java 2 Technologie wurde aufgrund der Komplexität und des wachsenden Marktes in drei Ausbaustufen unterteilt: die Java 2 Enterprise Edition (J2EE) für den Einsatz auf Serversystemen, die Java 2 Standard Edition (J2SE) für normale Desktoprechner und die Java 2 Micro Edition, welche speziell auf Nicht-PC-Geräte zugeschnitten ist. 3 Folgende Abbildung zeigt die unterschiedlichen Java-Plattformen: 3 [Karb05, S. 9]

10 2 Wahl einer geeigneten Entwicklungsplattform 4 Abb. 1: Die unterschiedlichen Java-Plattformen [Java09] Die Java-Plattformen Java Platform, Enterprise Edition (Java EE) 4 und Java Platform, Standard Edition (Java SE) 5 können für mobile Endgeräte nicht verwendet werden, da diese aufgrund der Batterietechnologie bezüglich Prozessorleistung und Speicherausstattung eingeschränkt sind. Ebenfalls ist die Größe des Displays beschränkt, da der Trend zu immer kleineren Geräten geht Architektur Um der ungeheuren Vielfalt an technischen Möglichkeiten gerecht zu werden besteht die Plattform Java Platform, Micro Edition (Java ME) 6 aus einer Vielzahl Spezifikationen und Technologien, die speziell für mobile Endgeräte zugeschnitten sind. Die Architektur basiert auf Konfigurationen, die von Profilen erweitert werden. Hinzu kommen optionale Pakete für Spezialfälle wie XML-Parser oder Datenbankanbindungen. Es lassen sich zwei Konfigurationen unterscheiden: 7 Connected Device Configuration (CDC) Connected Limited Device Configuration (CLDC) 4 Wurde früher auch als Java 2 Enterprise Edition (J2EE) bezeichnet. 5 Wurde früher auch als Java 2 Standard Edition (J2SE) bezeichnet. 6 Wurde früher auch als Java 2 Micro Edition (J2ME) bezeichnet. 7 Vgl. [BrMo06, S. 19 f.]

11 2 Wahl einer geeigneten Entwicklungsplattform 5 CDC und CLDC Das CDC ist für leistungsfähige High-End PDAs und eingebettete Geräte ausgelegt. Hier wird von mindestens 2 MB Speicher ausgegangen. Enthalten ist eine Java Virtual Machine (JVM), ein minimierter Satz von Klassenbibliotheken, das Foundation Profile und das Personal Profile. 8 Das CLDC wurde für einfache PDAs und Mobiltelefone mit langsamen Prozessoren und wenig Speicherplatz entwickelt. Die Kilobyte Virtual Machine (KVM) arbeitet mit 128 KB bis 512 KB Speicher und ist als Untermenge der normalen JVM zu verstehen. Zusammen mit dem Mobile Information Device Profile (MIDP) stellt es folgende benötigte Kernfunktionen für mobile Anwendungen zur Verfügung: 9 Netzwerkanbindung Lokale Datenhaltung Benutzerschnittstelle Anwendungsmanagement Einschränkungen Die Klassenbibliotheken von CLDC und KVM sind im Vergleich zu J2SE reduziert und auch im Funktionsumfang eingeschränkt. Zusammengefasst sind die folgenden Änderungen: 10 Bei der Oberklasse Object wurden die Methoden clone und finalize entfernt. Die Fehlerbehandlung ist insofern vereinfacht, als dass ein Error-Objekt zurückgegeben wird. Der ClassLoader kann nicht durch einen eigenen ausgetauscht werden. Die Klasse ThreadGroup wurde entfernt. Für Klassen, die von Thread erben, gibt es die Methode setdaemon nicht mehr, so dass keine Daemon Threads mehr möglich sind. Es werden asynchrone Exceptions nicht unterstützt. Es erfolgt immer eine Verifizierung des Bytecodes von Java-Programmen Softwareentwicklung In diesem Unterkapitel werden unterschiedliche Werkzeuge vorgestellt, die für die Entwicklung einer Software mit Java ME benötigt werden. Anschließend werden die APIs für die grafische Benutzeroberfläche vorgestellt. Sun Java Wireless Toolkit for CLDC (WTK) Um eine Java ME Anwendung, MIDlet genannt, für die Konfiguration CLDC und das Profil MIDP zu entwickeln, wird neben einem Texteditor und einem installiertem Java SE SDK noch das Sun Java Wireless Toolkit for CLDC (WTK) benötigt. Dieses aus mehreren 8 Vgl. [BrMo06, S. 19 f.] 9 [BrMo06, S. 20] 10 Vgl. [BrMo06, S. 36 f.]

12 2 Wahl einer geeigneten Entwicklungsplattform 6 Komponenten bestehende Werkzeug bietet die Möglichkeit Projekte anzulegen und zu laden, die Quelltexte zu kompilieren und den Bytecode zu verifizieren. Um das MIDlet zu testen sind verschiedene Emulatoren enthalten. Folgende Abbildung zeigt die verschiedenen Emulatoren vom WTK 2.2: Abb. 2: Verschiedenen Emulatoren vom WTK 2.2 [Karb05, S. 52] Das erzeugte MIDlet besteht aus zwei Dateien, dem Java Archive (JAR) mit den komprimierten Kompilaten, Bibliotheken und Metadaten sowie dem zugehörigen Java Application Descriptor (JAD), einer Textdatei mit Informationen über Konfiguration, Profil, Name und Icon der Anwendung und einer Referenz auf das JAR. Zum Ausführen der Anwendung auf einem Mobiltelefon müssen beide Dateien mittels Bluetooth oder USB- Datenkabel übertragen und anschließend installiert werden. Alternativ besteht die Möglichkeit die Dateien auf einen Webserver zu legen und vom Mobiltelefon aus herunterzuladen. Dies wird als Over The Air (OTA) Provisioning bezeichnet. 11 Obfuscator Es besteht die Möglichkeit einen Obfuscator in den Entwicklungsprozess zu integrieren. Dabei handelt es sich um ein Programm, welches den erzeugten Bytecode verschleiert. Dadurch wird das MIDlet vor Revere Engineering geschützt und der Code minimiert. Denn im Bytecode sind immer noch viele Informationen wie Zeilennummern oder die Namen von Variablen, Methoden und Parameter enthalten. Diese werden vom Obfuscator durch sinnlose und meistens kürzere Zeichenketten ersetzt. Die unter die GNU General Public License (GPL) gestellte Software ProGuard ist ein typischer Vertreter und im Java ME Umfeld weit verbreitet. EclipseME Für die integrierte Entwicklungsumgebung (IDE) Eclipse existiert das Plug-In namens EclipseME, welches im Juni 2009 umgetauft wurde in Eclipse Mobile Tools for Java (MTJ). 14 Dadurch ist es sowohl möglich MIDlets innerhalb einer IDE zu programmieren, zu starten als 11 Vgl. [Uebe] 12 Vgl. [BrMo06, S. 26] 13 Vgl. [Lafo09] 14 Vgl. [Sete09]

13 2 Wahl einer geeigneten Entwicklungsplattform 7 auch auszuliefern. Hervorzuheben ist die Möglichkeit des Debuggings, welche den Benutzern von WTK nicht zugänglich ist. Zusätzlich werden folgende Toolkits anderer Hersteller, bestehend aus Konfigurationen, Profilen, optionalen Paketen und Emulatoren, unterstützt: 15 MOTODEV 16 SDK for JavaME Nokia SDK S40/S60 Sony Ericsson J2ME SDK Sprint PCS Wireless Toolkit for Java Siemens SMTK for Series 60 MPowerPlayer MicroEmulator MPowerPlayer MPowerPlayer ist zwar aus technischer Sicht ein freier Java ME Emulator, aber das Kerngeschäft des Unternehmens mplayit besteht darin, der Industrie für Videospiele ein Webportal bereitzustellen, in dem Videospiele in beschränkter Version für Mobiltelefone getestet werden können. Mittels der Technologien Java-Applet und Java Web Start wird der Emulator in Webseiten integriert bzw. mit nur einem Klick ausgeführt. 17 Folgende Abbildung zeigt MPowerPlayer im Webbrowser Firefox mit dem Spiel Guitar Hero: Abb. 3: MPowerPlayer im Webbrowser Firefox mit dem Spiel Guitar Hero [Mpla09a] 15 Vgl. [Dsdp] 16 MOTODEV ist das Motorola Developer Network 17 Vgl. [Mpla09b]

14 2 Wahl einer geeigneten Entwicklungsplattform 8 MicroEmulator Das Projekt MicroEmulator wurde im Jahr 2001 gegründet und ist unter die GNU Lesser General Public License (LGPL) gestellt. Es ist eine reine Java SE-Implementierung von Java ME. Der Emulator wird mittels der Techniken Java Web Start und Java-Applet für Webseiten bereitgestellt. Dem Entwickler wird direkter Zugriff auf das Subversion (SVN) Projektarchiv gewährt und Möglichkeiten für automatisierte Lasttests bereitgestellt. Die Oberfläche des Emulators ist mittels Skins beliebig gestaltbar, so dass das Aussehen jeglicher Mobiltelefone angenommen werden kann. Es ist anzumerken, dass MPowerPlayer auf MicroEmulator basiert. 18 Graphical User Interface Damit der Entwickler auf das Display des Mobiltelefons zugreifen kann, werden vom MIDP sowohl ein Low- als auch ein High-Level API zur Verfügung gestellt. Unter der Angabe von Koordinaten können mit dem Low-Level API Pixel, Kreise, Linien oder Vierecke gezeichnet werden. 19 Das High-Level API hingegen enthält vordefinierte Elemente wie: Textausgabefeld Checkbox Radiobutton Liste Form Fortschrittsbalken 20 Texteingabefeld. Das Aussehen und das Bedienungskonzept hängen dabei vom jeweiligen Mobiltelefon bzw. von der Implementierung des Herstellers ab. Der Entwickler hat hier kaum Möglichkeiten das Aussehen maßgeblich zu beeinflussen. Dadurch ist eine mit dem High-Level API entwickeltes Graphical User Interface (GUI) sehr leicht zu portieren. 21 Folgende Abbildung zeigt die Klassenhierarchie für darstellbare Elemente des MIDP : Vgl. [Micr09] 19 Vgl. [SzRö06] 20 Fortschrittsbalken werden im Java ME Umfeld Gauge genannt 21 Vgl. [Karb05, S. 24] 22 [SzRö06]

15 2 Wahl einer geeigneten Entwicklungsplattform 9 Abb. 4: Klassenhierarchie für darstellbare Elemente des MIDP [SzRö06] Auch wenn vieles für den Einsatz vom High-Level API spricht, so es ist nicht von der Hand zu weisen, dass das API bereits zehn Jahre alt ist. Seitdem hat sich das Design von Anwendungen, Betriebssystemen, Webseiten und Mobiltelefonen stark gewandelt. Um dem Geist der Zeit zu entsprechen, sollte eine moderne Anwendung für Mobiltelefone vor allem visuell ansprechend sein. Gemäß dem Motto ein Bild sagt mehr als tausend Worte wird nun ein typisches MIDlet dargestellt, entwickelt mit dem High-Level API von Java ME, bestehend aus: einer Form namens Sign in zwei Texteingabefeldern mit den Bezeichnungen LoginID und Password zwei Buttons mit den Beschriftungen Cancel und Login Folgende Abbildung zeigt exemplarisch ein Login MIDlet: Abb. 5: Login MIDlet [Logi08]

16 2 Wahl einer geeigneten Entwicklungsplattform Alternative GUI Frameworks Es wurden viele unabhängige Frameworks entwickelt, mit dem Ziel, Java ME um eine moderne Oberfläche zu erweitern und Anwendungen für Mobiltelefone optisch viel ansprechender zu gestalten. Einige dieser GUI Frameworks werden nun vorgestellt und näher betrachtet. Micro Window Toolkit Das Open Source Framework Micro Window Toolkit (MWT) wurde speziell für kleine Geräte entwickelt. Inspiriert wurde es von Java SE Frameworks Abstract Window Toolkit (AWT), Swing und Standard Widget Toolkit (SWT). Es bietet die Möglichkeit bestehende Komponenten anzupassen. Eine Stärke besteht darin, grafische Schriftarten (Bitmap Fonts) zu benutzen, für deren Erstellung das Werkzeug MicroFont-Maker bereitgestellt wird. Das Framework ist mit 10 KB extrem klein. Dieses Framework wird nicht weiter gepflegt, denn das letze Update stammte von Anfang Es liegen Dokumentationen in Form mehrerer kleiner Tutorials und als Javadoc vor. Folgende Abbildung zeigt mehrere Demo-MIDlets: 23 Abb. 6: Demo-MIDlets vom Micro Window Toolkit [Micr07b] Aufgrund dieser Screenshots erscheint das Framework für seriöse Anwendungen wenig geeignet. Die Oberfläche wirkt sehr verspielt und die Demos konnten nicht überzeugen, da sie wie auf der Webseite vorgestellt, nur ein Viertel des Displays ausfüllen. 23 Vgl. [Micr07a]

17 2 Wahl einer geeigneten Entwicklungsplattform 11 Light-Weight Visual Component Library Das Framework Light-Weight Visual Component Library (LwVCL) ist für die Softwareplattformen.NET, Java SE, Java ME und Standard Widget Toolkit (SWT) ausgelegt. Die Grafikbibliothek umfasst rund 30 Komponenten, darunter Button, Label, Panel, aber auch komplexere wie Grid und Tree. 24 Es existieren zwei verschiedene Arten von Lizenzen, zum einen die GNU General Public License (GPL) und zum anderen eine kommerzielle mit folgender Staffelung: 25 Lizenz Beschreibung Corporate 480 EUR pro Entwickler einer Firma Corporate Unlimited EUR für sämtliche Entwickler einer Firma Individual 29 EUR für eine Privatperson Tab. 2: Kommerzielle Lizenzen für LwVCL Bis auf den Java ME-Branch liegen für die Plattformen Dokumentationen in Form von Tutorial, How-To, FAQ und API vor. Mit 160 KB für Java und 200 KB für.net ist die Bibliothek relativ klein. Folgende Abbildung zeigt mehrere Screenshots vom Demo-MIDlet: Abb. 7: Demo-MIDlet von der Light-Weight Visual Component Library [Vish06c] Für Entwickler, die eine Anwendung für mehrere Plattformen entwickeln möchten, hat dieses Framework seine Vorteile. Auch für Java ME bringt es den Vorteil zahlreicher Komponenten mit sich. Optisch wirkt LwVCL überarbeitungsbedürftig. Transitionen zum Ein- und Ausblenden von Screens sowie Transparenzeffekte wie Schatten fehlen gänzlich. 24 Vgl. [Vish06a] 25 Vgl. [Vish06b]

18 2 Wahl einer geeigneten Entwicklungsplattform 12 TagsMe Das kommerzielle Framework TagsMe stammt von dem spanischen Unternehmen Media Delivery Technologies SL. Vertrieben wird das Framework auf der Homepage vom Unternehmen als Bestandteil der Entwicklungsplattform TagsMe GUI, die auf der IDE NetBeans basiert. Entwickelt werden Anwendungen für Mobiltelefone in XML und einer einfachen Script Sprache. Auch wenn aus technischer Sicht Java ME-MIDlets erzeugt werden, so bleibt dies vor dem Entwickler verborgen bzw. hat dieser keinerlei Möglichkeit eigene Java-Quelltexte zu integrieren. Die IDE TagsMe GUI bietet neben typischer Funktionalitäten wie Syntax Highlighting, Autoformatter, Code Completion und XML Validierung mittels XSD auch die bereits besprochene Java ME-Implementierung MicroEmulator, in dem die Anwendung bereits beim Editieren betrachtet werden kann Folgende Abbildung zeigt die Entwicklungsplattform TagsMe GUI: Abb. 8: Entwicklungsplattform TagsMe GUI [Tags09b] Das Framework beinhaltet ein weit gefächertes Spektrum an GUI-Komponenten. Hinzu kommen zahlreiche Animationen, mit denen Komponenten oder ganze Screens beliebig ein- und ausgeblendet werden können. Vervollständigt wird die Funktionsvielfalt von Audiounterstützung und Mehrsprachigkeit. Die Dokumentation ist ebenso umfassend wie gut verständlich und wird von Video-Tutorials abgerundet. Folgende Abbildung zeigt mehrere Screenshots der Demo-Anwendung: 26 Vgl. [Tags09a] 27 Vgl. [Tags09b]

19 2 Wahl einer geeigneten Entwicklungsplattform 13 Abb. 9: Demo-Anwendung von TagsMe [Tags09c] Für Entwickler, die eine Anwendung für Mobiltelefone auf Basis von XML entwickeln wollen, ist dieses Framework samt Entwicklungsumgebung geeignet. Der Funktionsumfang ist vielfältig, und auch optisch ist TagsMe ansprechend. Die fehlende Java-Anbindung ist dafür verantwortlich, dass dieses Framework nicht eingesetzt werden kann.

20 2 Wahl einer geeigneten Entwicklungsplattform 14 Lightweight User Interface Toolkit Das Lightweight User Interface Toolkit (LWUIT) von Sun Microsystems wurde ursprünglich von einem Angestellten für ein internes Projekt entwickelt. Nachdem das Toolkit stark gewachsen war und sich immer größerer Beliebtheit erfreute, wurde es als Open Source freigegeben. Das Framework ist stark an die Grafikbibliothek Swing angelehnt. Es werden folgende GUI-Komponenten angeboten: Form Label Button RadioButton ButtonGroup ComboBox TextArea TabbedPane Die Anordnung der Komponenten erfolgt durch folgende Layout-Manager, die bereits durch Swing bekannt sind: BorderLayout BoxLayout FlowLayout GridLayout GroupLayout Das optische Erscheinungsbild aller Komponenten kann bezüglich Farbe, Bild, Schriftart, Transparenz, Rahmen, Margin und Padding frei gestaltet werden. Hinzu kommen viele Effekte, Animationen und Transitionen, mit denen Komponenten und Screens ein- und ausgeblendet werden können. Die Unterstützung von Logging, Mehrsprachigkeit und 3D runden das Framework ab. Für die Trennung von Quellcode und Design wurden Themes eingeführt. Dabei beinhaltet ein Theme die Gestaltungsvorschriften aller Komponenten. Ein Theme wird in einer Ressource gespeichert, welche komfortabel mit dem LWUIT Resource Editor editiert werden kann. Folgende Abbildung zeigt den LWUIT Resource Editor: Vgl. [Sun09]

21 2 Wahl einer geeigneten Entwicklungsplattform 15 Abb. 10: LWUIT Resource Editor [Knud08] Innerhalb einer Anwendung kann der Benutzer das Theme umschalten. Folgende Abbildung zeigt mehrere Screenshots der Demo Anwendung, einmal mit Star Theme und einmal den gleichen Screen mit Java Theme: Abb. 11: Demo Anwendung von LWUIT [Knud08] Durch die Anlehnung an Swing wird dem Entwickler der Einstieg erleichtert. Die Auslagerung in Ressourcen hat den Vorteil, dass hier eine Arbeitsteilung zwischen Entwickler und Designer stattfinden kann. Inhaltlich wirkt das Framework vollständig, da alle üblichen Komponenten bereitgestellt werden. Die Dokumentation ist mit Javadocs und einem über 120 Seiten langem E-Book ebenso umfangreich. Einziges Manko an dem Framework ist die Performance. Die Reaktionsgeschwindigkeit ist spürbar träge, und die Transitionen und Animationen könnten flüssiger sein.

22 2 Wahl einer geeigneten Entwicklungsplattform Zusammenfassung und Bewertung Die Java Platform, Micro Edition wurde vor rund 10 Jahren entwickelt und stellt ein reduziertes Java, spezialisiert für mobile Endgeräte, dar. Die technische Vielfalt dieser Geräte wird dabei auf eine Architektur von Konfigurationen und Profilen abgebildet. Für die Entwicklung einer grafischen Oberfläche werden zwei APIs bereitgestellt, mit denen der Entwickler entweder eigene pixelgenaue Zeichenroutinen implementiert oder vordefinierte Elemente benutzt, deren Aussehen vom jeweiligen Mobiltelefon abhängen. Um diesen Zwiespalt zu überbrücken wurden diverse GUI Frameworks untersucht, wobei sich LWUIT von Sun Microsystems als klarer Favorit herauskristallisiert hat. Nichts desto trotz bleibt das Problem bestehen, dass die Mobiltelefone stark unterschiedliche Displays bezüglich Auflösung, Farbtiefe und Seitenausrichtung wie Hochformat oder Querformat besitzen. Der Entwickler muss dafür Sorge tragen, dass die Anwendung für alle unterschiedlichen Gerätekategorien optisch angepasst und getestet wird. Hinzu kommt, dass Java ME ein reduziertes Java ist, wodurch der Entwickler gewissen Einschränkungen bei der Wiederverwendung bereits existierender Java-Quelltexte unterliegt.

23 2 Wahl einer geeigneten Entwicklungsplattform Apple iphone In diesem Unterkapitel wird das Apple iphone vorgestellt. Im ersten Schritt wird die Produktlinie rund um das iphone erläutert. Es folgt eine Betrachtung des Betriebssystems und der Software itunes samt Alternativen. Anschließend wird untersucht, wie Anwendungen für das iphone entwickelt und ausgeliefert werden. Im letzen Abschnitt erfolgt eine Zusammenfassung und Bewertung Produktlinie Es existieren mehrere verschiedene Smartphones, die unter dem Oberbegriff iphone zusammengefasst werden. Diese werden nun im Detail vorgestellt. iphone Anfang Januar 2007 wurde das iphone von Apple Inc. angekündigt. Ende Juni 2007 wurde es in den Markt eingeführt, zuerst in den USA und später weltweit. Es handelt sich dabei um ein Smartphone mit 3,5 Zoll Multi-Touch-Display 29 im Breitbildformat und einer Auflösung von 480 x 320 Pixeln. Der Prozessor ist ein Samsung 32-bit RISC ARM 1176JZ(F)-S mit einer Taktfrequenz von 630 MHz, der auf 412 MHz untertaktet ist um den Stromverbrauch zu reduzieren. Es unterstützt den Mobilfunkstandard Quadband GSM der zweiten Generation (2G) und bietet Schnittstellen für WLAN (IEEE b/g), USB 2.0 und Bluetooth 2.0. Die 2 Megapixel Digitalkamera verfügt über Geotagging, womit Bildern anhand von GPS- Positionsbestimmung geographische Informationen zugeordnet werden. Dadurch können beispielsweise Sehenswürdigkeiten auf einem Foto automatisch identifiziert werden 30. Weiterhin ist ein Kopfhörer mit einem Frequenzbereich von 20 Hz bis 20 KHz samt integriertem Mikrofon im Lieferumfang enthalten. iphone 3G Seit Juli 2008 steht das iphone 3G zum freien Verkauf. Die Neuerung hierbei waren Assisted GPS zur satellitenunterstützen Positionsbestimmung und UMTS, dem Mobilfunkstandard der dritten Generation (3G). Darüber hinaus wurde der Akku gegen einen leichteren und leistungsstärkeren ausgetauscht. ipod touch Das ipod touch wurde Anfang September 2007 von Apple Inc. vorgestellt und besteht weitgehend aus den gleichen Komponenten wie dem iphone. Entfernt wurden lediglich die Kamera und das Telefon sowie einige Softwarekomponenten. Funktional reiht sich das ipod touch nahtlos in die Reihe der MP3-Player von Apple ein, wie z.b. ipod classic, ipod mini, ipod nano und ipod shuffle. Optisch und kinästhetisch gleicht es dem iphone. 29 Multi-Touch erlaubt die Bedienung mit mehreren Fingern gleichzeitig. Dadurch sind beispielsweise Vergrößern und Drehen von Bildern möglich. 30 Vgl. [Wiki09b]

24 2 Wahl einer geeigneten Entwicklungsplattform 18 iphone 3GS Mitte Juni 2009 kam das iphone 3GS in den Handel. Bei diesem Modell wurde die Graphikleistung verbessert und mit 256 MB DRAM mehr Hauptspeicher verbaut. Der ARM Cortex-A8 Prozessor mit einer Taktfrequenz von 833 MHz ist auf 600 MHz untertaktet. Die 3 Megapixel Digitalvideokamera ist mit automatischem Fokus, Weißabgleich und Belichtung ausgestattet. Neu hinzugekommen sind der Beschleunigungssensor Nike+ und ein digitaler Kompass. Wiederum wurde die Kapazität des Akkus verbessert Folgende Abbildung zeigt ein Apple iphone 3G: Abb. 12: Apple iphone 3G [Appl09a] Betriebssystem Das Betriebssystem von iphone, iphone 3G, iphone 3GS und ipod touch 33 wurde gleichfalls von Apple Inc. entwickelt und wird als iphone OS oder OS X iphone bezeichnet. Genau wie Mac OS X, von dem es abgeleitet wurde, benutzt es das unixähnliche Darwin als Kernkomponente. Insgesamt benötigt das Betriebssystem weniger als 240 MB Speicher. Das iphone OS ist in vier Abstraktionsschichten aufgeteilt: 34 Core OS Layer Core Services Layer Media Layer Cocoa Touch Layer 31 Vgl. [Wiki09c] 32 Vgl. [Tmob] 33 Fortan werden diese vier Geräte unter dem Begriff iphone zusammengefasst. 34 Vgl. [Wiki09d]

25 2 Wahl einer geeigneten Entwicklungsplattform itunes und Alternativen Um beispielsweise Lieder auf das iphone zu laden, bedarf es der Software itunes, die für Mac OS X, Windows XP und Windows Vista frei erhältlich ist. Das Programm durchsucht dafür die gesamte Festplatte des Rechners und synchronisiert den Datenbestand mit dem iphone. Hierfür werden die Daten temporär in ein kompatibles Format konvertiert. Auch ist es damit möglich Musikstücke, Filme und Anwendungen beim itunes Music Store käuflich zu erwerben. Folgende Abbildung zeigt die Software itunes: Abb. 13: Apple itunes [Appl09b] Alternativen Für Benutzer des Betriebssystems Linux, für die kein itunes existiert, und für solche, die andere Software einsetzen möchten, existieren folgende Freeware Alternativen: Vgl. [Oest07] Windows Linux Mac OS X dopisp Amarok Floola Ephpod Banshee ipod shuffle DB Builder Floola Floola JakPod ipod shuffle DB Builder GTKpod retune ipod shuffle Manager Ipod shuffle DB Builder Songbird JakPod JakPod Yamipod Media Monkey retune PoddoX Songbird retune Ymipod SharePod 3 Songbird vpod Winamp Yamipod Tab. 3: Freeware Alternativen zu itunes

26 2 Wahl einer geeigneten Entwicklungsplattform Softwareentwicklung In diesem Unterkapitel wird untersucht wie für das iphone Anwendungen entwickelt und ausgeliefert werden. Da erst durch einen Hack bedingt überhaupt ein SDK bereitgestellt wurde, wird dieser kurz vorgestellt. Jailbreaking mittels TIFF Exploit Apple vertrat die Position, dass Webanwendungen, die im nativen iphone Browser Safari ausgeführt werden, den Drittanbietern genügen. Nachdem im Juli 2007 ein Hack publiziert wurde, wie trotz der eingebauten Hürden, Anwendungen nativ auf dem Gerät ausgeführt werden können, hat Apple kurze Zeit später die eigene Politik geändert [ ] 36 und ein Software Development Kit (SDK) veröffentlicht. Die Technik, Software ohne kryptografische Signatur von Apple auf dem iphone nativ auszuführen, wird Jailbreaking genannt. Der Hack wird als TIFF Exploit bezeichnet, da im Header des Grafikformats TIFF ein Offset auf eine Stelle jenseits des physischen Dateiendes verweist, was unweigerlich zu einem inkonsistenten Zustand im Betriebssystem führt. 37 iphone SDK Ende März 2008 erschien die erste Version vom iphone SDK, mit dem Entwickler native Anwendungen für das iphone entwickeln konnten. Das 2 GB umfassende Paket kann von registrierten Entwicklern kostenlos heruntergeladen werden. Die Installation setzt einen Macintosh mit Mac OS X voraus. Die integrierte Entwicklungsumgebung (IDE) ist Xcode, unter der auch Anwendungen für Macintosh entwickelt werden. Die Programmiersprache ist Objective-C, einer Erweiterung der Programmiersprache C um objektorientierte Konzepte. Neben der IDE werden noch ein Interface Builder, verschiedene Optimierungsund Debugging-Werkzeuge und ein iphone Simulator mitgeliefert, so dass auf Hardware verzichtet werden kann. 38 Das Framework setzt sich aus folgenden Teilen zusammen: 39 Bestandteil Beschreibung Cocoa Touch 40 Multi-Touch, Beschleunigungssensoren, Kamera Media Audio, Video, Grafikformate, Animation, OpenGL Core Services Netzwerk, SQLite-Datenbank, Threads OS X Kernel TCP/IP, Sockets, Dateisystem, Sicherheit Tab. 4: Framework Bestandteile vom iphone SDK 36 [Prin09, S.5] 37 Vgl. [Wiki09e] 38 Vgl. [Prin09, S.10] 39 Vgl. [Wiki09d] 40 Erweiterung des Frameworks Cocoa, mit dem Macintosh Anwendungen entwickelt werden

27 2 Wahl einer geeigneten Entwicklungsplattform 21 AppStore Der AppStore ist die einzige Plattform, von der der Benutzer Anwendungen für das iphone herunterladen kann. Erreichbar ist der AppStore direkt vom iphone aus oder mittels itunes. Möchte ein Entwickler seine Anwendung der breiten Masse verfügbar machen, so muss dieser dem iphone Developer Program beitreten. Dabei stehen das Standard Program und das Enterprise Program zur Wahl. Das Standard Program kostet 99 USD jährlich und ist für Entwickler von freien oder kommerziellen Anwendungen bestimmt. Apple verlangt weitere 30 Prozent vom Umsatz bei kommerziellen Anwendungen. Soll die Anwendung nicht über den öffentlichen sondern über einen eigens dafür eingerichteten AppStore bereitgestellt werden, so ist das Enterprise Program zu wählen, welches jährlich 299 USD kostet Zusammenfassung und Bewertung Auch wenn sich das iphone großer Beliebtheit erfreut, bereits über 10 Millionen mal verkauft wurde und in 80 Ländern erhältlich ist 43, so sind rund Euro für eine adäquate Entwicklungsumgebung zu investieren. Der Betrag setzt sich aus zusammen aus: Anschaffung iphone 3G für ca. 600 Euro 44 Anschaffung imac für ca Euro 45 Teilnahme am iphone Developer Program Standard Program für 99 USD Die Kosten könnten durch folgende Einsparungen reduziert werden: Einsatz der Software iphone Simulator anstelle der iphone Anschaffung Einsatz einer Virtual Machine (VM) 46 mit Installation von Mac OS X anstelle der imac Anschaffung Neben den wirtschaftlichen Faktoren stellt sich das unüberwindbare Problem der Programmiersprache Objective-C. Diese ist unbedingt einzusetzen bei der Entwicklung einer iphone Anwendung. Da auf dem iphone keine Java Virtual Machine (JVM) implementiert wurde, ist es unmöglich die bestehenden Java-Quelltexte wiederzuverwenden. Dem Autor ist auch kein einziges Konvertierungswerkzeug bekannt, mit dem Java-Quelltext zu Objective-C-Quelltext umgewandelt werden kann. 41 Vgl. [http://developer.apple.com/iphone/program/] 42 Vgl. [Wiki09f] 43 Vgl. [Wiki09g] 44 Vgl. [Guen] 45 Vgl. [Appl09c] 46 Eine Virtual Machine (VM) ist ein aus Software bestehender virtueller Computer.

28 2 Wahl einer geeigneten Entwicklungsplattform Google Android In diesem Unterkapitel wird das Betriebssystem und die Softwareplattform Android untersucht. Da Google maßgeblich für die Entwicklung verantwortlich ist, handelt der erste Abschnitt vom Unternehmen und den Dienstleistungen. Es folgt eine nähere Betrachtung der Open Handset Alliance, der auch eine tragende Rolle an Android zuteilwird. Anschließend werden die Android Developer Challenge und exemplarisch drei Finalisten samt Anwendungen vorgestellt. Im letzen Abschnitt erfolgt eine Zusammenfassung und Bewertung Google Inc. Der Name Google geht zurück auf den Mathematiker Edward Kasner, der der Zahl den Namen googol verliehen hat. 47 Firmengeschichte Nachdem sich 1995 Lawrence Edward Page und Sergei Brin an der Standford University begegneten, konzipierten und entwickelten sie eine Internet-Suchmaschine, dem Vorläufer von Google. Im September 1998 gründeten beide das Unternehmen Google Inc. in Mountain View, Kalifornien, USA. Die Kombination der Suchmaschine mit kontextsensitiver Werbung, Google AdSense genannt, brachte den wirtschaftlichen Durchbruch. Anfang Januar 2009 zählten Mitarbeiter zu dem Unternehmen mit einem Jahresumsatz von ,8 Milliarden USD in Dienstleistungen Auch wenn das Kerngeschäft die Suche bleibt, so wurden viele weitere Softwarelösungen finanziert. Zu den bekanntesten und wichtigsten zählen: Vgl. [Wiki09h] 48 Vgl. [Wiki09h] 49 Vgl. [Wiki09i] 50 Vgl. [Wiki09i]

29 2 Wahl einer geeigneten Entwicklungsplattform 23 Dienstleistung Beschreibung Google AdSense Webbasierter Anbieter von inhaltsbezogene Werbeanzeigen Google Books Webbasierte Volltextsuche über digitalisierte Bücher Google Chrome Webbrowser für Windows, Linux und Mac OS X, der auf die Rendering-Engine WebKit 51 aufbaut Google Desktop Search Suchprogramm für Windows, Linux und Mac OS X Google Earth Virtueller Globus für Windows, Linux und Mac OS X basierend auf Satelliten- und Luftbildern Google Groups Webseite mit Usenet-Archiv und Schnittstelle zum Versenden von Artikeln Google Calendar Webbasierter Terminkalender, der mit anderen Benutzern geteilt werden kann Google Mail Webbasierter -Dienst mit 1 GB Postfachgröße Google Maps Webbasierte Land- und Straßenkarte mit Volltextsuche und Routenplaner Google Picasa Webbasierte Bildbearbeitung und -verwaltung Google Scholar Webbasierte Volltextsuche über wissenschaftliche Publikationen Google Docs Webbasierte Textverarbeitung und Tabellenkalkulation Google Toolbar Symbolleiste für die Webbrowser Firefox und Internet Explorer, integriert Dienste oder stellt Verknüpfungen zu diesen her Google Video Webportal zum Suchen, Ansehen und Einstellen von Filmsequenzen Tab. 5: Dienstleistungen von Google Inc Android Eine der ersten Nachrichten über Android besagt, dass Google im August 2005 das 22 Monate alte Startup-Unternehmen Android Inc. aufgekauft hat. 52 Mit großem Interesse wurde am 5. November 2007 eine Ankündigung durch die USamerikanische Internetfirma Google und weitere [sic] 33 Unternehmen der Open Handset Alliance verfolgt: der Start von Android. 53 Am 12. November 2007 veröffentlichte Google eine Vorabversion des Android-SDK [sic!], einer Entwicklungsumgebung für die Android-Plattform. Die überwiegend positive Reaktion darauf verdeutlicht, wie groß das Interesse des Marktes und der Entwickler an einer offenen Plattform für mobile Computer mittlerweile ist. 54 Android ist eine kostenlose Softwareplattform für mobile Endgeräte und basiert auf dem Betriebssystem Linux. Große Teile der Android Plattform sind unter die Open-Source- Lizenzen Apache 2.0 und GNU Public License Version 2 (GPLv2) gestellt worden. Durch eine 51 Die Rendering-Engine WebKit wird auch im Browser Safari von Apple Inc. eingesetzt. 52 Vgl. [Elgi05] 53 [MoKo09, S. 1] 54 [BePa09, S. V]

30 2 Wahl einer geeigneten Entwicklungsplattform 24 Gleichberechtigung der Anwendungen wird kein Unterschied zwischen den vorinstallierten und denen von Drittanbietern gemacht. Mit dem Android Software Development Kit (SDK) werden Anwendungen in der Programmiersprache Java entwickelt. Für das Design der graphischen Benutzeroberfläche (GUI) wird die Auszeichnungssprache Extensible Markup Language (XML) verwendet. Rund ein Jahr lang mussten sich die Entwickler mit einem Software-Emulator begnügen, da erst im Herbst 2008 das erste Android Smartphone erschien Open Handset Alliance Am 5. November 2007 haben 34 Firmen unter Führung des Internetunternehmens Google die Open Handset Alliance (OHA) gegründet. Etwa ein Jahr später, am 9. Dezember 2008, sind weitere 14 Firmen der OHA beigetreten. Das OHA-Konsortium entwickelt gemeinsam die Softwareplattform Android. 57 Die mittlerer weile 50 Mitglieder der OHA stammen aus folgenden Geschäftsbereichen: Mobilfunkbetreiber 13 Halbleiterfirmen 10 Endgerätehersteller 11 Softwarefirmen 6 Vermarktungsfirmen (engl. Mobile Operators) (engl. Semiconductor Companies) (engl. Handset Manufacturers) (engl. Software Companies) (engl. Commercialization Companies) Folgende Tabelle zeigt alle 50 Firmen der Open Handset Alliance: 55 Vgl. [MoKo09, S. 1 f.] 56 Vgl. [Andr] 57 [MoKo09, S.10] 58 Vgl. [Open]

31 2 Wahl einer geeigneten Entwicklungsplattform 25 Mobilfunkbetreiber Halbleiterfirmen Endgerätehersteller Softwarefirmen Vermarktungsfirmen Tab. 6: Alle 50 Firmen der Open Handset Alliance [Open]

32 2 Wahl einer geeigneten Entwicklungsplattform 26 Mobilfunkbetreiber Es ist der Open Handset Alliance (OHA) gelungen, [sic] mit China Mobile, Vodafone sowie Telefónica die drei (nach Kundenzahl) größten Mobilfunkbetreiber der Welt als Mitglieder zu gewinnen [ ]. In Deutschland sind drei der vier Netzbetreiber direkt oder durch ihre 59 Muttergesellschaften in der OHA vertreten [ ]. Die Mitgliedschaft von Mobilfunkbetreibern in der OHA ist deswegen wichtig, weil diese durch Subventionierung der Endgeräte und attraktive Datentarife den Verkauf maßgeblich fördern können. Halbleiterfirmen Die Hardware, die von den Endgeräteherstellern für die Android Smartphones verbaut wird, wird von den Halbleiterfirmen hergestellt. Besonders erwähnenswert sind: 60 Firma Beschreibung Intel weltweit führender Prozessorhersteller nvidia einer der größten Entwickler von Grafikprozessoren ARM Designer für RISC-Prozessoren Texas Instruments einer der größten Hersteller von Digitalen Signalprozessoren (DSP) Tab. 7: Bekannte Halbleiterfirmen der OHA Endgerätehersteller Bis auf den Marktführer Nokia sind folgende vier der fünf weltweit größten Endgerätehersteller in der Open Handset Alliance vertreten: 61 Samsung, LG Electronics, Motorola und Sony Ericsson. Erwähnenswert sind auch die Computerhersteller ASUSTeK und Toshiba als auch der Navigationsgerätehersteller Garmin, die bisher keine Mobilfunkgeräte entwickelt haben. Softwarefirmen Es ist bemerkenswert, dass Google die treibende Kraft hinter der OHA ist, und kein Endgerätehersteller oder Mobilfunkbetreiber. Auch das weltweit größte Internetauktionshaus ebay ist in der OHA vertreten, wobei die Rolle dem Autor bisher unklar ist. Weitere nennenswerte Softwarehersteller sind: 62 Firma Beschreibung Ascender Corporation Hersteller von Schriftarten, insb. Droid Fonts für Android Nuance Entwickler von Sprachsynthese und -erkennung PacketVideo (PV) Integration von Multimedia auf mobile Endgeräte SONiVOX Spezialist für Audiosysteme auf Mobilfunkgeräte Tab. 8: Bekannte Softwarefirmen der OHA 59 [MoKo09, S.12] 60 Vgl. [MoKo09, S.14] 61 Vgl. [MoKo09, S. 10] 62 Vgl. [MoKo09, S. 13]

33 2 Wahl einer geeigneten Entwicklungsplattform 27 Vermarktungsfirmen Diese Firmen arbeiten mit den Netzbetreibern und Endgeräteherstellern zusammen, um Software in eine Hardwarebasis zu integrieren und diese dann auf den Markt zu bringen. Bei Firmen wie z.b. Noser Engineering, Teleca und Wind River Systems handelt es sich um spezielle Zulieferer für die Endgerätegersteller und Netzbetreiber Android Developer Challenge Die Android Developer Challenge (ADC) ist ein von Google ausgeschriebener Wettbewerb um die innovativste Anwendung für das Android-Betriebssystem. Insgesamt 10 Millionen USD wurden als Preisgelder ausgesetzt. Die Anmeldung fand zwischen Januar und April 2008 statt, wobei sich Kandidaten qualifizierten. Darunter wurden 50 Kandidaten von zahlreichen Preisrichtern im Mai 2008 ausgewählt. Sie erhielten je USD um ihre Anwendung weiterzuentwickeln. Im September 2008 wurden die Gewinner bekanntgegeben. Je zehn Gewinner erhielten ein Preisgeld von USD, weitere zehn Finalisten gewannen USD. 64 Im Mai 2009 wurde die Android Developer Challenge 2 (ADC 2) bekannt gegeben. Die Anmeldung endet am 31. August Die Kandidaten müssen sich dabei für eine von zehn Kategorien wie Erziehung, Spiele, Lifestyle und Reisen entscheiden. Voraussichtlich im Oktober werden die Gewinner der ersten Runde bekanntgegeben, und rund einen Monat später endet der Wettbewerb. Die Preisrichter sind diesmal alle Besitzer eines Android Smartphones, die eine Anwendung zum Testen und Bewerten herunterladen können. Pro Kategorie wird es drei Gewinner geben mit einer Preisstaffelung von USD für den ersten Platz, USD für den zweiten Platz und USD für den dritten Platz. Zusätzlich gibt es ein Preisgeld unabhängig von den Kategorien mit einer Staffelung von USD, USD und USD. 65 Es folgen nun exemplarisch drei Anwendungen der Android Developer Challenge 1 (ADC 1): 63 [MoKo09, S. 14] 64 Vgl. [Brow08] 65 Vgl. [Andr09a]

34 2 Wahl einer geeigneten Entwicklungsplattform 28 Compare Everywhere Der Autor Jeffrey Sharkey gewann bei der ADC 1 mit seiner Anwendung Compare Everywhere ein Preisgeld in Höhe von USD-Dollar. Ziel der Anwendung ist es den Barcode eines beliebigen Produktes zu fotografieren und den Preis zu vergleichen zu lassen. Dem Anwender werden dann Kaufhäuser in seiner näheren Umgebung angezeigt, die das Produkt im Sortiment haben. Folgende Abbildung zeigt die Android-Applikation Compare Everywhere: Abb. 14: Die Android-Applikation Compare Everywhere [Andr09b] Cooking Capsules Die Autoren Mary Ann Cotter aus San Francisco und Muthu Ramadoss aus Indien gewannen bei der ADC 1 mit ihrer Anwendung Cooking Capsules ein Preisgeld in Höhe von USD. Ziel der Anwendung ist es den Benutzer beim Kochen zu unterstützen. Kleinere Kochvideos bieten Erklärungen und Inspirationen, Tools helfen beim Planen und Einkaufen und zeigen Supermärkte in der näheren Umgebung an. Folgende Abbildung zeigt die Android-Applikation Cooking Capsules: Abb. 15: Die Android-Applikation Cooking Capsules [Andr09c]

35 2 Wahl einer geeigneten Entwicklungsplattform 29 Wikitude Der Autor Philipp Breuss aus Salzburg in Österreich gewann bei der ADC 1 mit seiner Anwendung Wikitude USD. Die Anwendung informiert den Benutzer über Sehenswürdigkeiten eines beliebigen Reiseziels oder seiner näheren Umgebung. Dabei werden die textuellen Informationen, die aus Wikipedia und anderen Wikis extrahiert und aufbereitet werden, in die Bildansicht der Digitalkamera eingeblendet. Folgende Abbildung zeigt die Android-Applikation Wikitude: Abb. 16: Die Android-Applikation Wikitude [Andr09d] Zusammenfassung und Bewertung Die Softwareplattform und das Betriebssystem Android wurde von Google und der Open Handset Alliance erschaffen. Mit 50 namenhaften Firmen, die teilweise marktführend in ihrem Sektor sind, deckt die Allianz alle Bereiche ab, die für ein Smartphone relevant sind: Mobilfunk, Hardware, Software und Vermarktung. Android steht unter der Open-Source- Lizenz und alle Quelltexte sind frei verfügbar. Durch zwei Wettbewerbe wurde dafür gesorgt, dass innovative Anwendungen für die neue Plattform bereitstehen. Entwickelt werden diese in Java und XML. In diesem Kapitel wurden einleitend die verschiedenen Dienstleistungen und Softwarelösungen von Google vorgestellt, da Android diese anbindet und bereitstellt. Es wurde darauf verzichtet Smartphones mit Android-Betriebssystem vorzustellen, da Android im Rahmen der Evaluation als reine Softwareplattform zu verstehen ist.

36 2 Wahl einer geeigneten Entwicklungsplattform Gegenüberstellung und Bewertung der Plattformen In diesem Unterkapitel werden die drei Plattformen miteinander verglichen und eine Wahl getroffen. Java Platform, Micro Edition Die Java Platform, Micro Edition existiert bereits seit rund 10 Jahren, was insofern ein großer Vorteil ist, da inzwischen ein Großteil der mobilen Endgeräte diese etablierte Plattform unterstützen. Es existieren viele Emulatoren und Toolkits für die unterschiedlichsten Mobiltelefone. Diese kommen zum Einsatz, wenn der Entwickler die speziellen Eigenschaften eines Gerätes unterstützen möchte oder um die Anwendung für das jeweilige Display zu optimieren. Das API bietet zwar einige GUI-Komponenten an, aber das Aussehen hängt vom jeweiligen Endgerät ab. Ein weiterer Nachteil ist die Programmiersprache, ein reduziertes Java. Bei der Adaption existierender Java-Quelltexte stellt dies ein großes Problem dar, da der Entwickler den Code extra anpassen und portieren muss. Apple iphone Die Plattform Apple iphone besteht aus einem SDK für vier sehr ähnliche Zielgeräte. Software für diese technisch sehr innovativen Geräte zu entwickeln stellt einen großen Reiz dar. Einzig auf dem Betriebssystem Mac OS X und mit der Programmiersprache Objective-C ist dies möglich. Um die fertige Software bereitzustellen zahlt der Entwickler mindestens 99 USD für die Teilnahme am Developer Program, und zusätzlich, sollte die Software kommerziell sein, weitere 30 Prozent vom Umsatz. Google Android Mindestens genau so reizvoll ist Android, eine kostenlose Softwareplattform der OHA unter Führung von Google. Diese Allianz stellt die treibende Kraft von Android dar, da die 50 Firmen aus den Bereichen Mobilfunk, Hardware, Software und Vermarktung, für den Erfolg maßgeblich verantwortlich sind. Zusätzlich erschließt sich Android die Innovationskraft der Open-Source-Community 66, da das auf Linux basierende Betriebssystem, die umfangreichen Bibliotheken, die Laufzeitumgebung und die mobilen Schlüsselapplikationen 67 unter die Open-Source-Lizenz gestellt wurden. Ein weiterer Vorteil ist die Gleichberechtigung der Anwendungen. Dadurch können neue Anwendungen geschaffen werden, die der Benutzer gegen bestehende austauschen kann. Vermutlich enthält Android noch Fehler, da es sehr neu ist. Es ist jedoch anzunehmen, dass durch die Wahl von Java als Programmiersprache die große Community dabei helfen wird, diese zu finden und zu beseitigen. Gegenüberstellung Folgende Tabelle stellt die Fakten der drei Entwicklungsplattformen gegenüber: 66 [MoKo09, S. 1] 67 Vgl. [MoKo09, S. 1]

37 2 Wahl einer geeigneten Entwicklungsplattform 31 Java Platform, Apple iphone Google Android Micro Edition Erscheinungsjahr Zielgeräte alle Java ME fähigen iphone, iphone 3G, Smartphones mit Android-Betriebssystem Mobiltelefone ipod touch, iphone 3GS Zielgerätbetriebssystem beliebig iphone OS Android (Linux) Programmiersprache reduziertes Java Objective-C Java Entwicklungsumgebung Eclipse mit MTJ Xcode Eclipse mit ADT 68 Entwicklungsbetriebssystem Windows, Linux, Mac OS X Mac OS X Windows, Linux, Mac OS X Voraussetzungen Java SE und iphone SDK Java SE und Android SDK WTK Lizenz Open Source kommerziell Open Source Vorteile Nachteile Entscheidungsfindung viele Millionen Endgeräte mit Java ME ausgestattet GUI abhängig vom Endgerät, reduziertes Java technisch innovativ nicht kompatibel zu Java Tab. 9: Gegenüberstellung der drei Plattformen technisch innovativ, Google und OTA sehr erfolgsversprechend, Gleichberechtigung der Anwendungen Vermutlich Kinderkrankheiten weil sehr neu Für die Entscheidung der geeigneten Entwicklungsplattform ist wiederholt festzuhalten, dass viele bestehende Java-Quelltexte adaptiert werden sollen. Da für das iphone nur in Objective-C entwickelt werden kann und diese Programmiersprache nicht kompatibel zu Java ist, fällt aus diesem Grund die Entscheidung gegen das iphone aus. Nach Meinung des Autors hat sich Java ME bis heute nicht richtig durchsetzen können. Einerseits sind die Displays der meisten Mobiltelefone zu klein, um Anwendungen wie einen Webbrowser bequem benutzen zu können. Andererseits ist die Internetfähigkeit als Zusatz zum üblichen Mobilfunkvertrag zu verstehen. Darüber hinaus sind das reduzierte Java und die Abhängigkeit von GUI-Frameworks negativ zu verbuchen. Deswegen fällt die Entscheidung gegen Java ME aus. Wünschenswert ist ein modernes Smartphone mit großem Display, optisch ansprechender GUI und vollständigem Java. Auch sollte der Zugang zum Internet integraler Bestandteil des Mobilfunkvertrags sein. Aus Sicht eines Entwicklers ist eine Integration des SDKs in bereits etablierte Entwicklungsumgebungen sehr vorteilhaft. Des Weiteren sollte das SDK moderne und etablierte Technologien einsetzen sowie bereitstellen. Frei zugängliche Quelltexte sind eine zusätzliche Erleichterung. Da all dies nur von einer Plattform erfüllt wird, fällt die Entscheidung zugunsten von Android aus. 68 Das Android Development Toolkit (ADT) ist ein Plug-In für Eclipse. Dieses wird im nächsten Kapitel detailliert untersucht.

38 3 Android im Detail 32 3 Android im Detail In diesem Kapitel wird Android im Detail betrachtet. Im ersten Abschnitt wird die Architektur mit ihren einzelnen Schichten vorgestellt. Es folgen nähere Erläuterungen zum SDK, den Entwicklungswerkzeugen und dem ADT Plug-In für Eclipse. Der letzte Abschnitt gilt den Endgeräten mit Android-Betriebssystem samt kritischen Stimmen. Diese Reihenfolge wurde mit der Absicht gewählt, die Tatsache nachzubilden, dass für die Entwickler rund 1 Jahr lang nur das SDK und die Werkzeuge verfügbar waren, bevor die ersten Endgeräte erschienen. 3.1 Architektur Generell beschreibt die Softwarearchitektur die strukturierte Anordnung der einzelnen Systemkomponenten. 69 Bei der Architektur von Android werden die einzelnen Komponenten einer Schicht zugeordnet. Die Gesamtheit aller Schichten wird als Software Stack bezeichnet, welcher sich aus Betriebssystem, Middleware und Schlüsselanwendungen zusammensetzt. 70 Folgende Abbildung zeigt den Android Software Stack: Abb. 17: Android Software Stack, bestehend aus fünf Schichten [Andr09e] 69 [MoKo09, S. 5] 70 Vgl. [Andr09e]

39 3 Android im Detail Applications Die oberste Schicht beinhaltet folgende, in Java geschriebene, Applikationen: Anwendung Beschreibung Dialer Telefon mit Verbindung zum Adressbuch Contacts Adressbuch mit Verbindung zu Telefon, und SMS Browser Webbrowser Maps Anwendung für Google Maps Alarm Clock Wecker Calculator Taschenrechner Camera Kamera zum Aufnehmen von Bildern Anwendung für s, vorausgesetzt wird ein Account bei Google Mail, zusätzlich sind andere Provider möglich Messaging Anwendung für SMS Music Musikverwaltung Pictures Bilderverwaltung Android Market Schnittstelle zum Herunterladen und Bewerten neuer Anwendungen, nicht verfügbar im Emulator Tab. 10: Anwendungen der Applications-Schicht Application Framework Wie bereits erwähnt sind alle Anwendungen gleichberechtigt. Der Benutzer kann diese gegen andere beliebig austauschen. Ferner ist es möglich eigene Anwendungen zu entwickeln. Diese Mechanismen werden von dem Application Framework bereitgestellt: Mechanismus Beschreibung Activity Manager steuert den Lebenszyklus der Aktivitäten, stellt einen globalen Stack für die Zurück-Taste bereit Window Manager lässt sich über eine Java-API ansteuern und greift auf den Surface Manager 71 zu Content Provider ermöglicht das Lesen und Speichern von Daten, dient dem Datenaustausch zwischen Applikationen View System steuert die Views 72 Package Manager protokolliert die installierten Applikationen Telepony Manager steuert die Telefonfunktionalität wie Anklopfen, Gespräch halten oder das neue Gespräch entgegen nehmen Resource Manager ermöglicht Zugriff auf Ressourcen (z.b. internationalisierte Strings, Grafiken, Layouts) Location Manager stellt geografische Informationen über den aktuellen Standort bereit Notification Manager ermöglicht Applikationen, textuelle Benachrichtigungen anzuzeigen Tab. 11: Mechanismen der Application Framework-Schicht [MoKo09, S. 9] [Andr09e] 71 Siehe Libraries-Schicht. 72 Views sind Basis-Bausteine für die GUI.

40 3 Android im Detail Libraries Android beinhaltet in C / C++ geschriebenen Bibliotheken. Deren Funktionalität wird über die Application Framework-Schicht bereitgestellt: Bibliothek Beschreibung Surface Manager steuert den Zugriff auf das Anzeigesystem, stellt 2D- und 3D- Grafiken unterschiedlicher Applikationen kombiniert dar Media Framework stellt Bibliotheken für Wiedergabe und Aufnahme von Audio und Video bereit, basiert auf einer Bibliothek von PacketVideo 73 SQLite Relationales Datenbanksystem für ressourcenbeschränkte Geräte OpenGL ES 3D-Grafikbibliothek für eingebettete Systeme FreeType Bibliothek zur Darstellung von Schriftarten WebKit 74 Rendering-Engine für Webseiten SGL Software zum Rendern von Vektorgrafik SSL Netzwerkprotokoll zur absicherten Übertragung von Daten libc Standard-Bibliothek für die Programmiersprache C Tab. 12: Bibliotheken der Libraries-Schicht [MoKo, S. 7] [Andr09e] 73 PacketVideo ist Mitglied der Open Handset Alliance. 74 Google Chrome benutzt ebenfalls die Rendering-Engine WebKit.

41 3 Android im Detail Android Runtime Die Laufzeitumgebung von Android besteht aus den Core Libraries und der Dalvik Virtual Machine (VM). Sie ist auf der gleichen Schicht wie die Libraries-Schicht angesiedelt. Core Libraries Hierbei handelt es sich um viele Java-Pakete der Java Platform, Standard Edition. Folgende Pakete werden dabei unterstützt: Paket java.io java.lang java.math java.net java.nio java.security java.sql java.text java.util javax.crypto javax.net javax.security javax.sound javax.sql javax.xml.parsers XML-Parser org.w3c.dom Beschreibung Eingabe und Ausgabe von Dateien und Streams elementare Grundklasse Zahlendarstellung Netzwerkprogrammierung Ergänzung zu java.io Sicherheit Datenbankanbindung Internationalisierung von Zahlen und Strings List, Map, Set, Array, Collection Kryptografie Netzwerkprogrammierung Sicherheit Audioverarbeitung Datenbankanbindung DOM org.xml.sax SAX-Parser Tab. 13: Core Libraries der Android Runtime-Schicht [MoKo09, S. 8] [Burn08] Hinzu kommen Pakete von Drittanbietern wie: Paket Beschreibung org.apache.commons.codec Werkzeuge für Encodierung und Decodierung org.apache.commons.httpclient Unterstützung der Protokolle HTTP und HTTPS org.bluez Anbindung von Bluetooth org.json Datenformat, kompakter kodiert als XML Tab. 14: zusätzliche Core Libraries der Android Runtime-Schicht [Burn08]

42 3 Android im Detail 36 Dalvik Virtual Machine Die Dalvik Virtual Machine (Dalvik VM) ist eine Java Virtual Machine (JVM), die für mobile Geräte optimiert wurde. Der Google-Mitarbeiter Dan Bornstein hat seiner Erfindung den Namen Dalvik verliehen, nach der gleichnamigen Stadt in Island, aus dem einige seiner Vorfahren stammen. Im Gegensatz zur JVM, die auf einer Stack Machine basiert, beruht die Dalvik VM auf der Architektur einer Register Machine. Der Vorteil dabei ist, dass dieser Bytecode auf ARM-Prozessoren, die in mobilen Endgeräten eingesetzt werden und selbst auf einer Stack Machine basieren, wenig Speicherplatz benötigt und effizient ausgeführt wird. Auf den Just-in-time Compiler (JIT), der in einer JVM den Bytecode bei Bedarf in nativen Maschinencode übersetzt, wird verzichtet. Stattdessen wird bereits vorher der Bytecode mit dem Dalvik Cross-Compiler von Stack Machine- in Register Machine-Architektur umgewandelt. Für die Entwicklung einer Applikation lassen sich folgende Schritte zusammenfassen: Schritt Werkzeug Dateiendung Erstellung von Quelltext Texteditor.java Kompilierung in Bytecode (Stack Machine) Java Compiler.class Umwandlung in Bytecode (Register Machine) Dalvik Cross-Compiler.dex Erstellung eines Android Packages AAPT.apk Ausführung in Dalvik VM Android Tab. 15: Entwicklungsschritte einer Android-Applikation Es bleibt anzumerken, dass jede Anwendung in einem Prozess in einer Instanz der Dalvik VM ausgeführt wird. Daher wurde Dalvik so entwickelt, dass mehrere VMs auf einem Gerät parallel betrieben werden Linux Kernel Die unterste Schicht fungiert als ein Hardware Abstraction Layer (HAL) zwischen der physischen Hardware und dem Android Software Stack. Da Android von einem Linux Kernel in der Version 2.6 Gebrauch macht, werden von der Linux Kernel-Schicht folgende Funktionalitäten bereitgestellt: 77 Sicherheit Speichermanagement Prozessmanagement Netzwerkanbindung Treiber 75 Vgl. [MoKo, S. 7] 76 Vgl. [Andr09e] 77 Vgl. [Ande09e]

43 3 Android im Detail Software Development Kit In diesem Unterkapitel wird beschrieben, wie das Android SDK heruntergeladen und installiert wird. Auch wird erklärt, wie mit den Quelltexten zu verfahren ist. Des Weiteren werden alle Werkzeuge vom SDK einzeln vorgestellt. Der letze Abschnitt handelt von einem Plug-In für Eclipse, welches die Werkzeuge in die IDE integriert. Herunterladen Auf der Android Developers-Homepage 78 stehen folgende SDKs für die Betriebssysteme Windows, Mac OS X und Linux zum Herunterladen bereit: 79 SDK Datum Beschreibung Android 1.5 SDK, r Neuste Version (irrelevant für diese Arbeit) Android 1.5 NDK, r Erweiterung zum SDK 1.5, ermöglicht Benutzung der Programmiersprache C / C++ und nativen Zugriff auf Bibliotheken der Library-Schicht Android 1.1 SDK, r Relevant für diese Arbeit Android 1.0 SDK, r Veraltete Version (irrelevant für diese Arbeit) Tab. 16: Verschiedene Android SDKs [Andre09g] Installation Für die Installation muss lediglich die ZIP-Datei, welche rund 80 MB groß ist, extrahiert und das Unterverzeichnis tools in den Pfad aufgenommen werden: Unter Linux wird die Datei.bashrc um folgende Zeile erweitert: export PATH=${PATH}:/home/schmitz/android-sdk-linux_x86-1.1_r1/tools Unter Windows wird die Umgebungsvariable PATH um folgenden Pfad erweitert: D:\android-sdk-windows-1.1_r1\tools; Quelltexte Die Quelltexte von Android sind nicht in dem SDK enthalten. Diese befinden sich in einem Git-Repository. Git ist, wie auch Subversion (SVN) und Concurrent Versions System (CVS), ein Softwaresystem zur Versionsverwaltung von Quelltexten. Für den Benutzer besteht lediglich die Möglichkeit, das vollständige und 2,1 GB große Repository auf einmal herunterzuladen. Dafür werden die Programme Git und Repo benötigt, die nur für Linux und Mac OS verfügbar sind. Die Quelltexte für das Android SDK sind im heruntergeladenen Repository zu finden unter mydroid/frameworks/base/core/java. Es wird empfohlen, im Android SDK den Ordner source anzulegen und die Quelltexte dorthin zu kopieren. Dadurch kann ein Entwickler in einer IDE wie Eclipse die Quelltexte komfortabel öffnen und studieren. 78 Vgl. [Andr09g] 79 Stand vom Vgl. [Burk08] 81 Vgl. [Andr09h]

44 3 Android im Detail Entwicklungswerkzeuge Im Unterordner tools vom installierten Android SDK befinden sich Werkzeuge, die bei der Entwicklung von Applikationen hilfreich sind bzw. sie erst möglich machen. Diese werden nun im Einzelnen vorgestellt Android Emulator Der Android Emulator ist ein virtuelles Smartphone auf dem Entwicklungscomputer, das den vollständigen Android System Stack abbildet. Bis auf die Möglichkeit zu telefonieren stehen dem Benutzer die Hardware und Software eines typischen Android Smartphones zur Verfügung. Folgende Hardware wird emuliert: 82 ARMv5 Prozessor mit entsprechender Speicherausstattung 16-bit LCD-Display Tastatur Soundchip SD Memory Card GSM Modem SIM Karte Der Emulator wird auf der Kommandozeile mit dem Befehl emulator gestartet und durch zahlreiche Parameter konfiguriert. Einige wichtige Parameter lauten: 83 Parameter -sdcard <filepath> -wipe-data -noaudio -skin <skinid> Beschreibung Es wird eine SD Memory Card eingebunden, welche durch eine Image-Datei repräsentiert wird. Diese lässt sich mit dem Werkzeug mksdcard erzeugen. Setzt den Emulator auf Werkseinstellung zurück. Alle Änderungen und installierte Applikationen gehen verloren. Schaltet die Audioeigenschaften vom Emulator ab. Startet den Emulator mit der angegebenen Oberfläche. Tab. 17: Parameter für den Android Emulator Standardmäßig wird die Oberfläche HVGA-P mit einer Auflösung von 320x480 Pixeln im Hochformat geladen. Insgesamt werden vier verschiedene Oberflächen im SDK bereitgestellt. Diese befinden sich im Unterordner tools\lib\images\skins vom installiertem Android SDK: 82 Vgl. [Andr09i] 83 Vgl. [Andr09i]

45 3 Android im Detail 39 Name Beschreibung HVGA-L 480x320, Querformat Aussehen HVGA-P 320x480, Hochformat QVGA-L 320x240, Querformat QVGA-P 240x320, Hochformat Tab. 18: Vier verschiedene Skins vom Android Emulator [Andr09i] Im Internet sind viele weitere Oberflächen zu finden. Diese sind insofern sinnvoll, als dass ein Entwickler seine Applikation in den unterschiedlichsten Auflösungen testen kann. Erwähnenswert ist die Oberfläche namens T-Mobile G1, da es das erste erschienene Android Smartphone nachbildet, inklusive der aufklappbaren Tastatur Die Oberfläche T-Mobile G1 ist zu finden auf: [Shark08].

46 3 Android im Detail Hierarchy Viewer Hierarchy Viewer ist ein Werkzeug um die Benutzeroberfläche einer Applikation detailliert zu untersuchen. Gestartet wieder dieser auf der Kommandozeile mit dem Befehl hierarchyviewer. Es wird ein laufender Emulator oder ein angeschlossenes Endgerät vorausgesetzt, da der aktuelle Screen die Basis für die Analyse darstellt. Im Layout View kann der Benutzer die GUI-Komponenten in einer Baumdarstellung betrachten. Die zweite Ansicht wird als Pixel Perfect View bezeichnet und bietet die Möglichkeit, mit einer virtuellen en Lupe den Screen pixelgenau zu analysieren Draw 9-patch Draw 9-patch ist ein WYSIWYG-Editor zur Erstellung von NinePatch-Grafiken. Dabei handelt es sich um Grafiken mit zusätzlichen Informationen über Streckverhalten sowie Textpositionierung, die in Android für GUI-Komponenten wie z.b. Buttons verwendet werden. Gestartet wird der Editor auf der Kommandozeile mit dem Befehl draw9patch. Anhand eines Beispiels soll der Vorteil von NinePatch-Grafiken verdeutlicht werden: Für eine GUI wurde von einem Designer folgender Button erzeugt: Abb. 18: Beispiel-Button Der Button soll in einer GUI mit einem langen Text gefüllt werden. Damit der Text in den Button passt, muss die Grafik in X-Richtung gestreckt werden. Das Ergebnis sieht so aus: Abb. 19: Beispiel-Button in X-Richtung gestreckt Die Probleme sind klar ersichtlich: Da die Grafik proportional gestreckt wurde, sind die Rahmen als auch die Schatten ebenso gestreckt worden. Zum Zweiten ragt der Text über die Begrenzungen hinaus. Die Lösung für das Problem besteht darin, mit Draw 9-patch die ursprüngliche Grafik um zusätzliche Informationen über Streckverhalten und Textpositionierung zu versehen. Das Ergebnis sieht erwartungsgemäß ansprechender aus: 85 Vgl. [MoKo09, S. 27 f]

47 3 Android im Detail 41 Abb. 20: Beispiel-Button als NinePatch-Grafik Folgende Abbildung zeigt Draw 9-Patch mit dem Beispiel-Button Button als NinePatch-Grafik: Abb. 21: Draw 9-patch mit Beispiel-Button als NinePatch-Grafik Indem der Benutzer außerhalb des Bildes schwarze Pixel setzt, werden die zusätzlichen Informationen hinzugefügt. Der linke und obere Bereich repräsentieren dabei den Ausschnitt vom Bild, der gestreckt werden darf. Da sich der Beispiel-Button Button innerhalb der Rahmen in X-Richtung wiederholt, reicht es im oberen Bereich nur einen Pixel zu setzen. Im linken Bereich wurden so viele Pixel wie möglich ausgewählt und nur die Krümmung der Ecken ausgespart. Der rechte und untere Bereich repräsentiert die Fläche, in die Text eingefügt werden soll. Hier wurde so viel Platz wie möglich vergeben. Lediglich die Ecken wurden wieder ausgespart. Nachdem die Grafik so erweitert wurde, kann es unter der Dateiendung.9.png gespeichert werden. Die Interpretation der zusätzlichen Informationen und deren Umsetzung in der Applikations-GUI werden von Android selbständig übernommen.

48 3 Android im Detail Dalvik Debug Monitor Service Mit dem Dalvik Debug Monitor Service (DDMS) können Applikationen und Prozesse, die auf dem Emulator oder auf einem angeschlossenem Endgerät laufen, überwacht werden. Gestartet wird dieser auf der Kommandozeile mit dem Befehl ddms. Es werden folgende Funktionen angeboten: 86 Screenshot vom aktuellen Screen Port-Weiterleitung Informationen über Threads und Heap LogCat Simulation von Anrufen und SMS Folgende Abbildung zeigt Dalvik Debug Monitor Service: Abb. 22: Dalvik Debug Monitor Service Im linken Bereich sind die Applikationen und die Endgeräte bzw. Emulatoren zu sehen. Der untere Bereich LogCat zeigt das Protokoll aller Log-Ausgaben. Es können verschiedene Log- Level wie Debug, Info, Warning oder Error gewählt werden. Aufgrund der vielen Log- Einträge durch Betriebssystem und laufende Prozesse kann die Ausgabe nach Tags oder Prozess-IDs gefiltert werden. Im rechten Bereich sind verschiedene Informationen über Threads und Heap verfügbar. Beispielsweise können hier eine Garbage-Collection erzwungen oder Prozesse beendet werden. Außerdem können in diesem Bereich Ereignisse wie eingehende Anrufe, Empfang von SMS und GPS-Positionsänderungen im Emulator simuliert werden. 86 Vgl. [MoKo09, S. 31}

49 3 Android im Detail Android Debug Bridge Die Android Debug Bridge (ADB) ist ein konsolenbasiertes Programm, mit dem der Emulator oder ein angeschlossenes Endgerät angesteuert werden kann. Das Programm besteht aus folgenden drei Teilen: 87 Client, der auf dem Entwicklungsrechner läuft Dämon, der als Hintergrundprozess auf jedem Emulator bzw. Endgerät läuft Server, der als Hintergrundprozess auf dem Entwicklungsrechner läuft und die Kommunikation zwischen Client und Dämon steuert ADB wird auf der Kommandozeile mit dem Befehl adb gestartet und durch zahlreiche Parameter konfiguriert. Einige wichtige Aufrufe lauten: 88 Aufruf adb devices adb install <apk> adb uninstall <package> adb pull <remote> <local> adb push <local> <remote> adb kill-server adb start-server adb shell Beschreibung Zeigt eine Liste der Geräte wie Emulator oder angeschlossenes Endgerät an. Installiert oder updatet eine Applikation. Diese lässt sich mit dem Werkzeug Android Asset Packaging Tool erzeugen. Deinstalliert eine Applikation anhand ihres Paketnamens. Kopiert eine Datei vom Emulator oder Endgerät. Kopiert eine Datei zum Emulator oder Endgerät. Beendet den Server auf dem Entwicklungsrechner. Startet den Server auf dem Entwicklungsrechner. Startet eine Shell auf dem Emulator oder angeschlossenem Endgerät. Tab. 19: Aufrufe der Android Debug Bridge Android Asset Packaging Tool Das Android Asset Packaging Tool (AAPT) dient dazu, Archive wie JAR, ZIP und Android Package (APK) zu betrachten, erzeugen und zu aktualisieren. Eine APK-Datei ist eine Android-Applikation, die sowohl Register Machine-Bytecode als auch binäre Ressourcen beinhaltet und mit ADB auf dem Emulator oder einem angeschlossenem Endgerät installiert wird. AAPT wird auf der Kommandozeile mit dem Befehl aapt gestartet und durch zahlreiche Parameter konfiguriert Vgl. [Andr09j] 88 Vgl. [Andr09j] 89 Vgl. [Andr09k]

50 3 Android im Detail Android Interface Description Language Android Interface Description Language (AIDL) ist eine Interface Description Language (IDL), bekannt durch die Verwendung bei Remote Procedure Call (RPC). Sie dient der Kommunikation zwischen verschiedenen Prozessen, Interprocess Communication (IPC) genannt. Da bei Android jede Applikation in einem eigenen Prozess läuft, kann der Fall eintreten, dass Objekte ausgetauscht werden müssen. Zu diesem Zweck wird in der Programmiersprache IDL ein Interface (Dateiendung.aidl) geschrieben. Auf der Kommandozeile wird der Befehl aidl abgesetzt und ein Java-Interface generiert. Der Entwickler schreibt eine Stub-Klasse und implementiert die Methoden vom Interface. Die Prozesse können nun über diese Stub-Klasse die Objekte austauschen sqlite3 Sqlite3 ist ein kommandozeilenbasiertes Program, welches innerhalb einer ADB-Shell ausgeführt wird. Dadurch wird der Zugriff auf die SQLite-Datenbanken auf den Emulator oder angeschlossenen Endgerät gewährt. In der Datenbanksprache Structured Query Language (SQL) werden die Daten der relationalen Datenbanken definiert, abgefragt und manipuliert. Folgendes Beispiel erzeugt eine Datenbank mit einer Tabelle und drei Datensätzen, und gibt diese aus: Aufruf adb shell sqlite3 data/data/test.db CREATE TABLE adressen (id INT PRIMARY KEY, name VARCHAR(30)); INSERT INTO adressen(id, name) VALUES (1, 'Schmitz'); INSERT INTO adressen(id, name) VALUES (2, 'Sachweh'); INSERT INTO adressen(id, name) VALUES (3, 'Ecke-Schüth'); SELECT * FROM adressen;.exit exit Tab. 20: Beispiel für sqlite3 Beschreibung Shell starten sqlite3 starten Tabelle erzeugen Datensatz einfügen Datensatz einfügen Datensatz einfügen Daten abfragen sqlite3 verlassen Shell verlassen 90 Vgl [Andr09l]

51 3 Android im Detail mksdcard Das Werkzeug mksdcard wird auf der Kommandozeile ausgeführt und erzeugt ein FAT32- Disk-Image. Die Parameter für den Aufruf lauten: 91 Argument Beschreibung [-l label] Bezeichnung für Datenträger <size>[k M] Größe in Byte, Kilobyte oder Megabyte <file> Pfad und Dateiname für das Image Tab. 21: Parameter für mksdcard Beispielsweise erzeugt folgender Aufruf ein 64 MB großes Image mit der Bezeichnung BeispielImage und dem Dateinamen beispiel.img: mksdcard -l BeispielImage 64M beispiel.img Die SD Memory Card, welche durch die Image-Datei repräsentiert wird, lässt sich wie folgt in den Emulator einbinden: emulator -sdcard beispiel.img Im Hauptverzeichnis vom Emulator-Dateisystem befindet sich nun der Ordner sdcard. Um eine Datei wie z.b. ein Bild auf die simulierte Memory SD Card zu kopieren, wird folgender ADB-Befehl auf der Kommandozeile ausgeführt: adb push Bild.jpg sdcard In einer ADB-Shell kann auf diesen Ordner mittels Linux-Kommandos zugegriffen werden Dalvik Cross-Compiler Der Dalvik Cross-Compiler dx wird auf der Kommandozeile ausgeführt und wandelt den Stack Machine-Bytecode (Dateiendung.class) in Register Machine-Bytecode (Dateiendung.dex) um. Nur dieser transformierte Bytecode kann in der Dalvik VM als Applikation ausgeführt werden. 91 Vgl. [Andr09m]

52 3 Android im Detail UI/Application Exerciser Monkey Das Werkzeug UI/Application Exerciser Monkey wird auf der Kommandozeile ausgeführt und sendet dem Emulator oder einem angeschlossenem Endgerät eine Reihe zufälliger Benutzerereignisse. Dadurch wird eine Applikation einem Stresstest unterzogen. Es stehen dabei Optionen aus vier Kategorien zur Auswahl: 92 Anzahl der Ereignisse Beschränkung auf bestimmte Pakete Art und Frequenz der Benutzerereignisse Debugging-Einstellungen Beispielsweise öffnet folgenden Aufruf die Applikation im Paket android.monkey.test und versendet 500 zufällige Benutzerevents: 93 adb shell monkey -p android.monkey.test -v activitycreator Das Werkzeug activitycreator generiert alle notwendigen Dateien und Ordner für eine Applikation: 94 Datei oder Ordner Beschreibung AndroidManifest.xml Manifest-Datei der Applikation build.xml Ant-Script zum Erzeugen der Applikation res Ressourcen-Ordner src Quelltext-Ordner samt Activity-Klasse bin Ordner für Bytecode- und APK-Dateien Tab. 22: Von activitycreator generierte Dateien und Ordner Folgender Aufruf erzeugt im aktuellen Ordner das Notwendige für die Applikation im Paket android.activitycreator mit der Activity-Klasse namens TestActivity: activitycreator android.activitycreator.testactivity 92 Vgl. [Andr09n] 93 Vgl. [Andr09n] 94 Vgl. [MoKo09, S. 38]

53 3 Android im Detail Android Development Toolkit Plug-In für Eclipse Android Development Toolkit (ADT) ist ein Plug-In für Eclipse, durch das die meisten Entwicklungswerkzeuge in die IDE integriert werden. Sämtliche Funktionen vom Dalvik Debug Monitor Service sind über die neue Perspektive DDMS erreichbar. Mit einem Wizard wird ein neues Android-Projekt aufgesetzt, und die notwendigen Dateien und Ordner werden durch activitycreator erzeugt. Beim Kompilieren der Quelltexte werden automatisch Dalvik Cross-Compiler und Android Asset Packaging Tool ausgeführt. Zum Testen der Applikation wird Android Emulator gestartet, nachdem mittels Android Debug Bridge die Applikation installiert wurde. Erweiterungen Da bei der Entwicklung einer Android-Applikation neben Java auch XML eingesetzt wird, existieren folgende Erweiterungen für Eclipse: Android Java Editor Android Layout Editor Android Manifest Editor Android Menu Editor Android Resource Editor Android Xml Resources Editor Installation Da auf der Android Developer-Homepage mehrere SDKs zum Herunterladen angeboten werden, existieren auch verschiedene Plug-Ins. Folgende Tabelle zeigt, welches Plug-In zu welcher SDK kompatibel ist: 95 SDK Plug-In Android 1.5 SDK, r3 Android Development Toolkit Android 1.1 SDK, r1 Android Development Toolkit Android 1.0 SDK, r2 Android Development Toolkit Tab. 23: Android SDKs und Plug-Ins Die Installation erfolgt über die üblichen Mechanismen. Nach dem Neustart von Eclipse ist lediglich der Ordner vom installiertem Android SDK einzutragen. 95 Vgl. [Androi09o]

54 3 Android im Detail Endgeräte mit Android-Betriebssystem In diesem Unterkapitel werden die aktuell bekannten Endgeräte mit Android- Betriebssystem vorgestellt. Auch wird Kritik über das erste Android Smartphone, dem HTC Dream alias T-Mobile G1, wiedergegeben T-Mobile G1 HTC Dream Die High Tech Computer (HTC) Corporation, Hersteller von Mobiltelefonen mit Hauptsitz in Taiwan, fertigt das Smartphone HTC Dream. Zusammen mit der Mobilfunkgesellschaft T-Mobile wurde im Herbst 2008 das erste Endgerät mit Android-Betriebssystem unter dem Produktnamen T-Mobile G1 auf den Markt gebracht. Seit Oktober 2008 ist es in den USA und in England verfügbar, seit Anfang 2009 in Österreich und Holland, und seit Februar 2009 auch in Deutschland. Der Preis in den USA beträgt 149,99 USD mit einem speziellen Mobilfunkvertrag bei T-Mobile und 399 USD ohne Vertragsbindung. Das amerikanische Smartphone wird mit einem SIM-Lock für T-Mobile vertrieben, so dass Kunden anderer Mobilfunkanbieter ihre SIM-Karten nicht benutzen können. Findige Hacker haben es geschafft, diesen Schutz auszuhebeln. Dafür benötigt der Interessierte die Seriennummer des Gerätes, die sogenannte International Mobile Equipment Identity (IMEI), welche auf der Batterie aufgedruckt ist. Diese 15-stellige Nummer wird per versendet, und nach erfolgter Überweisung von 23,99 USD erhält der Interessierte einen einzigartigen Unlock-Code. Nach erfolgreicher Eingabe kann das G1 nun mit den SIM-Karten sämtlicher Mobilfunkanbieter betrieben werden. 96 Android Dev Phone 1 Seit Dezember 2008 wird von Google das Android Dev Phone 1 angeboten, eine spezielle Version vom HTC Dream, welches nur für registrierte Entwickler zugänglich ist. Nachdem sich der Entwickler beim Android Market registriert hat und 25 USD gezahlt hat, besteht die Möglichkeit genau ein Exemplar des Android Dev Phone 1 für 399 USD zu erwerben. Das Besondere daran ist, dass kein SIM-Lock existiert, voller Zugriff auf alle Dateien gewährt wird, der Benutzer über Superuser-Rechte verfügt, der Bootloader und das OS beliebig überspielt werden können und spezielle Entwicklerwerkzeuge vorinstalliert sind. Aus technischer Sicht ist das T-Mobile G1 mit Quadband GSM und UMTS ausgestattet, dem Mobilfunkstandard der dritten Generation (3G). Das Display ist ein 3,2 Zoll LCD-TFT- Touchscreen mit einer Auflösung von 480x320 Pixel und Farben. Die Speichergröße beträgt 256 MB ROM und 192 MB RAM und ist mittels einer SD Memory Card beliebig erweiterbar. Der Prozessor ist ein Qualcomm MSM7201A, der dynamisch getaktet ist zwischen 82 und 384 MHz. Es werden WLAN (IEEE b/g) und Bluetooth 2.0 mit erhöhter Datenrate unterstützt und eine Kombination aus Audioanschluss und Mini-USB bereitgestellt. Des Weiteren ist eine 3,2 Megapixel Kamera mit Autofokus und 2-fach digitalem Zoom integriert. Die Besonderheiten sind die ausziehbare QWERTY Tastatur, ein 96 Vgl. [Unlo]

55 3 Android im Detail 49 GPS-Empfänger für satellitenunterstützte Positionsbestimmung und Zeitmessung, ein digitaler Kompass, Beschleunigungssensoren und ein 2-Achsen Lagesensor. 97 Auch ohne ausgezogene Tastatur sind folgende Tasten verfügbar: Taste Beschreibung Hörer abheben zum Anrufen oder Entgegennehmen eingehender Anrufe Haus zum Anzeigen des Desktops bzw. zum Verlassen der Anwendung Trackball zum Navigieren ohne Touchscreen Zurück zeigt den vorherigen Screen an Hörer auflegen zum Beenden des Telefonates oder zum Aktivieren vom Energiesparmodus Menü zeigt das Kontextmenü zum aktuellen Screen Tab. 24: Funktionstasten vom T-Mobile G1 Folgende Abbildung zeigt das T-Mobile G1 in weißer Farbe mit ausgezogener Tastatur: Abb. 23: T-Mobile G1 HTC Dream [Spar09] Kritik Kurze Zeit nach der Markteinführung des T-Mobile G1 erschien auf Spiegel Online ein Artikel, der kritische Stimmen wiedergibt: Matthew Miller (ZDnet) bemängelt, dass das G1 keinen normalen Kopfhöreranschluss hat - sondern einen Kopfhörer-Adapter für den USB- Port braucht. Ihn stört auch, dass die Kamera keine Videos aufzeichnen kann. [ ] Walt Mossberg (Wall Street Journal) kritisiert vor allem die Benutzeroberfläche des Telefons. Besonders problematisch findet er, dass die Möglichkeiten, Kalender, s und Adressen mit einem Computer zu synchronisieren, höchst eingeschränkt sind. [ ] David Pogue (New York Times) [ ] stört auch, dass das Bild auf dem Schirm des G1 nicht automatisch rotiert, 97 Vgl. [Wiki09a]

56 3 Android im Detail 50 wenn man das Telefon auf die Seite dreht (wie beim iphone), dass die Batterie so schnell schlappmache (Pogue spricht von drei bis fünf Stunden unter Last) und dass es einfach nicht so hübsch ist wie das Apple-Telefon. [ ] Peter Ha (CrunchGear) beklagt, dass sich das G1 nur mit einem einzigen Googl -Account koppeln lässt. Für Menschen mit einem privaten und einem geschäftlichen -Konto ist es derzeit kaum geeignet Vodafone G2 HTC Magic Fast zeitgleich mit der Einführung des T-Mobile G1 in Deutschland wurde im Februar 2009 auf dem Mobile World Congress von Vodafone das HTC Magic unter dem Produktnamen G2 vorgestellt. Optisch und technisch ähnelt es sehr stark seinem Vorgänger. Hauptsächlich wurde die ausklappbare Tastatur weggelassen, was das Smartphone 40 Gramm leichter macht. Über eine Touchscreen-Tastatur, die Teil der neusten Android-Version ist, werden die Benutzereingaben entgegen genommen. Display und Prozessor sind identisch mit dem Vorgänger, einzig die Speichergröße wurde auf 512 MB ROM und 288 MB RAM erweitert. 99 Folgende Abbildung zeigt das Vodafone G2: Abb. 24: Vodafone G2 HTC Magic [Kret09a] 98 [Spie08] 99 Vgl. [Kret09]

57 3 Android im Detail HTC Hero Im Juni 2009 wurde von der HTC Corporation das dritte Smartphone mit Android- Betriebssystem angekündigt. Technisch und optisch ähnelt das HTC Hero erneut seinem Vorgänger, dem HTC Magic. Display, Prozessor und Speicher sind identisch. Die Digitalkamera wurde durch eine 5 Megapixel Kamera mit Autofokus abgelöst. Hinzugekommen ist eine 3,5 mm Audiobuchse, so dass mittels handelsüblicher Kopfhörer Musik gehört werden kann statt wie bisher über spezielle USB-Kopfhörer. Auch wurde der Lithium-Ionen-Akku mit 1350 mah mit etwas mehr Kapazität ausgestattet. Die wirkliche Neuerung ist die neue Bedienoberfläche HTC Sense, die der Hersteller künftig bei all seinen Smartphones mitliefern will. Mittels spezieller Profile kann der Benutzer auf unterschiedliche Inhalte und Anwendungen zugreifen. Verschiedene Kommunikationskanäle wie Telefonanrufe, s oder SMS werden in eine einheitliche Ansicht integriert. 100 Folgende Abbildung zeigt das HTC Hero: Abb. 25: HTC Hero [Kret09b] 100 Vgl. [Kret09b]

58 3 Android im Detail Kogan Agora Ende Januar 2009 sollte das ursprünglich zweite Android Smartphone vom australischen Hersteller Kogan weltweit in den Handel kommen. Das Smartphone sollte es in zwei Varianten geben, als Agora und Agora Pro. Beide Smartphones sollten mit einem 2,5 Zoll großem Touchscreen-Display ausgestattet sein, einer QWERTY-Tastatur auf der Vorderseite, UMTS und Bluetooth Schnittstellen und einen 3,5 mm Kopfhöreranschluss. Der Prozessor ist mit 624 MHz getaktet und der interne Speicher 256 MB groß. Der Preis sollte für das Modell Agora 299 AUD und für Agora Pro 399 AUD betragen. Das teurere Modell sollte zusätzlich ein GPS-Empfänger, Unterstützung für WLAN und eine 2 Megapixel Digitalkamera bieten. 101 Die Auslieferung beider Smartphones wurde zwei Wochen vor Markteintritt gestoppt. Als Grund dafür wurde die vergleichsweise niedrige Auflösung von 320x240 Pixel angegeben. Im Vergleich dazu bietet das T-Mobile G1 eine Auflösung von 480x320 Pixel, welches bereits als Referenz für Softwareentwickler gilt. 102 Folgende Abbildung zeigt das Kogan Agora (Pro): Abb. 26: Kogan Agora (Pro) [Kret09c] 101 Vgl. [Kret09c] 102 Vgl. [Kret09d]

59 3 Android im Detail Lenovo OPhone Der durch seine Notebooks bekannt gewordene Hersteller Lenovo produziert auch ein Android Smartphone, welches firmenintern unter dem Namen OPhone geführt wird. Da das Gerät für den asiatischen Markt ausgelegt ist, ist die Wahrscheinlichkeit sehr gering dass es in Deutschland verfügbar sein wird. Auf eine ausziehbare Tastatur und sogar auf die Menütasten wird gänzlich verzichtet, da die Eingabe über eine virtuelle Tastatur erfolgen soll, wahlweise in Chinesisch oder Englisch. Über Prozessor und Speicherausstattung ist bisher nichts bekannt. Allerding soll das Gerät über eine 5 Megapixel Kamera mit Autofokus, Blitz und Videofunktion verfügen. 103 Folgende Abbildung zeigt das Lenovo OPhone: Abb. 27: Lenovo OPhone [Melz08] 103 Vgl. [Melz08]

60 3 Android im Detail Samsung I7500 Galaxy Seit Juni 2009 ist beim Mobilfunkanbieter O 2 auch ein Smartphone mit Android- Betriebssystem erhältlich, das Samsung I7500 Galaxy. Das 3,2 Zoll Touchscreen Display benötigt durch die Active Matrix Organic Light Emitting Diode (AMOLED) Technik keine Hintergrundbeleuchtung wie bei LCD und hat dadurch einen erheblich verbesserten Kontrast. 104 Die Speicherausstattung ist mit 8 GB konkurrenzlos und lässt sich mittels microsd-karte auf bis zu 32 GB erweitern allerdings nur, wenn vorher das Gerät ausgeschaltet und der Akku entfernt wird. Im Gegensatz zum T-Mobile G1 mit 1150 mah verfügt die Batterie mit 1500 mah über deutlich mehr Kapazität. Zu den üblichen Schnittstellen zählt auch ein 3,5 Millimeter Kopfhöreranschluss. Des Weiteren ist das Gerät mit einer 5 Megapixel Digitalkamera mit LED-Blitz ausgestattet. 105 Folgende Abbildung zeigt das Samsung I7500 Galaxy: Abb. 28: Samsung I7500 Galaxy [Kret09e] 104 Vgl. [Webf09] 105 Vgl. [Kret09e]

61 4 Entwicklung eines Anmeldeformulars 55 4 Entwicklung eines Anmeldeformulars In diesem Kapitel wird am Beispiel eines Anmeldeformulars gezeigt, wie eine Android- Applikation entwickelt wird. Dabei werden zuerst die Anforderungen zusammengefasst und anschließend die Erstellung eines Projektes und die Umsetzung erläutert. Die späteren Unterkapitel demonstrieren, wie GUI-Komponenten angepasst und die Applikation internationalisiert wird. 4.1 Anforderungen Es soll ein typisches Anmeldeformular entwickelt werden. Der Benutzer soll seinen Namen und ein Passwort eingeben können, wobei das Passwort, wie in einem Browserformular, unleserlich erscheinen soll. Die Bestätigung des Formulars erfolgt über einen Button. Über die Menü-Taste soll der Benutzer zu einem Hilfe-Dialog gelangen. Zusätzlich soll eine Checkbox verfügbar sein, die im aktivierten Zustand die Daten des Benutzers speichert und beim nächsten Aufruf des Dialogs automatisch in die Texteingabefelder einfügt. 4.2 Erstellung von einem Android Project Unter Eclipse wird mit dem Wizard ein Android Project erstellt. Der Projektname Anmeldeformular ist nur für Eclipse relevant und nicht für Android. Beim Paketnamen wird de.android.login eingetragen. Einige der Entwicklungswerkzeuge benötigen diesen Paketnamen, der im Emulator oder im angeschlossenen Endgerät einzigartig sein muss. Der Name der Activity repräsentiert den Klassennamen, der vom Wizard im benannten Paket erzeugt wird. Hier wird LoginActivity gewählt. Zuletzt gilt es die Applikation zu benennen. Es wird Anmeldeformular gewählt. Vom Wizard wurde das Projekt Anmeldeformular mit folgenden Dateien erzeugt:

62 4 Entwicklung eines Anmeldeformulars 56 Abb. 29: Das Android-Projekt: Anmeldeformular Diese werden nun detailliert erläutert, da sie maßgeblich für das Verständnis sind, wie Applikationen entwickelt werden Manifest Die Datei AndroidManifest.xml ist die oberste Instanz einer jeden Applikation. 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="de.android.login" 4 android:versioncode= ="1" 5 android:versionname= ="1.0.0"> 6 7 <application <activity android:name=".loginactivity" <intent-filter> 14 <action android:name="android.intent.action.main" /> 15 <category android:name="android.intent.category.launcher" /> 16 </intent-filter> </activity> </application> </manifest>

63 4 Entwicklung eines Anmeldeformulars 57 Das äußerste Element ist manifest (Zeilen 2-5). Dieses beinhaltet die Attribute XML- Namespace, Paketname, der im Wizard angegeben wurde, Versionscode und Versionsname. Die letzeren beiden müssen vor jeder Auslieferung erhöht werden, damit Android die Applikation als Update erkennt. Das Element application (Zeilen 7-8) beinhaltet die Attribute icon und label. Beide sind als Referenzen zu verstehen, wie sie in Android häufig verwendet werden. Mit dem wird die Datei icon.png im Ordner res/drawable, ein Bild mit einer Größe von 48x48 Pixel, als Icon für die Applikation gesetzt. Der referenziert den String Anmeldeformular in der Ressource res/values/strings.xml, die später noch erläutert wird. Da die Applikation nur aus einer Activity besteht, gibt es hier auch nur ein Element activity (Zeilen 10-11). Dieses beinhaltet die Attribute name, welches den Klassennamen wiedergibt, und label, welches wieder auf den String Anmeldeformular verweist, der in der Titlebar der Activity zu sehen sein wird. Das Element intent-filter (Zeilen 14-15) gibt an, dass diese Activity als erstes bei Programmstart dargestellt wird. Bei mehreren Activities würde nur eine diesen Intent-Filter besitzen, die restlichen wären leer Strings-Ressource Die Datei res/values/strings.xml ist die Ressource für alle Strings innerhalb einer Applikation: 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string name="hello">hello World, LoginActivity</string> 4 <string name="app_name">anmeldeformular</string> 5 </resources> Das oberste Element ressources (Zeile 2) hat keine Attribute. Es beinhaltet lediglich ein oder mehrere string-elemente. Diese werden über das Attribut name eindeutig identifiziert. Der String hello (Zeile 3) wurde vom Wizard erzeugt und wird im Layout res/layout/main.xml referenziert. Da aber das Layout neu gestaltet werden wird, kann dieses Element ignoriert bzw. gelöscht werden. Wie bereits erwähnt wird der String app_name (Zeile 4) in anderen Ressourcen folgendermaßen

64 4 Entwicklung eines Anmeldeformulars Layout Zu jeder Activity gehört in der Regel ein Layout. Die Date res/layout/main.xml wurde vom Wizard erzeugt, damit das Projekt lauffähig ist. Obwohl das Layout neu gestaltet wird, soll dieses einen ersten Einblick gewähren: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent"> 6 7 <TextView android:layout_width="fill_parent" 8 android:layout_height="wrap_content" 9 /> </LinearLayout> Das oberste Element LinearLayout (Zeilen 2-5) ist ein Container, der die inneren Komponenten linear ausrichtet. Durch das Attribut orientation mit dem Wert vertical (Zeile 3) werden alle Komponenten waagerecht nebeneinander ausgerichtet. Die Alternative horizontal würde alle Komponenten untereinander anordnen. Mittels der Attribute layout_width und layout_height wird die Größe eingestellt (Zeilen 4-5). Der Wert fill_parent bedeutet, dass so viel Platz in Anspruch genommen wird, wie durch die übergeordneten Elemente bereitgestellt wird. Da LinearLayout das oberste Element ist, wird hier das gesamte Display beansprucht. Die Alternative wrap_content würde nur so wenig Platz wie nötig benötigen. Das einzige innere Element ist TextView (Zeilen 7-9). Es ist so breit wie das übergeordnete Element erlaubt, also so breit wie das Display. Die Höhe ist minimal und hängt von der Größe der Schriftart ab. Es wird der Text angezeigt, der in der Strings-Ressource mit dem Namen hello eindeutig identifiziert wird: Hello World, LoginActivity.

65 4 Entwicklung eines Anmeldeformulars Ressourcen in Java Die Klasse src/de/android/login/r.java wird automatisch erzeugt und bei Änderungen an den Ressourcen aktualisiert. Sie beinhaltet Konstanten, durch die in einem Java- Quelltext auf die Ressourcen zugegriffen werden kann: 1 package de.android.login; 2 3 public final class R { 4 public static final class attr { 5 } 6 public static final class drawable { 7 public static final int icon=0x7f020000; 8 } 9 public static final class layout { 10 public static final int main=0x7f030000; 11 } 12 public static final class string { 13 public static final int app_name=0x7f040001; 14 public static final int hello=0x7f040000; 15 } 16 } Activity Die Activity, die laut dem Manifest zu Programmstart ausgeführt werden soll, ist die Klasse src/de/android/login/loginactivity.java. Vom Wizard wurde folgendes Gerüst erzeugt: 1 package de.android.login; 2 3 import android.app.activity; 4 import android.os.bundle; 5 6 public class LoginActivity extends Activity { 7 9 public void oncreate(bundle savedinstancestate) { 10 super.oncreate(savedinstancestate); 11 setcontentview(r.layout.main); 12 } 13 } Die Klasse LoginActivity erbt von der Klasse android.app.activity (Zeile 6). Dadurch ist die gesamte Funktionalität verfügbar, die eine Applikation benötigt. Um ein verändertes Verhalten zu erreichen, müssen Methoden der Oberklasse überschrieben werden. Durch die (Zeile 8) wird dies zum Ausdruck gebracht. Die Callback-Methode oncreate (Zeilen 9-12) wird ausgeführt, sobald die Activity erzeugt wird. Als erstes wird die Funktionalität der Oberklasse aufgerufen, die überschrieben wurde (Zeile 10). Anschließend wird mittels der Klasse R das Layout res/layout/main.xml geladen und gesetzt.

66 4 Entwicklung eines Anmeldeformulars Lebenszyklus einer Activity Folgende Abbildung zeigt den Lebenszyklus einer Activity. Die Funktionalitäten der aufgeführten Callback-Methoden werden, wie bereits erwähnt, von der Elternklasse android.app.activity bereitgestellt: Abb. 30: Lebenszyklus einer Activity [Andr09p] Der Lebenszyklus einer Activity hängt vom Laufzeitsystem ab, welches alle Activities auf einen Stack legt. Wird eine Activity erzeugt, so wird sie oben auf den Stack gelegt. Der Stack wächst also mit der Anzahl der Activities. Die oberste Activity ist die derzeit aktive. Drückt der Benutzer die Zurück-Taste, so werden die Positionen der obersten beiden Activities auf

67 4 Entwicklung eines Anmeldeformulars 61 dem Stack vertauscht. Damit wird die aktive Activity deaktiviert und die vorherige reaktiviert. Müssen nun Ressourcen freigegeben werden, so wird die unterste Activity vom Stack entfernt und zerstört. 106 Die verschiedenen Zustände einer Activity sind: 107 Zustand aktiv pausiert gestoppt zerstört Beschreibung Die Activity ist das oberste Element auf dem Stack. Sie ist im Vordergrund sichtbar und hat den Fokus. Eine aktive Activity wird nur im Notfall vom Laufzeitsystem vom Stack genommen. Tritt eine neue Activity in den Vordergrund und verdeckt die alte aber nicht vollständig 108, so wechselt die alte Activity in den Zustand pausiert. Eine pausierte Activity wird nur sehr selten vom Laufzeitsystem vom Stack genommen. Tritt eine neue Activity in den Vordergrund und verdeckt die alte vollständig, so wechselt die alte Activity in den Zustand gestoppt. Sie bleibt aus Performancegründen im Speicher, für den Fall dass sie erneut aufgerufen wird. Eine gestoppte Activity wird nur dann vom Laufzeitsystem vom Stack genommen, wenn sie die unterste Position einnimmt. Eine Activity, die vom Laufzeitsystem vom Stack genommen wird, wechselt in den Zustand zerstört. Sie wird aus dem Speicher entfernt und belegt keine Ressourcen. Tab. 25: Alle Zustände einer Activity 106 Vgl. [MoKo, S. 86] 107 Vgl. [Moko09 S. 86 ff] 108 z.b. aufgrund von transparentem Hintergrund

68 4 Entwicklung eines Anmeldeformulars Umsetzung In diesem Unterkapitel werden alle relevanten Schritte aufgeführt, die für die Umsetzung der Anforderungen wichtig sind Layout Für die Umsetzung von dem Anmeldeformular wurde als erstes ein neues Layout erzeugt. Das neue Layout login.xml benutzt als oberstes Element ein RelativeLayout, mit dem sich die inneren Elemente abhängig von einander positionieren lassen. Rechts oben wird das Texteingabefeld für den Benutzernamen platziert. Ein solches Feld wird durch das Element EditText abgebildet. Die Position erhält es mittels android:layout_alignparentright="true" t_alignparentright="true".. Damit andere Elemente in Abhängigkeit dazu positioniert werden können, bedarf es einer ID. Dies wird mit dem Attribut gewährleistet. Links oben wird das Label Benutzer: platziert. Ein Label wird durch das Element TextView abgebildet. Damit es sich auf gleicher Höhe mit dem Texteingabefeld befindet, wird das Attribut benutzt. Das Texteingabefeld für das Passwort ist ebenfalls ein EditText.. Damit der eingegebene Text unleserlich ist, wird das Attribut android:password="true" benutzt. Die CheckBox mit der Bezeichnung Daten speichern wird unterhalb vom Passwortfeld positioniert. Dies wird mit dem Attribut erreicht. Unterhalb der CheckBox wird ein Button mit dem Text anmelden positioniert. Damit ist folgendes Layout erreicht: Abb. 31: Layout vom Anmeldeformular

69 4 Entwicklung eines Anmeldeformulars Benutzerereignisse Der Button hat als Attribut mittels dem Attribut eine ID zugewiesen bekommen. In Java erben alle Komponenten von der Oberklasse android.view.view. Die Methode findviewbyid liefert einen solchen View, der mittels der Klasse R eindeutig identifizierbar ist. Um auf den Button zuzugreifen, ist folgender Aufruf samt Casting notwendig: Button login = (Button) findviewbyid(r.id.button_login); Um auf ein auf ein Benutzerereignis wie das Betätigen des Buttons zu reagieren, bedarf es Listener, die mittels Setter mit dem jeweilige Objekt verknüpft werden. Die gesuchte Methode lautet setonclicklistener und erwartet als Parameter eine Instanz der Klasse android.view.view.onclicklistener. Dafür existieren zwei Möglichkeiten. Entweder wird eine eigene Klasse LoginListener geschrieben, die als lokale Unterklasse von LoginActivity definiert wird. private class LoginListener implements OnClickListener { public void onclick(view v) { } } Das Setzen des Listeners funktioniert wie folgt: login.setonclicklistener(new LoginListener()); Oder es wird eine anonyme Klasse benutzt, die bei der Parameterübergabe definiert wird. login.setonclicklistener(new OnClickListener() { public void onclick(view view) { } }); Der Nachteil besteht darin, dass der Code nicht wiederverwendet werden kann. Daher wird innerhalb dieser Arbeit ausschließlich die erste Möglichkeit benutzt.

70 4 Entwicklung eines Anmeldeformulars Modaler Fehlerdialog Im LoginListener soll als erstes Benutzername und Passwort ausgelesen werden. Dazu wird wieder die Methode findviewbyid aufgerufen. TextView tv String user = (TextView) findviewbyid(r.id.edit_user); = tv.gettext().tostring(); tv = (TextView) findviewbyid(r.id.edit_password); String password = tv.gettext().tostring(); Ist die Länge gleich null, so wurde vom Benutzer keine Eingabe getätigt und es wird ein modaler Fehlerdialog ausgegeben. Dieser wird durch eine Instanz der Klasse android.app.alertdialog gewährleistet. Mittels Setter wird eine Überschrift, eine Meldung, ein Button mit der Bezeichnung OK und ein Icon gesetzt: Builder builder = new AlertDialog.Builder(LoginActivity.this); builder.settitle("wichtig"); builder.setmessage("bitte geben Sie Ihre Daten ein."); builder.setpositivebutton("ok", null); builder.seticon(r.drawable.important); builder.show(); Folgender modaler Fehlerdialog wird angezeigt: Abb. 32: Modaler Fehlerdialog vom Anmeldeformular

71 4 Entwicklung eines Anmeldeformulars Kontextmenü Beim Erzeugen der Activity wird eine Callback-Methode aufgerufen, die die Erzeugung vom Kontextmenü regelt. Durch die wird zum Ausdruck gebracht, dass eine Methode der Oberklasse überschrieben wird. Als erstes muss in der Methode oncreateoptionsmenu die Funktionalität der Oberklasse aufgerufen werden. Anschließend werden beliebig viele Objekte der Klasse android.view.menuitem mit einer eindeutigen ID, einem Text und einem Icon erzeugt und der übergebenen Instanz der Klasse android.view.menu public boolean oncreateoptionsmenu(menu menu) { super.oncreateoptionsmenu(menu); MenuItem mihilfe = menu.add(0, 0, 0, "Hilfe"); mihilfe.seticon(r.drawable.light); } return true; Drückt der Benutzer die Menü-Taste, so wird die Methode onoptionsitemselected aufgerufen. Diese ist in der Elternklasse android.app.activity definiert und wird überschrieben. Der Getter getitemid vom Parameter android.view.menuitem liefert die eindeutige ID zurück. Mittels einer switch-anweisung können so alle verschiedenen Menüpunkte abgearbeitet werden. Der Hilfe-Dialog wird analog zum modalen Fehlerdialog durch eine Instanz der Klasse android.app.alertdialog public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()) { case 0: Builder builder = new AlertDialog.Builder(this);... return true; } return false; } Abb. 33: Kontextmenü (links) und Hilfe-Dialog (rechts) vom Anmeldeformular

72 4 Entwicklung eines Anmeldeformulars Persistenz Die letzte Anforderung, die es zu erfüllen gilt, ist die Persistenz. Der Benutzername und das Passwort sollen gespeichert werden. Es besteht die Möglichkeit, die beiden Strings in einer Datei zu serialisieren. Auch ist es möglich, von der bereits besprochenen SQLite-Datenbank Gebrauch zu machen. Dafür müssten im Quelltext verschiedene SQL-Statements abgesetzt werden: Erzeugung der Tabelle mittels CREATE-Statement Einfügen des Datensatzes mittels INSERT-Statement Abfragen der Daten mittels SELECT-Statement Da der Einsatz einer Datenbank für diese Aufgabe mit zu viel Arbeit verbunden ist, wird nach einer weiteren Alternative gesucht. Android stellt die Klasse android.content.sharedpreferences zur Verfügung, die bestimmte Daten pro Applikation speichern kann. Das Speichern der beiden Strings lässt sich folgendermaßen umsetzen: SharedPreferences prefs = getsharedpreferences("login", MODE_PRIVATE); Editor ed = prefs.edit(); ed.putstring("benutzer", user); ed.putstring("passwort", password); ed.commit(); Durch MODE_PRIVATE sind die gespeicherten Daten nur für diese Applikation verfügbar. Der Name Login bezeichnet dabei die SharedPreferences eindeutig. Das Lesen der beiden Strings erfolgt analog: SharedPreferences prefs = getsharedpreferences("login", MODE_PRIVATE); String user = prefs.getstring("benutzer", ""); String password = prefs.getstring("passwort", ""); Neben der Klasse String werden folgende unterstützt: Boolean Float Int Long In dem Fall, dass lesend auf nicht existente SharedPreferences zugegriffen wird, erfolgt der zweite Parameter als Rückgabe, also ein Leerstring. Dadurch werden dem Entwickler Abfragen auf null erspart.

73 4 Entwicklung eines Anmeldeformulars Anpassung der GUI-Komponenten Es soll der Versuch unternommen werden, die GUI-Komponenten anzupassen. Dabei wird im ersten Abschnitt die Hintergrundgrafik ausgetauscht. Im zweiten Abschnitt wird ein Button durch eine NinePatch-Grafik abgewandelt Hintergrundgrafik Da das Display eine Auflösung von 320x480 Pixel hat, wurde eine Hintergrundgrafik wallpaper.png mit gleicher Auflösung erzeugt und in den Ordner res/drawable kopiert. Jede GUI-Komponente hat das Attribut android_background.. Die oberste Komponente im Layout login.xml ist, wie bereits erwähnt, das RelativeLayout und beansprucht das gesamte Display. Durch folgende Zeilen wird das Hintergrundbild gesetzt: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" Bei einigen Endgeräten wie z.b. dem T-Mobile G1 muss der Benutzer, um Benutzername und Passwort auf der Tastatur einzugeben, dieses aufklappen und um 90 Grad im Uhrzeigersinn drehen. Das System streckt bzw. staucht die Hintergrundgrafik proportional, damit diese das gesamte Display ausfüllt. Folgende Abbildung gibt beide Ansichten wieder: Abb. 34: Anmeldeformular im Hochformat (links) und im Querformat (rechts) Das Problem, dass die Hintergrundgrafik auf dem aufgeklappten Endgerät verzerrt aussieht, lässt sich durch mehrere Layouts lösen. Dafür muss die Layout-Datei login.xml im Ordner res/layout gelöscht werden und in zwei neu erzeugte Ordner kopiert werden: res/layout-land und res/layout-port.. Der erste Ordner beinhaltet Layouts im Querformat (engl. landscape) und der zweite solche im Hochformat (engl. portrait). Es wird

74 4 Entwicklung eines Anmeldeformulars 68 eine neue Hintergrundgrafik mit der Auflösung 480x320 Pixel erstellt und im Querformat- Layout referenziert. Durch die identischen Dateinamen beider Layouts erkennt das System, dass es sich um das gleiche Layout in unterschiedlichen Formaten handelt und benutzt je nach aktiver Auflösung das entsprechende Layout. Durch diese Technik ist es möglich, das Layout vollständig für die jeweilige Auflösung anzupassen. Es sollte lediglich darauf geachtet werden, dass in den Layout-Dateien die gleichen GUI-Komponenten mit gleichen IDs benutzt werden Button mit NinePatch-Grafik Um die Grafik eines Buttons durch eine andere zu ersetzen, wird erneut von dem Attribut android_background Gebrauch gemacht. Analog zur Hintergrundgrafik wird die Grafikdatei button.9.png in den Ordner res/drawable kopiert. Es handelt sich dabei um die NinePatch-Grafik aus Kapitel Draw 9-patch. Diese wurde mit dem Entwicklungswerkzeug Draw 9-patch erzeugt und beinhaltet zusätzliche Informationen über Streckverhalten und Textpositionierung. Folgende Abbildung zeigt den angepassten Anmelden-Button: Abb. 35: Anmeldeformular mit angepasstem Anmelden-Button Auf den ersten Blick wirkt das Ergebnis korrekt. Die Grafik wird wie gewünscht gestreckt und auch der Text ist richtig positioniert. Bei Betätigung des Buttons wird auch das richtige Benutzerereignis ausgeführt. Allerdings erscheint der Button leblos, da es kein visuelles Feedback gibt. Durch Benutzung des Trackballs lassen sich die GUI-Komponenten fokussieren. Dies wird durch eine orangene Umrandung bzw. Einfärbung dargestellt. Wird ein Button betätigt, so wird dies durch eine gelbe Einfärbung repräsentiert. Folgende Abbildung zeigt die verschiedenen Zustände eines Buttons: Abb. 36: Zustände eines Buttons: normal (links), fokussiert (Mitte), gedrückt (rechts)

75 4 Entwicklung eines Anmeldeformulars 69 All dies trifft auf den angepassten Anmelden-Button nicht zu. Die Suche nach entsprechenden Layout-Attributen blieb erfolglos. Somit ist das Problem zu diesem Zeitpunkt nicht lösbar. 4.5 Internationalisierung In diesem Unterkapitel wird erläutert, wie eine Applikation zu entwickeln ist, damit sie ohne Änderung des Quellcodes an andere Sprachen angepasst werden kann. Die Bezeichnung Internationalisierung (I18N 109 ) umfasst in der Informatik folgende Bereiche: Sprache der Benutzeroberfläche Zeichensatz Tastaturlayout Zahlenformat Währungsformat Datumsformat Zeitformat Da in dieser Arbeit nur exemplarisch gezeigt wird, wie sich Mehrsprachigkeit mit Android umsetzen lässt, werden die restlichen Bereiche übergangen Strings-Ressource Wie bereits am Anfang des Kapitels erwähnt ist die Datei res/values/strings.xml die Ressource für Strings innerhalb einer Applikation. Für die Umsetzung von Mehrsprachigkeit ist es zwingend erforderlich, die Texte aus den Layouts zu extrahieren und zentral in einer Strings-Ressource zu speichern. Am Beispiel von login.xml bedeutet dies: <TextView android:text="benutzer:" /> <TextView android:text="passwort:" /> <Button android:text="anmelden" /> Wird zu: <TextView /> <TextView /> <Button /> 109 Die englische Übersetzung internationalization wird häufig mit I18N abgekürzt, da sich 18 Buchstaben zwischen I und N befinden.

76 4 Entwicklung eines Anmeldeformulars 70 Die Datei res/values/strings.xml wird erweitert um: <string name="user">benutzer:</string> <string name="password">passwort:</string> <string name="login">anmelden</string> Um die Applikation für die Sprachen Deutsch, Englisch und Französisch zu internationalisieren, ist es notwendig, für jede Sprache eine Kopie der Datei strings.xml anzulegen und in folgende Unterordner zu kopieren: res/values-de für Deutsch res/values-en für Englisch res/values-fr für Französisch Der Namen der Ordner bildet sich demzufolge aus der Zeichenkette values- und einem Länderkürzel nach ISO Nachdem diese Dateien übersetzt wurden, hat z.b. die französische Strings-Ressource res/values-fr/strings.xml folgenden Inhalt: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="user">client:</string> <string name="password">mot de passe:</string> <string name="login">s'inscrire</string> </resources> Da die XML-Dateien in UTF-8 kodiert sind, stellen sämtliche Sprachen samt Sonderzeichen kein Problem dar. Die für XML reservierten Zeichen werden durch den Android Resource Editor in passende Entitäten gewandelt. Da die Strings noch in der Datei res/values/strings.xml definiert sind, wird Android beim Programmstart diese Strings benutzen. Erst wenn explizit auf eine andere Sprache umgeschaltet wird, lädt das System die entsprechende länderabhängige Ressource. Wenn die Strings dort entfernt werden, startet jede Applikation mit englischer Ländereinstellung. Das liegt daran, dass bisher nur englische Versionen von Android verfügbar sind.

77 4 Entwicklung eines Anmeldeformulars Umschalten der Ländereinstellung Für das Umschalten auf eine bestimmte Ländereinstellung wird die in Java gebräuchliche Klasse java.util.locale benutzt. Die Methode getresources der Elternklasse android.app.activity liefert eine Instanz der Klasse android.content.res.resources zurück. Diese Ressource beinhaltet eine Instanz der Klasse android.content.res.configuration, in die das jeweilige Locale einzutragen ist: Im folgenden Beispiel wird auf deutsche Ländereinstellung umgeschaltet: Resources resource = getresources(); Configuration conf = resource.getconfiguration(); DisplayMetrics dm = resource.getdisplaymetrics(); conf.locale = Locale.GERMANY; resource.updateconfiguration(conf, dm); Locale.setDefault(conf.locale); setcontentview(r.layout.login); Im letzen Schritt wird das Layout erneut gesetzt. Dabei gehen alle Benutzereingaben verloren. Diese sind ggfs. zu sichern und anschließend zu restaurieren.

78 5 Entwicklung eines Sportwetten-Prototyps 72 5 Entwicklung eines Sportwetten-Prototyps In diesem Kapitel wird der Prototyp einer Sportwetten-Applikation entwickelt. Im ersten Schritt werden Sportwetten erläutert. Es folgt ein Unterkapitel über die grafische Benutzerschnittstelle. Anschließend wird versucht, bestehende Java-Bibliotheken in Android zu integrieren. Aufgrund der Schwierigkeiten wurde ein spezielles Werkzeug zur Darstellung von Abhängigkeitsbäumen entwickelt, welches im nächsten Abschnitt vorgestellt wird. Zuletzt wird der Prototyp an bestehende Server-Software angebunden. 5.1 Sportwetten Bei einer Sportwette werden Geldeinsätze auf das Eintreffen eines bestimmten Sportereignisses getätigt. Um eine solche Sportwette abzuschließen begibt sich der Kunde in ein Wettlokal, füllt einen Wettschein aus und hinterlegt den Wetteinsatz. Der potentielle Gewinn hängt von der Gewinnquote ab, die von einem Buchmacher angeboten wird. Folgendes Beispiel zeigt ein Wettereignis auf einem Wettschein: 110 Ereignis 1 X 2 Bayern München vs. Borussia Dortmund 1,80 3,20 4,0 Tab. 26: Wettereignis auf einem Wettschein Der Ausgang 1 repräsentiert den Sieg der zuerst benannten Mannschaft Bayern München. Analog dazu bezeichnet 2 den Sieg von Borussia Dortmund. Ein Unentschieden in dem Fußballspiel wird durch X symbolisiert. Wird nun eine Wette in Höhe von 15 EUR auf Borussia Dortmund abschlossen, so wäre der Gewinn 60 EUR. Dies wird berechnet, indem der Wetteinsatz 15 EUR mit der Gewinnquote 4,0 multipliziert wird. Der Reingewinn beträgt 45 EUR, da von dem Gewinn 60 EUR die 15 EUR Wetteinsatz zu subtrahieren sind. In der Praxis ist noch die Buchmacher-Marge abzuziehen, die meistens prozentual vom Wetteinsatz berechnet wird. 111 Systemwette Neben dieser Einzelwette gibt es die Systemwette, bei der auf Kombinationen von Einzelwetten gewettet wird. Beispielsweise bezeichnet die Systemwette 3 aus 5 alle Dreierkombinationen von 5 Einzelwetten. Rechnerisch sind dies 10 unterschiedliche Dreierkombinationen. Der Gewinn errechnet sich hierbei aus der Anzahl richtig getippter Kombinationen und ist vergleichbar mit dem Lottospiel 6 aus Vgl. [Wiki09j] 111 Vgl. [Wiki09j] 112 Vgl. [Wiki09j]

79 5 Entwicklung eines Sportwetten-Prototyps Grafische Benutzerschnittstelle In diesem Unterkapitel wird die GUI des Sportwetten-Prototyps besprochen. Da bereits im vorherigen Kapitel 4 Entwicklung eines Anmeldeformulars detailliert die Entwicklung dargestellt wurde, werden hier nur einige Besonderheiten gezielt erläutert Aktivitätsdiagramm Folgendes Aktivitätsdiagramm zeigt die einzelnen Activities und damit den Workflow der Applikation: Abb. 37: Aktivitätsdiagramm des Sportwetten-Prototyps Von jeder Activity außer Splashscreen und Anmeldung lässt sich das Hauptmenü über die Menü-Taste erreichen. Dies wurde aus Gründen der Lesbarkeit nicht extra modelliert. Der Knoten finaler Flow wurde an mehreren Stellen gewählt um das Ende eines Workflows darzustellen. Dies wird durch eine Activity mit dem Text This activity is currently under construction dargestellt. Als Begründung dafür ist aufzuführen, dass der Auftraggeber dem Autoren Designvorschläge in HTML bereitgestellt hat, die an diesen Stellen nicht weiterführen.

80 5 Entwicklung eines Sportwetten-Prototyps Listen In den Activities Hauptmenü und Konto aufladen stehen dem Benutzer mehrere Möglichkeiten zur Auswahl. Hinzu kommen die Activities Sportart, Land und Liga, die im Diagramm vereinfach modelliert wurden. Android stellt für solche Fälle die Klasse android.app.listactivity zur Verfügung. Es ist lediglich eine Liste zu füllen, die anschließend dargestellt wird. Jedes Element dieser Liste besteht aus einem Text und einem Intent. Die Klasse android.content.intent stellt in Android die Möglichkeit bereit, von einer Activity zur nächsten zu gelangen. Folgender Quellcode beendet die aktive Activity und zeigt das Hauptmenü an: Intent intent = new Intent(); intent.setclass(this, HauptmenuListActivity.class); startactivity(intent); Um das Layout der Liste anzupassen besteht die Möglichkeit, das Layout einer Zeile gegen ein selbst erstelltes auszutauschen. Es soll nicht nur ein Text dargestellt werden, sondern auch ein Icon links daneben. Dafür existiert die Klasse android.widget.simpleadapter. Um diese zu benutzen, muss der Entwickler die Liste selbständig verwalten. Die Entscheidung fiel zu Gunsten einer Struktur aus, die aus einer ArrayList besteht, deren Elemente Maps sind. In diese Maps werden nun pro Listeneintrag das Icon, der Text und das Intent gefüllt. Die Liste wird dann als Variable so definiert: List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Das Layout für die Listenzeile hauptmenu_list_row.xml ist ein LinearLayout. Dieses besteht aus den Komponenten ImageView mit der und einem TextView mit der Alle Informationen werden dem SimpleAdapter übergeben und für die Activity aktiviert: private static final String ITEM = "item"; private static final String ICON = "icon"; private static final String[] PARAM = { ITEM, ICON }; SimpleAdapter notes = new SimpleAdapter(this, list, R.layout.hauptmenu_list_row, PARAM, new int[] { R.id.item, R.id.icon }); setlistadapter(notes);

81 5 Entwicklung eines Sportwetten-Prototyps 75 Folgende Abbildung zeigt die Activity Hauptmenü mit den angepassten Listenzeilen: Abb. 38: Die Activity Hauptmenü des Sportwetten-Prototyps Dynamisches Layout mit Java In der Activity Quoten werden mehrere Wettereignisse wie auf einem Wettschein dargestellt. Dafür muss jede Zeile das Ereignis und die drei Quoten 1, X und 2 beinhalten. Die drei Quoten werden mit einem ToggleButton abgebildet. Der Versuch, erneut eine ListActivity zu benutzen, schlug fehl, da der Adapter alle Click-Events der Listenzeile verarbeitet und dadurch die Callback-Methoden der ToggleButtons nicht aufgerufen werden. Um dieses Problem zu lösen, wurde ein TableLayout gewählt. Dieses Layout besteht aus TableRows, die wiederum beliebige Komponenten beinhalten können. Folgendes Layout zeigt ein Wettereignis: <TableLayout android:orientation="vertical"> <TableRow> <TextView android:text="bayern München vs. Borussia Dortmund"/> <ToggleButton android:texton="1,80" android:textoff="1,80"/> <ToggleButton android:texton="3,20" android:textoff="3,20"/> <ToggleButton android:texton="4,0" android:textoff="4,0"/> </TableRow> </TableLayout> Pro Wetterereignis muss nun eine TableRow samt TextView und drei ToggleButtons erzeugt werden. Da die Klassen in Java verfügbar sind, kann eine Methode creategame entwickelt werden:

82 5 Entwicklung eines Sportwetten-Prototyps 76 public void creategame(tablelayout tl, String game, String quote0, String quote1, String quote2) { TableRow tr = new TableRow(this); TextView tv = new TextView(this); tv.settext(game); tr.addview(tv); ToggleButton tb1 = new ToggleButton(this); tb1.settexton(quote0); tb1.settextoff(quote0); tr.addview(tb1); ToggleButton tb2 = new ToggleButton(this); tb2.settexton(quote1); tb2.settextoff(quote1); tr.addview(tb2); ToggleButton tb3 = new ToggleButton(this); tb3.settexton(quote2); tb3.settextoff(quote2); tr.addview(tb3); } tl.addview(tr); Es ist anzumerken, dass ToggleButtons zwei verschiedene Beschriftungen erhalten können, für die Zustände eingedrückt und nicht eingedrückt. Daher wurde die Quote doppelt gesetzt. Da Wettereignisse an verschiedenen Tagen stattfinden, wird in der Tabelle eine weitere Zeile mit Datum und Überschrift eingefügt. Dafür wurde analog verfahren. Folgende Abbildung zeigt die Activity Quoten mit zwei Wettereignissen an zwei verschiedenen Tagen. Abb. 39: Die Activity Quoten des Sportwetten-Prototyps

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

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

Smartphone - Betriebssysteme. Smartphone - Betriebssysteme

Smartphone - Betriebssysteme. Smartphone - Betriebssysteme Smartphone - Betriebssysteme Peter Rami - Graz, 28.04.2009 Inhalt Smartphone Symbian OS Windows Mobile BlackBerry OS iphone OS Android Marktanteile & Ausblick Smartphone - Betriebssysteme Peter Rami -

Mehr

Mobile Application Development

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

Mehr

Walkabout: Location Based Services mit Android und dem Google Phone

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

Mehr

Geschäftsbereich Mobile Services Was ist Android?

Geschäftsbereich Mobile Services Was ist Android? Geschäftsbereich Mobile Services Was ist Android? Hinter Hoben 149 53129 Bonn www.visionera.de Ansprechpartner: Arno Becker arno.becker@visionera.de +49 228 555 1111 +49 160 98965856 Einleitung Android

Mehr

NEXT GENERATION MOBILE PHONE PLATFORMS

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

Mehr

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

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

eclipse - Entwicklungsumgebung und mehr ETIS SS05

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

Mehr

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

Präsentation Von Laura Baake und Janina Schwemer

Präsentation Von Laura Baake und Janina Schwemer Präsentation Von Laura Baake und Janina Schwemer Gliederung Einleitung Verschiedene Betriebssysteme Was ist ein Framework? App-Entwicklung App-Arten Möglichkeiten und Einschränkungen der App-Entwicklung

Mehr

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

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

Mehr

Open Source IDE - eclipse ETIS SS04

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

Mehr

Erste Erfahrungen mit Android

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

Mehr

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

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

Mehr

Sicherheit in Android

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

Mehr

Programmieren für iphone und ipad

Programmieren für iphone und ipad Markus Stäuble Programmieren für iphone und ipad Einstieg in die App-Entwicklung für das ios 4 3., aktualisierte und erweiterte Auflage dpunkt.verlag 1 Einleitung 1 1.1 Begriffe 2 1.2 Was behandelt dieses

Mehr

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap Proseminar Objektorientiertes Programmieren mit.net und C# Florian Schulz Institut für Informatik Software & Systems Engineering Einführung Was hat Cross-Plattform

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Glossar. Launching auf.

Glossar. Launching auf. 243 Ad Hoc Distribution Die Ad Hoc Distribution ist eine Möglichkeit, um Ihre entwickelte Anwendung auf anderen Endgeräten zu verteilen. Diese Art der Verteilung erfolgt ohne den App Store. Die Anzahl

Mehr

Einführung in Betriebssysteme

Einführung in Betriebssysteme Einführung in Betriebssysteme APPLE ios Entwicklung von ios Entwickelt auf der Basis von MacOS X UNIX Vorgestellt am 9.1.2007 Zusammen mit iphone Markenname von Cisco Internetwork Operating System Für

Mehr

1. Software-Plattform Android

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

Mehr

LaVida. Mobile Endgeräte. Andreas Neupert

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

Mehr

Plattformen mobiler Endgeräte Windows Phone, ios, Android

Plattformen mobiler Endgeräte Windows Phone, ios, Android Plattformen mobiler Endgeräte Windows Phone, ios, Android 13.12.2012 Inhaltsverzeichnis 1. Einführung 2. Ecosystem Smartphone OS 3. Mobile Software Platform 4. Android App Entwicklung 5. Zusammenfassung

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

C++ und mobile Plattformen

C++ und mobile Plattformen Dieser Artikel stammt aus dem Magazin von C++.de (http://magazin.c-plusplus.de) C++ und mobile Plattformen Mit diesem Artikel möchte ich euch einen kurzen Überblick über die verschiedenen Plattformen für

Mehr

Datenhaltung für Android. Model First

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

Mehr

Vodafone Cloud. Einfach A1. A1.net/cloud

Vodafone Cloud. Einfach A1. A1.net/cloud Einfach A1. A1.net/cloud Ihr sicherer Online-Speicher für Ihre wichtigsten Daten auf Handy und PC Die Vodafone Cloud ist Ihr sicherer Online-Speicher für Ihre Bilder, Videos, Musik und andere Daten. Der

Mehr

Web und Mobile Apps Programmieren mit Dart

Web und Mobile Apps Programmieren mit Dart Web und Mobile Apps Programmieren mit Dart Marco Jakob Kalaidos Fachhochschule Schweiz majakob@gmx.ch Abstract: Bisher war es kaum realistisch, im Anfängerunterricht mobile oder webbasierte Applikationen

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

iphone developer conference Die Entwickler- und Buiness- Konferenz für iphone, ipad und ipod touch

iphone developer conference Die Entwickler- und Buiness- Konferenz für iphone, ipad und ipod touch iphone developer conference Die Entwickler- und Buiness- Konferenz für iphone, ipad und ipod touch ios - Wo steht es, wie geht es? Markus Stäuble MRM Worldwide GmbH 1 Feedback #ipdc10 #as 2 Agenda 3 Heute:

Mehr

App-Entwicklung mit Titanium

App-Entwicklung mit Titanium Masterstudienarbeit Betreuung Prof. Dr. M. von Schwerin 1 Gliederung 1.Motivation 2.Aufgabenstellung 3.Projektbeschreibung 4.Projektstatusbericht 5.Fazit und Ausblick 2 1.Motivation Verbreitung von Smartphones

Mehr

Integration mobiler Endgeräte in Medizinprodukte und Medizintechnik-nahe Produkte

Integration mobiler Endgeräte in Medizinprodukte und Medizintechnik-nahe Produkte Integration mobiler Endgeräte in Medizinprodukte und Medizintechnik-nahe Produkte Agenda Problemstellung Medizinprodukt App Grundlagen Szenarien (Problemstellungen und Lösungsansätze) 03.06.2013 2 Innovationen

Mehr

Einführung in Android. 9. Dezember 2014

Einführung in Android. 9. Dezember 2014 Einführung in Android 9. Dezember 2014 Was ist Android? Software für mobile Geräte: Betriebssystem Middleware Kernanwendungen Android SDK: Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform

Mehr

Systemanforderungen Verlage & Akzidenzdruck

Systemanforderungen Verlage & Akzidenzdruck OneVision Software AG Inhalt Asura 9.5, Asura Pro 9.5, Garda 5.0...2 PlugBALANCEin 6.5, PlugCROPin 6.5, PlugFITin 6.5, PlugRECOMPOSEin 6.5, PlugSPOTin 6.5,...2 PlugTEXTin 6.5, PlugINKSAVEin 6.5, PlugWEBin

Mehr

Mobile Applications. Adrian Nägeli, CTO bitforge AG

Mobile Applications. Adrian Nägeli, CTO bitforge AG Mobile Applications Adrian Nägeli, CTO bitforge AG Inhalt Vorstellung Marktübersicht Entwicklung Adrian Nägeli Dipl. Inf.-Ing FH Seit 2005 bei bitforge bitforge AG Standort Rapperswil-Jona Gründung 2004

Mehr

Systemanforderungen Verlage & Akzidenzdruck

Systemanforderungen Verlage & Akzidenzdruck OneVision Software AG Inhalt Asura 10, Asura Pro 10, Garda 10...2 PlugBALANCEin 10, PlugCROPin 10, PlugFITin 10, PlugRECOMPOSEin10, PlugSPOTin 10,...2 PlugTEXTin 10, PlugINKSAVEin 10, PlugWEBin 10...2

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

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

Objektorientierte Softwareentwicklung SoSe 15

Objektorientierte Softwareentwicklung SoSe 15 Objektorientierte Softwareentwicklung SoSe 15 Heinz Faßbender Raum E148 Tel. 0241/6009 51913 Email: fassbender@fh-aachen.de www.fassbender.fh-aachen.de FH AACHEN UNIVERSITY OF APPLIED SCIENCES FACHBEREICH

Mehr

Mit Cloud Power werden Sie zum

Mit Cloud Power werden Sie zum Mit Cloud Power werden Sie zum Herzlich Willkommen! Christian Hassa Managing Partner TechTalk Software AG Agenda Mobile App Development mit Xamarin Pause Azure Mobile Services Q&A 9h00-10h30 10h30-10h50

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

NetBeans Installation für Handy-Programmierung

NetBeans Installation für Handy-Programmierung Netbeans-Installation für Handy-Programmierung Seite 1 NetBeans Installation für Handy-Programmierung 1. Installation Die Netbeans-Installation setzt voraus, dass JDK 6 bereits auf dem Rechner installiert

Mehr

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

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

Mehr

JAVA. Ein kurzer Überblick. Thomas Karp

JAVA. Ein kurzer Überblick. Thomas Karp JAVA Ein kurzer Überblick Thomas Karp WAS IST JAVA? Java ist eine fast rein objektorientierte Sprache nicht JavaScript eine professionelle Sprache eine im Unterricht weit verbreitete Sprache für verschiedene

Mehr

Mobile Application Plattforms

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

Mehr

Systemanforderungen Verlage & Akzidenzdruck

Systemanforderungen Verlage & Akzidenzdruck OneVision Software AG Inhalt Asura 9.6, Asura Pro 9.6, Garda 5.6...2 PlugBALANCEin 6.6, PlugCROPin 6.6, PlugFITin 6.6, PlugRECOMPOSEin 6.6, PlugSPOTin 6.6,...2 PlugTEXTin 6.6, PlugINKSAVEin 6.6, PlugWEBin

Mehr

Lauter nützliche Apps!? Was sind Apps, und wie werden diese entwickelt?

Lauter nützliche Apps!? Was sind Apps, und wie werden diese entwickelt? Lauter nützliche Apps!? Was sind Apps, und wie werden diese entwickelt? Prof. Dr. Jörg R. Weimar, Fakultät Informatik 1 Smartphones Anwendungen Apps Prof. Dr. Jörg R. Weimar Wolfenbüttel Fakultät Informatik

Mehr

Systemanforderungen Verlage & Akzidenzdruck

Systemanforderungen Verlage & Akzidenzdruck OneVision Software AG Inhalt Asura 10.2, Asura Pro 10.2,Garda 10.2...2 PlugBALANCEin 10.2, PlugCROPin 10.2, PlugFITin 10.2, PlugRECOMPOSEin 10.2, PlugSPOTin 10.2,...2 PlugTEXTin 10.2, PlugINKSAVEin 10.2,

Mehr

Einsatz von Java-fähigen GPRS-Terminals

Einsatz von Java-fähigen GPRS-Terminals Einsatz von Java-fähigen GPRS-Terminals Ein Bericht aus der Praxis Dr. Fred Könemann INSIDE M2M GmbH 15. VDE/ITG Fachtagung Mobilkommunikation Osnabrück 19.-20. Mai 2010 Dr. Fred Könemann, INSIDE M2M GmbH

Mehr

TM1 mobile intelligence

TM1 mobile intelligence TM1 mobile intelligence TM1mobile ist eine hochportable, mobile Plattform State of the Art, realisiert als Mobile BI-Plug-In für IBM Cognos TM1 und konzipiert als Framework für die Realisierung anspruchsvoller

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

Eclipse und Java Einheit 01: Einführung in Eclipse

Eclipse und Java Einheit 01: Einführung in Eclipse Eclipse und Java Einheit 01: Einführung in Eclipse Laith Raed Ludwig-Maximilians-Universität München Institut für Informatik: Programmierung und Softwaretechnik Prof.Wirsing Inhaltsverzeichnis 1 Hintergrundwissen

Mehr

Mobile Enterprise Application Platforms

Mobile Enterprise Application Platforms Mobile Enterprise Application Platforms 17. April 2013 Fachbereich Wirtschaft und Gesundheit Prof. Dr. Volker Wiemann volker.wiemann@fh bielefeld.de +49 (0) 521/106 389 Problem 0. Ausgangslage Blackberry

Mehr

SMARTPHONES. Möglichkeiten, Gefahren, Sicherheit Best Practice Peter Teufl

SMARTPHONES. Möglichkeiten, Gefahren, Sicherheit Best Practice Peter Teufl SMARTPHONES Möglichkeiten, Gefahren, Sicherheit Best Practice Peter Teufl A-SIT/Smartphones iphone security analysis (Q1 2010) Blackberry security analysis (Q1 2010) Qualifizierte Signaturen und Smartphones

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Android Testautomatisierung mit dem Framework Robotium

Android Testautomatisierung mit dem Framework Robotium Android Testautomatisierung mit dem Framework Robotium Daniel Knott XING AG @dnlkntt http://www.adventuresinqa.com Daniel Knott Manager Quality Assurance @dnlkntt daniel.knott@xing.com Daniel Knott hat

Mehr

Mobile Betriebsysteme

Mobile Betriebsysteme Mobile Betriebsysteme Ueli Hofstetter, Philippe Hungerbühler, Anil Kandrical Seminar in Mobile Communication Systems WS 06/07 1 1.1 Kleingeräte für mobile Betriebsysteme Embedded System Personal Digital

Mehr

Installation Guide. Installation Guide. Installationsanleitung für die anaptecs JEAF Plattform. Version 1.2 Letzte Änderung 05.

Installation Guide. Installation Guide. Installationsanleitung für die anaptecs JEAF Plattform. Version 1.2 Letzte Änderung 05. Installation Guide Thema Version 1.2 Letzte Änderung 05. Dezember 2011 Status Installationsanleitung für die anaptecs JEAF Plattform Freigegeben Inhaltsverzeichnis 1 Motivation... 4 1.1 Abgrenzungen...

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

Usability-Test für mobile Java-Anwendungen

Usability-Test für mobile Java-Anwendungen Usability-Test für mobile Java-Anwendungen Problemstellung / Abgrenzung Usability Engineering / Patterns Usability Test Tool-Kette Fazit Roland Petrasch Usability-Test für mobile Java-Anwendungen Problemstellung

Mehr

JDroidLib mit Eclipse (Mac/Linux/Windows)

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

Mehr

Einführung zu den Übungen aus Softwareentwicklung 1

Einführung zu den Übungen aus Softwareentwicklung 1 Einführung zu den Übungen aus Softwareentwicklung 1 Dipl.-Ing. Andreas Riener Universität Linz, Institut für Pervasive Computing Altenberger Straße 69, A-4040 Linz riener@pervasive.jku.at SWE 1 // Organisatorisches

Mehr

Benutzerdokumentation Web-Portal

Benutzerdokumentation Web-Portal GRUPP: SWT0822 Benutzerdokumentation Web-Portal Yet Another Reversi Game Martin Gielow, Stephan Mennicke, Daniel Moos, Christine Schröder, Christine Stüve, Christian Sura 05. Mai 2009 Inhalt 1. Einleitung...3

Mehr

Parallels Desktop für Mac. Entdecke Parallels Desktop für Mac

Parallels Desktop für Mac. Entdecke Parallels Desktop für Mac Parallels Desktop für Mac s r c m s m s r c s S X r r s r c k c s r c s m r s z EM s c s Es s m c c s r s r r E s s s m Entdecke Parallels Desktop für Mac s r c s S X r r & s c s m c ck s r k r k r s r

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

Betriebssysteme für mobile Endgeräte p.1

Betriebssysteme für mobile Endgeräte p.1 Betriebssysteme für mobile Endgeräte Übersicht und Marktanalyse Silvio Böhler sboehler@student.ethz.ch Internet Economics Betriebssysteme für mobile Endgeräte p.1 Betriebssysteme für mobile Endgeräte Charakteristiken

Mehr

Mobile: Die Königsfrage

Mobile: Die Königsfrage Mobile: Die Königsfrage - Native App,Mobile Website oder doch Responsive Design? - Native App oder Mobile Website? Wer am Boom der mobilen Anwendungen teilhaben möchte, hat im Prinzip zwei Möglichkeiten:

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Openlaszlo. Rich Internet Application Platform

Openlaszlo. Rich Internet Application Platform Rich Internet Application Platform ist eine Anwendungsplattform open source zero install Software Amazon Shopping in einem RIA Beispiel Ubiquitous Internet Wie kommts? 60 Prozent der Deutschen online Anwendungen

Mehr

3.9 Grundelemente einer Benutzeroberfläche

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

Mehr

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

Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Algorithmen, Maschinen- und Programmiersprachen Algorithmen

Mehr

Netduino Mikroprozessor für.net Entwickler

Netduino Mikroprozessor für.net Entwickler Netduino Mikroprozessor für.net Entwickler Patrick Herting Softwareentwickler BlueTem Software GmbH Blog E-Mail www.wdev.de pher@live.de Ablaufplan - Theorieteil Was ist der Netduino? Welche Modelle gibt

Mehr

01Einführung und Organisatorisches PROF. DR. M. FÖLLER NORD INSTITUT EMBEDDED AND MOBILE COMPUTING

01Einführung und Organisatorisches PROF. DR. M. FÖLLER NORD INSTITUT EMBEDDED AND MOBILE COMPUTING 01Einführung und Organisatorisches PROF. DR. M. FÖLLER NORD INSTITUT EMBEDDED AND MOBILE COMPUTING Wahlfach für Informatik Bachelor (6/7IB) RGS4: Vorlesung des Moduls Sichere Mobile Systeme Gemeinsame

Mehr

Mobile App Development. - Einführung -

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

Mehr

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

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

Mehr

Entwicklung und Integration mobiler Anwendungen. Oracle Deutschland B.V. & Co. KG

Entwicklung und Integration mobiler Anwendungen. <Speaker> Oracle Deutschland B.V. & Co. KG Entwicklung und Integration mobiler Anwendungen Oracle Deutschland B.V. & Co. KG Global Users (Millions) Der Trend ist eindeutig. Trend zu mobilen Endgeräten Wachstum des mobilen Datenverkehrs

Mehr

CMS Contenido. Das zukunftssichere Content Management System - 1 -

CMS Contenido. Das zukunftssichere Content Management System - 1 - CMS Contenido Das zukunftssichere Content Management System Inhalt Seite Was ist ein CMS System 2 Das CMS Contenido 3 Historie 3 Lizenzkosten 3 Demo Version testen 3 Leistungen 4 Laufende Kosten (Hosting/Wartung)

Mehr

ios,android, Windows Phone

ios,android, Windows Phone Name: Mario Pomberger Klasse: 1AHWIM Jahr: 2012/2013 1 2,, 3 1 http://mobilemag.com 2 http://www.lesen.net 3 http://www.geekovation.de Vergleich Ios Windows Word 23.01.13 Seite 1 von10 Inhalt 1.Einführung...

Mehr

Mobile App Testing. Software Test im mobilen Umfeld ATB Expertentreff, Wien, 2013. Functional Test Automation Tools

Mobile App Testing. Software Test im mobilen Umfeld ATB Expertentreff, Wien, 2013. Functional Test Automation Tools Functional Test Automation Tools Mobile App Testing Software Test im mobilen Umfeld ATB Expertentreff, Wien, 2013 Presenter: Christoph Preschern (cpreschern@ranorex.com) Inhalte» Ranorex Company Overview»

Mehr

Apps Programmierung von Android-Smartphones

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

Mehr

Allgemeine Informationen Slides2Go Stand April 2015

Allgemeine Informationen Slides2Go Stand April 2015 Allgemeine Informationen Slides2Go Stand April 2015 1. ALLGEMEINE INFORMATIONEN... 3 1.1 SYSTEMANFORDERUNGEN WEB-BACKEND... 3 1.2 SYSTEMANFORDERUNGEN FRONTEND / APP... 3 1.3 UNTERSTÜTZTE DATEIFORMATE...

Mehr

Preliminary spec sheet

Preliminary spec sheet ARNOVA steht für gute Performance zum attraktiven Preis. ARNOVA designed by ARCHOS. Das ARNOVA 7 Tablet ermöglicht ständigen Zugriff auf das Internet, läßt sich durch Android Apps individuell anpassen

Mehr

Ein mobiler Electronic Program Guide für Android

Ein mobiler Electronic Program Guide für Android Whitepaper Telekommunikation Ein mobiler Electronic Program Guide für Android Prototyp für Android Apps 2011 SYRACOM AG 1 Einleitung Apps Anwendungen für mobile Geräte sind derzeit in aller Munde. Durch

Mehr

Mobile App development mit Xamarin. Christian Hassa (ch@techtalk.ch) Andreas Willich (awi@techtalk.ch) TechTalk Software AG

Mobile App development mit Xamarin. Christian Hassa (ch@techtalk.ch) Andreas Willich (awi@techtalk.ch) TechTalk Software AG Mobile App development mit Xamarin Christian Hassa (ch@techtalk.ch) Andreas Willich (awi@techtalk.ch) TechTalk Software AG % der Bevölkerung mit Smartphone Smartphone Durchdringung >50% 34% 43% 54% DACH

Mehr

Maemo und das N900. Ingo Ebel. Spezielle Themen Mobile Kommunikation, WS 2009/10. Computer Science and Media Hochschule der Medien Stuttgart

Maemo und das N900. Ingo Ebel. Spezielle Themen Mobile Kommunikation, WS 2009/10. Computer Science and Media Hochschule der Medien Stuttgart Mobile Plattformen und 5 und N900 und das N900 Ingo Ebel Computer Science and Media Hochschule der Medien Stuttgart Spezielle Themen Mobile Kommunikation, WS 2009/10 Mobile Plattformen und 5 und N900 Letzte

Mehr

Wine der freiewindows Emulator. Marcus Meißner Wine und opensuse Entwickler marcus@jet.franken.de

Wine der freiewindows Emulator. Marcus Meißner Wine und opensuse Entwickler marcus@jet.franken.de Wine der freiewindows Emulator Marcus Meißner Wine und opensuse Entwickler marcus@jet.franken.de Warum überhaupt? Nicht portierte Software: kleine Firma keine Leute strategische Gründe Technische Herausforderung

Mehr

Smartphones und Tablets als touch-sensitive User-Interfaces im Automatisierungsumfeld

Smartphones und Tablets als touch-sensitive User-Interfaces im Automatisierungsumfeld Smartphones und Tablets als touch-sensitive User-Interfaces im Automatisierungsumfeld Prof. Dr. Miriam Föller-Nord, Hochschule Mannheim, Fakultät für Informatik Institut für Embedded and Mobile Computing

Mehr

Das Interceptor Muster

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

Mehr

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP) MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP) Oliver Steinhauer Markus Urban.mobile PROFI Mobile Business Agenda MOBILE ENTERPRISE APPLICATION PLATFORM AGENDA 01 Mobile Enterprise Application Platform

Mehr

Java Micro Edition. Entwicklung mobiler JavaME-Anwendungen mit CLDC und MIDP. von Klaus D. Schmatz. 2., aktualis. u. erw. Aufl.

Java Micro Edition. Entwicklung mobiler JavaME-Anwendungen mit CLDC und MIDP. von Klaus D. Schmatz. 2., aktualis. u. erw. Aufl. Java Micro Edition Entwicklung mobiler JavaME-Anwendungen mit CLDC und MIDP von Klaus D. Schmatz 2., aktualis. u. erw. Aufl. Java Micro Edition Schmatz schnell und portofrei erhältlich bei beck-shop.de

Mehr

Fachseminar Android. Tobias Braumann Wintersemester 2009/10 Matrikelnummer.: 353640

Fachseminar Android. Tobias Braumann Wintersemester 2009/10 Matrikelnummer.: 353640 Fachseminar Android Wintersemester 2009/10 Matrikelnummer.: 353640 Inhalt 0 Vorwort... 3 1 Allgemeines zu Android... 4 1.1 Einleitung... 4 1.2 Warum Android?... 4 1.3 Entwicklungshistorie... 5 1.4 Open

Mehr

Android in der Industrie

Android in der Industrie Android in der Industrie Jörg Pleumann Head of Android Development Noser Engineering AG Berner Technologie-Impulse 08.09.2011 Agenda Was ist Android? Software Hardware Industrielle Projekte Fazit Einleitung

Mehr

Mindestanforderungen an Systemumgebung Für die Nutzung von excellenttango

Mindestanforderungen an Systemumgebung Für die Nutzung von excellenttango Die Hardware- und Softwareanforderungen sind als allgemeine Anforderungen zu betrachten. Zahlreiche Faktoren können sich auf diese Anforderungen auswirken und müssen daher beachtet werden: Die Anzahl und

Mehr

Mobility mit IBM Worklight Erste Schritte zu einer mobilen App. Benjamin Stein, Consultant Stuttgart, 03.04.2014

Mobility mit IBM Worklight Erste Schritte zu einer mobilen App. Benjamin Stein, Consultant Stuttgart, 03.04.2014 Mobility mit IBM Worklight Erste Schritte zu einer mobilen App Benjamin Stein, Consultant Stuttgart, 03.04.2014 Agenda Was ist IBM Worklight eigentlich? Hintergrund und Idee, Architektur und Bestandteile

Mehr

1. Java Grundbegriffe

1. Java Grundbegriffe 1. Java Grundbegriffe Geschichte von Java Programmieren mit Java Interpretieren vs. Kompilieren Java Byte-Code Jave Virtual Machine Arbeitsmaterialien Allgemeine Informatik 2 SS09 Folie 1.1 Java, eine

Mehr

Vergleich der Plattformen und praktische Erfahrungen. Softwareentwicklung für Smartphones

Vergleich der Plattformen und praktische Erfahrungen. Softwareentwicklung für Smartphones Vergleich der Plattformen und praktische Erfahrungen Softwareentwicklung für Smartphones Die SIC! Software GmbH Experten Mobility Software B2B Umfassende Erfahrung seit 1996: Mobile Internet-Portal Clients

Mehr