PROGRAMMIERUNG VON APPS



Ähnliche Dokumente
2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

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

Installation von NetBeans inkl. Glassfish Anwendungs-Server

MetaQuotes Empfehlungen zum Gebrauch von

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Installation und Test von Android Apps in der Entwicklungs- und Testphase

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

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Präsentation Von Laura Baake und Janina Schwemer

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Installationsanleitung CLX.PayMaker Home

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

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Installation und Inbetriebnahme von Microsoft Visual C Express

Java Script für die Nutzung unseres Online-Bestellsystems

VB.net Programmierung und Beispielprogramm für GSV

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Anleitung zur Webservice Entwicklung unter Eclipse

Informatik I Tutorial

FritzCall.CoCPit Schnelleinrichtung

Bluefire Reader für ipad & iphone

Installationsanleitung CLX.PayMaker Office

Benutzeranleitung Remote-Office

Bitte melden Sie sich als Administrator des Betriebssystems oder als Benutzer mit ausreichenden Installationsrechten an Ihrem PC an.

JBuilderX: Installation und Kurzanleitung (Windows)

Anleitung zur Installation von SFirm 3.1 inklusive Datenübernahme

Installation einer C++ Entwicklungsumgebung unter Windows --- TDM-GCC und Eclipse installieren

4.1 Download der App über den Play Store

QUECHUA PHONE 5 DAS ERSTE MOUNTAINPROOF SMARTPHONE. Gebrauchsanleitung Android. Schlagfest Dichtigkeit Autonomie Apps die für das Wandern

Android VHS - Weiterbildungskurs Ort: Sulingen

Windows Verbindung mit WLAN BZPflege trennen Verbindung mit WLAN EDU-BZPflege automatisch erstellen... 30

TeamSpeak3 Einrichten

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Starten der Software unter Windows 7

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

Installationsanleitung LogControl DL-Software

Update auf Windows 8.1 Schrittweise Anleitung

I. Travel Master CRM Installieren

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

LEHRSTUHL FÜR DATENBANKEN

Wie benutzt man TortoiseSVN

Version 0.3. Installation von MinGW und Eclipse CDT

Anleitungen für User der Seite TSV AustriAlpin Fulpmes. So erstellen Sie einen Bericht (Beitrag) auf der TSV-AustriAlpin Fulpmes Homepage.

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Übung: Verwendung von Java-Threads

Für Windows 7 Stand:

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Der einfache Weg zum CFX-Demokonto

Kleines Handbuch zur Fotogalerie der Pixel AG

Einrichtungsanleitungen Hosted Exchange 2013

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Installation/Einrichtung einer Datenbank für smalldms

SANDBOXIE konfigurieren

Bedienungsanleitung. FarmPilot-Uploader

Sicherer Datenaustausch zwischen der MPC-Group und anderen Firmen. Möglichkeiten zum Datenaustausch... 2

Windows 10 > Fragen über Fragen

SCHRITT FÜR SCHRITT ZU IHRER VERSCHLÜSSELTEN

Ihr CMS für die eigene Facebook Page - 1

Eclipse 3.0 (Windows)

1. Melden Sie sich als Administrator an und wechseln Sie zum Desktop

Upgrade von Windows Vista auf Windows 7

Installationsanleitungen

Mobiltelefon Registrierung in Afaria Inhaltsverzeichnis

TELIS FINANZ Login App

Hallo, Anmeldung auf der Office-Webplattform: Seite 1 von 7 Office 365 Pro Plus

Installationsanleitung CLX.NetBanking

Diese sind auf unserer Internetseite im Downloadbereich für den Palm zu finden:

Lokale Installation von DotNetNuke 4 ohne IIS

Informatik 1 Tutorial

Updateseite_BuV-PlugIn-NERZ-Gesamt

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Leitfaden zur Installation von Bitbyters.WinShutdown

Handbuch USB Treiber-Installation

FTP-Server einrichten mit automatischem Datenupload für

Outlook Web App 2010 Kurzanleitung

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

Anleitung zum Upgrade auf SFirm Datenübernahme

Single User 8.6. Installationshandbuch

Der Kalender im ipad

1 Vorraussetzungen. 2 Installiere Eclipse. FS 2015 Herausgabe: Dr. A. L. Schüpbach, D. Sidler, Z. István Departement Informatik, ETH Zurich

Wir wünschen Ihnen viel Freude und Erfolg mit Ihrem neuen X-PRO-USB-Interface. Ihr Hacker-Team

ASP Dokumentation Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Wie richten Sie Ihr Web Paket bei Netpage24 ein

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

DOKUMENTATION VOGELZUCHT 2015 PLUS

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

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

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

eridea AG Installation Eclipse V 1.4

Einführung Inhaltsverzeichnis

Institut für Existenzgründungen und Unternehmensführung Wilfried Tönnis, M.A. Installationshandbuch

eridea AG Installation Eclipse V 1.1

Anleitung zum Upgrade auf SFirm Datenübernahme

Starten der Software unter Windows XP

Installationsanleitung CLX.PayMaker Office (3PC)

Datenaustausch mit dem BVK Data Room

Transkript:

PROGRAMMIERUNG VON APPS Verfasser: Raoul Bühler & Malek Benfattoum Projektcoach: Urs Sonderegger Wirtschaftsinformatik Seminararbeit an der FHS St.Gallen, Hochschule für Angewandte Wissenschaften 2011

Verfasser: Raoul Bühler Malek Benfattoum Projekt-Coach: Urs Sonderegger Eingereicht am: 6. Januar 2012

Vorwort III Vorwort Im derzeitigen mobilen Internet-Zeitalter haben sogenannte Apps (Applikationen) stark an Bedeutung gewonnen. Die Programme sind auf Smartphones oder Tablet PCs installiert und ermöglichen den Nutzern verschiedenste Informationszugriffe oder Interaktionen. Die Anwenderseite einer App ist oft schnell verstanden, doch was steckt eigentlich dahinter? Wie erstellt man eine solche App? Diese Frage haben auch wir uns gestellt mit und mit den nachfolgenden Kapiteln zeigen wir anhand eines Beispiels, was es dazu braucht eine App zu programmieren. Dabei haben wir uns entschieden das Programm speziell für die Betriebssystem-Plattform Android zu entwickeln, da Android gemäss Prognosen zukünftig das bedeutendste mobile Betriebssystem sein wird. Das Ganze nennt man im Fachjargon Native-Programmierung, alternativ gibt es auch die Möglichkeit einer systemunabhängige Programmierung, diese ist dann rein webbasiert und nicht Thema dieser Arbeit. Der Dank dieser Arbeit gebührt ganz besonders Herrn Urs Sonderegger, der dieses Projekt mit wertvollen Tipps, Büchern und Testgeräten engagiert unterstützt hat. St. Gallen, im Januar 2012 Raoul Bühler, Malek Benfattoum

Inhaltsverzeichnis IV Inhaltsverzeichnis Vorwort... III Inhaltsverzeichnis... IV Abbildungsverzeichnis... VII Tabellenverzeichnis... X Quelltextverzeichnis... XI Glossar... XII 1 Auftragsdefinition... 1 1.1 Ausgangslage des Projektes und Begriffsdefinition... 1 1.2 Projektziele... 1 1.3 Projektaufträge... 1 1.4 Projektplanung... 1 2 Überblick Mobile-Betriebssysteme... 3 2.1 Aktuelle Mobile-Betriebssysteme im Vergleich... 3 2.2 Android... 5 2.2.1 Entstehung... 5 2.2.2 Versionen... 6 2.2.3 Fazit... 7 2.3 ios... 8 2.4 Windows Phone... 9 2.5 Weitere mobile Betriebssysteme... 11 2.5.1 Symbian... 11 2.5.2 Blackberry OS... 11 3 Infrastruktur zur Android Entwicklung... 13 3.1 Installation einer klassischen Entwicklungsumgebung... 13 3.1.1 JDK für Java SE... 13 3.1.1.1 Versionsprüfung... 14 3.1.1.2 Installationsdatei herunterladen und ausführen... 14 3.1.1.3 Systempfad aktualisieren... 16 3.1.1.4 Abschliessende Prüfung... 18 3.1.2 Android SDK... 18 3.1.2.1 Herunterladen der Installationsdatei... 18

Inhaltsverzeichnis V 3.1.2.2 SDK-Komponenteninstallation... 19 3.1.3 Eclipse mit Android-Plugin... 21 3.1.3.1 Herunterladen von Eclipse und Workspace anlegen... 21 3.1.3.2 Android-Plugin installieren... 22 3.1.3.3 Eclipse konfigurieren... 24 3.1.3.4 App-Projekt erstellen... 25 3.1.3.5 Projekt Übersicht... 28 3.1.3.6 Android Virtual Device anlegen... 29 3.2 Alternative: Installation einer App-Inventor Entwicklungsumgebung... 31 3.2.1 Anmeldung und Installation... 31 3.2.2 Der Einstieg... 31 4 App-Programmierung in Android... 33 4.1 Entwicklung einer Hello-World-App mit Eclipse... 33 4.1.1 Konzept... 33 4.1.2 Dialogtexte erfassen... 35 4.1.3 Programmoberfläche erstellen... 36 4.1.4 Programmlogik und ablauf... 37 4.1.4.1 Activity erstellen... 38 4.1.4.2 Benutzereingaben einfügen... 39 4.1.4.3 Eingabehilfen einbauen... 41 4.1.5 App im AVD starten... 43 4.1.6 Problembehandlung AVD... 48 4.1.7 App auf ein mobiles Gerät übertragen... 48 4.1.7.1 Gerätetreiber installieren... 49 4.1.7.2 Zielsystem überprüfen... 50 4.1.7.3 API nachladen... 52 4.1.7.4 Angepasstes Projekt erstellen... 52 4.1.7.5 App übertragen... 53 4.1.7.6 App auf mobilem Gerät testen... 53 4.2 Alternative: Entwicklung einer Hello-World-App mit dem App-Inventor... 55 4.2.1 Oberfläche... 55 4.2.2 Funktionen... 55 4.2.3 Weitere Möglichkeiten... 56 5 Publikation einer App... 57 5.1 Der offizielle Android Market... 57

Inhaltsverzeichnis VI 5.1.1 Suchen und Finden... 57 5.1.2 Publishing... 57 5.2 Veröffentlichungs-Richtlinien... 61 5.3 App exportieren... 63 6 Fazit... 65 Quellenverzeichnis... 66 Anhänge... 1 Anhang A: Programmcode Countdown App... 1 Anhang B: Bildmaterial Countdown App... 7 Anhang C: Screenshot Countdown App... 8 Vertraulichkeitserklärung... 9

Abbildungsverzeichnis VII Abbildungsverzeichnis Abbildung 1: Verteilung der Android Versionen..... 7 Abbildung 2: Komponenten einer Android Entwicklungsumgebung..... 13 Abbildung 3: Konsolenausgabe bei nicht vorhandenem JDK..... 14 Abbildung 4: JDK Installationsdialog.... 14 Abbildung 5: Java Installationspfad.... 15 Abbildung 6: Abschluss der JDK Installation.... 16 Abbildung 7: Umgebungsvariable Path auswählen.... 17 Abbildung 8: Java-Pfad in Umgebungsvariable Path einfügen.... 17 Abbildung 9: Ausgabe der Windows Konsole bei korrekter Installation..... 18 Abbildung 10: JDK Prüfung.... 19 Abbildung 11: Programm als Administrator ausführen.... 20 Abbildung 12: SDK-Manager Paketauswahl..... 20 Abbildung 13: Lizenzverträge akzeptieren.... 21 Abbildung 14: Abschluss der Komponenteninstallation. g... 21 Abbildung 15: Workbench Symbol.... 21 Abbildung 16: Dialog zur Installation von Plugins in Eclipse.... 22 Abbildung 17: Android-Plugin Developer Tools.... 23 Abbildung 18: Zusammenfassung der zu installierenden Tools.... 23 Abbildung 19: Eclipse Sicherheitswarnung bei unsignierter Software.... 23 Abbildung 20: Android-SDK Pfad in Eclipse hinterlegen.... 24 Abbildung 21: Installierte SDKs in Eclipse.... 25 Abbildung 22: Android Projekt in Eclipse erstellen.... 26 Abbildung 23: Projektname definieren in Eclipse.... 26 Abbildung 24: Zielsystem der App auswählen in Eclipse.... 27 Abbildung 25: Konfiguration des Android Projektes.... 27 Abbildung 26: Eclipse Package Explorer.... 28

Abbildungsverzeichnis VIII Abbildung 27: Android Virtual Device Manager starten.... 29 Abbildung 28: AVD erstellen.... 29 Abbildung 29: Auflistung der erstellten AVDs im Android Virtual Device Manager.... 30 Abbildung 30: Eclipse Startmodus eistellen.... 30 Abbildung 31: App Inventor Projekt Hauptansicht... 32 Abbildung 32: Prototyp der Benutzeroberfläche der Hello-World-App... 33 Abbildung 33: Beschriftung der Oberflächenelemente.... 37 Abbildung 34: Ausgabe der Konsole in Eclipse beim Starten einer App.... 43 Abbildung 35: Android Virtual Device Startbildschirm.... 44 Abbildung 36: 1. Bildschirm der Hello-World-App.... 45 Abbildung 37: 1. Bildschirm der Hello-World-App mit aktiviertem Button..... 46 Abbildung 38: 2. Bildschirm der Hello-World-App.... 46 Abbildung 39: Android Appübersicht.... 47 Abbildung 40: Mögliche Fehlermeldung bei geringer Rechenleistung.... 48 Abbildung 41: Mögliche Fehlermeldung bei fehlender Internetverbindung.... 48 Abbildung 42: USB-Debugging auf Tablet aktivieren.... 49 Abbildung 43: Automatische Treiberinstallation bei angeschlossenem Tablet im USB- Debugging Modus.... 50 Abbildung 44: App und Zielsystem wählen.... 51 Abbildung 45: Versionskonflikt.... 51 Abbildung 46: API Download im Android SDK Manager..... 52 Abbildung 47: App auf mobiles Gerät übertragen.... 53 Abbildung 48: Hello World App auf einem Samsung Galaxy Tab..... 54 Abbildung 49: Programm Oberfläche mit dem App Inventor. Quelle: Eigene Darstellung.... 55 Abbildung 50: Funktionen im App Inventor..... 56 Abbildung 51: Registrations-Zusatz-Schritt 1 - Detailangaben..... 58 Abbildung 52: Registrations-Zusatz-Schritt 2 - Entwickler-Gebühr.... 58 Abbildung 53: Erster Einstieg in den Android Market Entwickler Account..... 59

Abbildungsverzeichnis IX Abbildung 54: App hochladen im Android Market.... 60 Abbildung 55: Veröffentlichungsinformationen hinzufügen..... 61 Abbildung 56: Signiertes Apllication Package exportieren.... 63 Abbildung 57: Schlüssel erstellen.... 64 Abbildung 58: Angaben zum Schlüssel.... 64

Tabellenverzeichnis X Tabellenverzeichnis Tabelle 1: Verkäufe mobiler Betriebssysteme 2010 mit Prognose bis 2015..... 3 Tabelle 2: Informationen zu Android.... 5 Tabelle 3: Android Versionen im Überblick.... 7 Tabelle 4: Vor- und Nachteile der Android Plattform... 8 Tabelle 5: Informationen zu ios.... 8 Tabelle 6: Vor- und Nachteile von ios.... 9 Tabelle 7: Informationen zu Windows Phone.... 9 Tabelle 8: Vor- und Nachteile Windows Phone..... 10 Tabelle 9: Informationen zu Symbian... 11 Tabelle 10: Informationen zu RIM.... 11

Quelltextverzeichnis XI Quelltextverzeichnis Quelltext 1: strings.xml... 35 Quelltext 2: main.xml... 36 Quelltext 3: HalloSagenActivity.java 1. Version... 38 Quelltext 4: strings.xml Ergänzung... 41 Quelltext 5: main.xml Ergänzung... 41 Quelltext 6: Ergänzungen zu HalloSagenActivity.java... 42

Glossar XII Glossar Android App API AVD HTML5 IDE ios Java JDK OS SDK Betriebssystem von Google für Smartphones und Tablet PCs Kurzform von Application, Programm Application Programming Interface, Programmierschnittstelle Android Virtual Device, virtuelles Android Gerät auf dem PC textbasierte Auszeichnungssprache für digitale Inhalte Integrated Development Environment, integrierte Entwicklungsumgebung Betriebssystem von Apple für Smartphones und Tablet PCs Programmiersprache Java Development Kit Operating System, Betriebssystem Software Development Kit

1 Auftragsdefinition 1.1 Ausgangslage des Projektes und Begriffsdefinition Im Rahmen des Moduls WISE - Wirtschaftsinformatik-Seminar soll die Gruppe die Entwicklung und Publikation einer sogenannten App untersuchen. App ist die Kurzform des englischen Begriffs Application und meint grundsätzlich jede Art von Anwendungsprogrammen. Umgangssprachlich steht App mittlerweile aber vor allem für Programme auf mobilen Geräten wie Smartphones oder Tablet-Computern. 1.2 Projektziele Die Ziele des Projekts sind die Erarbeitung eines Tutorials für die beispielhafte Beschaffung und Installation einer Programmierumgebung für Android-Apps. Sowie die Dokumentation der Konzeption und Implementierung einer einfachen Anwendung inklusive der Platzierung im Android Market. 1.3 Projektaufträge Die Projektaufträge lauten wie folgt: Funktionierende Installation der Entwicklungsumgebung mit funktionierender Hello-World-App Dokumentation der Beschaffung und Installation Dokumentation der Publikation Nachgeführtes Quellenverzeichnis 1.4 Projektplanung Das Projekt wird stufenweise durchgeführt, der Projektplan sieht folgende Teilschritte vor: Überblick über mobile Plattformen verschaffen Programmierumgebung einrichten Hello-World-App für Android programmieren und auf Smartphone testen (laufend Dokumentieren) Publikation Android Market Fazit, Unterschiede zwischen Plattformen Erstellung eines Tutorials

2 Überblick Mobile-Betriebssysteme 2.1 Aktuelle Mobile-Betriebssysteme im Vergleich Smartphones, Tablet-Computer und andere mobile Kommunikationsgeräte benötigen ähnlich wie übliche Desktop-Computern oder Notebooks ein Betriebssystem (auch Operating System, OS genannt), das die integrierte Hardware überhaupt erst nutzbar zu macht. Während im Personal Computing Markt Windows dominiert, mit einem fast monopolistischen Marktanteil, sieht es im Mobile Computing Markt etwas anders aus. Es gibt zahlreiche unterschiedliche Betriebssysteme, in der nachfolgenden Tabelle sind die wichtigsten Systeme und deren Marktanteile aufgeführt. Verkäufe weltweit von mobilen Betriebssystemen 2010 mit Prognose (in 1000 Einheiten): OS 2010 2011 2012 2015 Symbian 111 577 89 930 32 666 661 Marktanteil(%) 37.6 19.2 5.2 0.1 Android 67,225 179,873 310,088 539,318 Marktanteil(%) 22.7 38.5 49.2 48.8 RIM 47,452 62,600 79,335 122,864 Marktanteil(%) 16.0 13.4 12.6 11.1 ios 46,598 90 560 118 848 189 924 Marktanteil(%) 15.7 19.4 18.9 17.2 Microsoft 12 378 26 346 68 156 215 998 Marktanteil(%) 4.2 5.6 10.8 19.5 Andere OS 11 417.4 18 392.3 21 383.7 36 133.9 Marktanteil(%) 3.8 3.9 3.4 3.3 Total Verkäufe 296 647 467 701 630 476 1 104 898 Tabelle 1: Verkäufe mobiler Betriebssysteme 2010 mit Prognose bis 2015. Quelle: Eigene Darstellung basierend auf Gartner (2011). Die Zahlen von Gartner (2011) zeigen, dass aktuell Android, RIM (Research in Motion BlackBerry) und ios von Apple den Markt bei den Verkäufen anführen. Gemäss Prognose wird der Markt weiter massiv wachsen und Android von Google soll ab 2015 fast die Hälfte des Marktes ausmachen. Schnell wachsen soll auch der Marktanteil von Microsoft gemäss den Schätzungen der Spezialisten von Gartner, während sich RIM mit den BlackBerrys auf dem absteigenden Ast befindet und Symbian von Nokia sogar ganz verschwinden wird. Apple wird vom wachsenden Markt profitieren, aber mittelfristig nach Android und Microsoft nur noch die drittwichtigste Rolle spielen. Wenn ein Kunde sich ein Endgerät aussucht, wählt er damit in der Regel auch gleich automatisch das Betriebssystem. Zum Beispiel Android auf einem Symbian-betriebenen Gerät zu

installieren oder umgekehrt, ist meistens nicht möglich. Der Gerätehersteller gibt das Betriebssystem vor. Viele der Systeme werden herstellerübergreifend eingesetzt, wie zum Beispiel Android oder die Windows Mobile Plattformen. Andere werden nur bei einem einzelnen Hardware- Produzenten verwendet wie beispielsweise Blackberry OS oder ios für iphone und ipad. Die Eckdaten der einzelnen Systeme aus Endanwendersicht sind auf den nachfolgenden Seiten zusammengestellt, die beiden aktuell bedeutendsten Systeme Android und ios werden zusätzlich etwas genauer beschrieben.

2.2 Android Entwickler Open Handset Alliance (unter Leitung von Google) Erscheinungsjahr 2008 Abstammung GNU / Linux Aktuelle Version 4.0.3 vom 22. November 2011 App Programmiersprache Java Entwicklungsumgebung Eclipse mit Android SDK oder App Inventor Marktanteil 2011 38.5% Tabelle 2: Informationen zu Android. Quelle: Eigene Darstellung basierend auf Künneth (2011, S. 19-20); Wikipedia (2011 a) & Gartner (2011). 2.2.1 Entstehung Grundstein für das mobile Betriebssystem Android bildet 2005 die Übernahme des kleinen Startup-Unternehmens Android Inc. im kalifornischen Palo Alto. Im Jahr 2007 veröffentlicht Google eine erste Vorschauversion des Android SDK, hierbei ging Google bewusst frühzeitig auf interessierte Programmierer zu, um ihnen einerseits ein Einarbeiten in die Plattform zu ermöglichen und um anderseits zeitnah Feedbacks einholen zu können. (Künneth, 2011, S. 20) Die Open Handset Alliance 1 [OHA] formulierte kurz vor der Veröffentlichung der ersten Vorschauversion eine Pressemeldung, in welcher unter anderem folgende Ziele für Android formuliert wurden (Künneth, 2011, S. 20): Eine deutliche Verbesserung der Benutzerfreundlichkeit und des Benutzererlebnisses von mobilen Geräten und Diensten Die kostengünstigere Entwicklung und Verteilung innovativer Produkte Eine schnellere Markteinführung Um eine optimale Zusammenarbeit zwischen Entwicklern, Herstellern und Betreibern zu ermöglichen, wurden nahezu alle Teile des Android-Softwarepakets als Open Source veröffentlicht. Dies ermöglicht Mobiltelefonherstellern und Netzbetreibern Android nach Bedarf anzupassen oder zu erweitern. (Künneth, 2011, S. 20) 1 Durch Google angeführtes Konsortium bestehend aus diversen Firmen, unter anderem Halbleiterhersteller, Mobiltelefonproduzenten, Netzbetreiber und Softwareentwickler. (Künneth, 2011, S. 20)

Schliesslich wird 2008 Android erstmals öffentlich zugänglich gemacht. Bei der Veröffentlichung ist Android Apples ios klar unterlegen, da Apple zu diesem Zeitpunkt bereits einen Zeitvorsprung von mehreren Monaten hat. (Künneth, 2011, S. 20) Inzwischen liegen beide Betriebssysteme ungefähr gleich auf, da die Android Plattform in den vergangenen Jahren in rasantem Tempo ausgebaut und verbessert wurde. (Künneth, 2011, S. 21) 2.2.2 Versionen Android Versionen, die traditionell den Namen einer Süssspeise tragen, wurden anfangs in sehr kurzen Zeiträumen von nur wenigen Monaten veröffentlicht. Durch diese kurzen Releasezyklen wurde aus Android in relativ kurzer Zeit ein stabiles und benutzerfreundliches Betriebssystem für mobile Geräte. Folgende Tabelle 3 gibt einen zusammengefassten Überblick über die wichtigsten Android Versionen. (Künneth, 2011, S. 21-22) Version Jahr Neuerungen Zielgerät Android 1.5 Cupcake 2009 Unterstützung von Geräten ohne Hardwaretastatur, Spracherkennungsfunktion Smartphone Android 1.6 Donut 2009 Unterstützung von verschiedenen Anzeigegrössen und Bildschirmauflösungen, Sprachsynthesesoftware Smartphone Android 2.0, 2.0.1 & 2.1 Eclair 2010 Vollständig neue Programmierschnittstelle für Zugriff auf Kontakt- und Kontendaten, Möglichkeit zur Synchronisation mit Diensten wie Facebook Smartphone Android 2.2 Froyo 2010 Zentrale Schnittstelle für Sichern und Wiederherstellen von Anwendungsdateien, Programme können neu auf Wechselmedien installiert werden Smartphone Android 2.3.x Gingerbread 2010 Einbindung von Internettelefonie (VoIP), Einführung eines Downloadmanagers Smartphone Android 3.0, 3.1 & 3.2 Honeycomb 2011 Speziell angepasste Version für Tablet PCs Tablet PC Android 4.0 & 4.0.3 Ice Cream Sandwich 2011 Zusammenführung der Entwicklungslinien 2.x und 3.x ein Android für alle Gerätetypen, Unterstützung von Near Field Communication [NFC] zur drahtlosen Übertragung von Daten Universell

Tabelle 3: Android Versionen im Überblick. Quelle: Eigene Darstellung basierend auf Künneth (2011, S. 21 22) & Wikipedia (2011 a). Laut Künneth (2011, S. 22) haben die häufigen Release-Wechsel nicht ausschliesslich Vorteile gebracht. Da die Android Plattform durch Hersteller frei verändert werden kann, müssen Kunden oft mehrere Monate warten, bis ein zum Gerät kompatibles Update durch den Hersteller freigegeben wird. Anfang Dezember 2011 hat Google folgende Abbildung 1 herausgegeben, sie zeigt die Verbreitung der verschiedenen Android Versionen. Abbildung 1: Verteilung der Android Versionen. Quelle: Unverändert aus Android Developer (2011). Aus der Abbildung geht hervor, dass die 2010 erschiene Android 2.3.3 Gingerbread mit über 50% Anteil am häufigsten genutzt wird. Ebenfalls stark verbreitet ist die Version 2.2 mit mehr als einem Drittel der Installationen. Tablet-spezifische Android Versionen werden mit einem Anteil von unter 5% kaum genutzt. Ein Grund dafür könnte laut Meinung der Autoren, die Einführung von Android 4.0 sein, welche universell, d.h. auf einem Tablet und auf einem Smartphone, eingesetzt werden kann. Aus der Sicht der App Entwicklung bedeutet dies zurzeit, dass man bei Android 2.2 ansetzen sollte, um eine möglichst breite Geräteunterstützung der App zu gewährleisten. 2.2.3 Fazit Folgende Tabelle 4 zeigt zusammengefasst die wichtigsten Vor- und Nachteile der Android Plattform. Vorteile Nachteile Offene Plattform, frei erweiterbar Keine Lizenzkosten Herstellerspezifische Anpassungen nach jedem Release zeitverzögerte Upda-

Aktive Community tes Hoher Verbreitungsgrad Viele Verschiedene Versionen gleichzei- Offener Markt für Apps Ab Android 4.0 gerätetypunabhängig tig im Einsatz, keine einheitliche Hardware Kompatibilität ist schwer sicherstellbar Tabelle 4: Vor- und Nachteile der Android Plattform. Quelle: Eigene Darstellung. 2.3 ios Entwickler Apple Erscheinungsjahr 2007 Abstammung UNIX / BSD / NexTStep / Darwin / Mac OS X / ios Aktuelle Version 5.0.1 vom 10. November 2011 App Programmiersprache Objective-C 2.0 Entwicklungsumgebung Xcode mit iphone-sdk Marktanteil 2011 19.4% Tabelle 5: Informationen zu ios. Quelle: Eigene Darstellung basierend auf Surendorf & Hardt (2009, S. 402-403); Wikipedia (2011 b) & Gartner (2011). Apples mobiles Betriebssystem ios (damals noch unter dem Namen iphone OS ) wurde erstmals 2007 zusammen mit dem iphone vorgestellt und wurde im Vergleich zu anderen Smartphones anfangs nicht ernst genommen. Mit der Einführung von ios 2.0 und dem berühmten App Store hat sich dies grundlegend geändert. (Surendorf & Hardt, 2009, S. 401) Auch wenn es nicht danach aussieht, ios ist eine für den mobilen und energiesparenden Einsatz modifizierte Version des Betriebssystems Mac OS X. Demzufolge ist der grösste und gleichzeitig wichtigste Unterschied zwischen Mac OS X- und der ios-entwicklung das verwendete Framework zur Darstellung der grafischen Oberfläche. (Surendorf & Hardt, 2009, S. 401) Ein markantes Merkmal von ios ist das Bedienkonzept, das ausschliesslich auf Multi-Touch- Bedienung ausgelegt ist. Eine weitere ios-eigenschaft ist die Einheitliche Darstellung der grafischen Oberfläche, da keine anderen Hersteller ios modifizieren oder anbieten können. Deshalb gibt es keine Unterschiede zwischen der Bedienung auf dem Smartphone (iphone) und dem Tablet (ipad). (Wikipedia, 2011 b) Folgende Tabelle 6 zeigt die Vor- und Nachteile von ios:

Vorteile Nachteile Einheitliche Hardware Kompatibilität Eine Version für Tablet und Smartphone Unterstützung älterer Geräte durch Apple Hoher Verbreitungsgrad App Store ist führend ios und Mac OS X nutzen gleiche Programmiersprache Kosten: Geräte eher im oberen Preissegment, Umsatzprovisionen (App Store), Mitgliederbeiträge für Entwickler Strenger, zentralisierter App Freigabeprozess Plattform unterliegt einer starken Kontrolle sowie diversen technischen und geschäftspoltischen Einschränkungen kann sich Innovationshemmend auswirken Tabelle 6: Vor- und Nachteile von ios. Quelle: Eigene Darstellung basierend auf Wikipedia (2011 b) & Surendorf & Hardt (2009, S. 401 403). 2.4 Windows Phone Entwickler Microsoft Erscheinungsjahr 2010 Abstammung Windows CE Marktanteil 2011 1.6% Version 7.5 Mango vom 27. September 2011 App Programmiersprache Entwicklungsumgebung.NET, C#, Visual Basic.NET Microsoft Visual Studio 2010 Express for Windows Phone Tabelle 7: Informationen zu Windows Phone. Quelle: Eigene Darstellung basierend auf Petzold (2010, S.2) & Wikipedia (2011 e). Windows Phone ist der Nachfolger des bereits im Jahr 2000 erschienen Windows Mobile, das für Smartphones und Pocket PCs entwickelt wurde. Ein wesentlicher Unterschied zwischen den beiden Betriebssystemen ist das Bedienkonzept. Während Windows Mobile für die Bedienung mit einem Eingabestift konzipiert wurde, wurde Windows Phone für die moderne Bedienung mit Fingern (Multi-Touch) ausgelegt, so wie man es von Apple Geräten her kennt. (Wikipedia 2011 e, 2011 f) Grosse Erfolge konnte Microsoft mit einem weltweiten Marktanteil von unter 2% bisher nicht erzielen. Mit einer strategischen Partnerschaft mit Nokia sollen künftig weitere Marktanteile gewonnen werden. Hierzu soll Windows Phone zum bevorzugten Betriebssystem von Nokia Smartphones werden. (Nokia, 2011) Zusammengefasst können folgende Vor- und Nachteile für Windows Phone festgehalten werden.

Vorteile Nachteile Einheitliche Hardwarespezifikation (Vorgaben bezüglich Systemressourcen und Tastenlayout) Einheitliche Benutzeroberfläche Metro UI Geringer Verbreitungsgrad Vergleichsweise wenig verfügbare Apps Bisher keine Tablet Unterstützung Lizenzkosten Tabelle 8: Vor- und Nachteile Windows Phone. Quelle: Eigene Darstellung basierend auf Petzold (2010, S. 4 6); Wikipedia (2011 e) & Golem (2010).

2.5 Weitere mobile Betriebssysteme Um einen abschliessenden Blick auf den mobilen Betriebssystemmarkt zu werfen zu können, werden nachfolgend noch weitere bedeutende Betriebssysteme kurz zusammengefasst. 2.5.1 Symbian Entwickler Nokia Erscheinungsjahr 2000 Abstammung Version Programmiersprache EPOC Symbian^3 C++, Java, Flash, OPL, Python Marktanteil 2011 19.2% Tabelle 9: Informationen zu Symbian. Quelle: Eigene Darstellung basierend auf Wikipedia (2011 d) Symbian war ursprünglich ein Gemeinschaftsprojekt von Nokia mit Sony Ericsson, Motorola und NTT Docomo. Ziel war es die Mobile-Betriebssysteme Symbian OS, S60, UIQ und MO- APS zu einer einzigen Plattform zu vereinen. Auch weitere bedeutende Firmen wie AT&T, LG Electronics, Samsung Electronics, STMicroelectronics, Texas Instruments und Vodafone haben phasenweise zum Projekt beigetragen. Nach und nach verliessen die grossen Hersteller aber wieder das Projekt und als auch Sony, Samsung im Jahr 2010 ausstiegen, übernahm Nokia die Symbian Foundation wieder alleine. Seither ist die Verbreitung von Symbian-Systemen einzig und allein vom Verkauf von Nokia-Smartphones abhängig. (Wikipedia, 2011 d) 2.5.2 Blackberry OS Entwickler Research In Motion (RIM) Erscheinungsjahr 2000 Version 7 Marktanteil 2011 13.4% Programmiersprache Java Tabelle 10: Informationen zu RIM. Quelle: Eigene Darstellung basierend auf Wikipedia (2011 c). Die Firma Research in Motion war mit dem Blackberry einst Marktführer im Bereich der Smartphones, besonders in den Jahren 1999 bis 2002 hat Blackberry die Konkurrenz durch den bis dahin unerreichten Funktionsumfang teilweise regelrecht übertrumpft. Doch seither geht es immer mehr abwärts, die Firma verpasste es sich entscheidend weiterzuentwickeln und brachte immer wieder Geräte auf den Markt, die sich als Flop herausstellten. Zurzeit

steckt RIM in der bisher grössten Krise in ihrer Unternehmensgeschichte. (Wikipedia, 2011 c)

3 Infrastruktur zur Android Entwicklung Dieses Kapitel zeigt Schritt für Schritt welche Programme und Hilfsmittel zur Programmierung einer lauffähigen Android-App benötigt werden. Hierbei werden zwei verschiedene Ansätze erläutert. Im ersten Teil wird die klassische Eclipse-Entwicklungsumgebung mit Android-Plugin vorgestellt. Die Anleitung basiert auf Louis & Müller (2011, S. 22 43). Im zweiten Teil stellt die Projektgruppe eine neuartige Methode (App-Inventor) vor, welche es ermöglicht Apps ohne tiefgreifende Programmierkenntnisse zu realisieren. 3.1 Installation einer klassischen Entwicklungsumgebung Die Entwicklungsumgebung für Android-Apps ist grundsätzlich eine erweiterte Java- Entwicklungsumgebung, die aus drei Komponenten besteht: JDK für Java SE Ermöglicht die Entwicklung mit der Programmiersprache Java. Da Android-Apps Java Programme sind, ist das diese Komponente zwingend notwendig. Android SDK Enthält alle nötigen Bibliotheken und Hilfsprogramme, die zur Erstellung von Android-Apps benötigt werden. Damit Apps getestet werden können, ist auch ein Emulator dabei. IDE Eine integrierte Entwicklungsumgebung [IDE] unterstützt den Programmierer in vielerlei Hinsicht bei der Erstellung von Quelltexten. Grundsätzlich lässt sich eine Android-App aber auch ohne IDE entwickeln, jedoch spart man mit einer IDE sehr viel Zeit. Abbildung 2: Komponenten einer Android Entwicklungsumgebung. Quelle: Eigene Darstellung basierend auf Louis & Müller (2011, S. 21-23). Auf den nächsten Seiten wird nun die Installation der einzelnen Komponenten beschrieben. 3.1.1 JDK für Java SE Bevor man das JDK für Java SE installiert, ist es ratsam zu prüfen, ob es nicht bereits installiert ist. Wichtig hierbei ist, dass das JDK nicht mit dem JRE [Java Runtime Environment] verwechselt wird. Das JRE dient nur zur Ausführung von Java Programmen und genügt daher nicht den Anforderungen, um eine Android-App programmieren zu können.

3.1.1.1 Versionsprüfung Mit folgendem Befehl kann in der Windows Konsole 2 überprüft werden, ob das JDK bereits installiert ist. javac -version Sollte daraufhin eine Versionsnummer (1.6 oder 1.7) erscheinen, so kann dieses Unterkapitel übersprungen werden und mit der Installation des Android SDK fortgefahren werden. Sollte die Ausgabe wie auf Abbildung 3 aussehen, so muss ein JDK installiert werden. Abbildung 3: Konsolenausgabe bei nicht vorhandenem JDK. Quelle: Eigene Darstellung. 3.1.1.2 Installationsdatei herunterladen und ausführen Die aktuelle JDK-Installationsdatei kann unter folgendem Link heruntergeladen werden: http://www.oracle.com/technetwork/java/javase/downloads/index.html 2 Unter Windows: Ausführen öffnen und cmd eingeben. Abbildung 4: JDK Installationsdialog. Quelle: Eigene Darstellung.

Der Pfad sollte möglichst nicht geändert werden. Abbildung 5: Java Installationspfad. Quelle: Eigene Darstellung. Wenn alles geklappt hat, sollte Abbildung 6 erscheinen. Die vorgeschlagene Produktregistrierung ist für den Betrieb der Software nicht notwendig.

Abbildung 6: Abschluss der JDK Installation. Quelle: Eigene Darstellung. 3.1.1.3 Systempfad aktualisieren Die Eintragung in den Systempfad ermöglicht ein problemloses starten von JDK- Hilfsprogrammen unabhängig vom Pfad einer anderen Komponente. Die System- Umgebungsvariable Path enthält eine Sammlung von Verzeichnisangaben, die vom Betriebssystem und anderen Programmen genutzt werden kann, um Programme und Programmbibliotheken aufzurufen. (Louis & Müller, 2011, S. 26) Indem das BIN-Verzeichnis der Java-Installation in die Path -Variable eingetragen wird, ermöglicht man anderen Komponenten wie dem Android SDK, ein problemloses Zugreifen auf das JDK. Die Umgebungsvariablen lassen sich unter Windows 7 wie folgt aufrufen: Systemsteuerung > System und Sicherheit > System > Erweiterte Systemeinstellungen > Umgebungsvariablen Auf Umgebungsvariable PATH klicken und bearbeiten drücken (Abbildung 7).

Abbildung 7: Umgebungsvariable Path auswählen. Quelle: Eigene Darstellung. Letzten Eintrag mit ; Abschliessen und Pfad zum BIN-Verzeichnis der Java-Installation einfügen (Abbildung 8). Pfad zum BIN-Verzeichnis: C:\Program Files\Java\jdk1.7.0_01\bin Wichtig: Der Teil jdk1.7.0_01 entspricht der Nummer der aktuell installierten Version und muss möglicherweise angepasst werden. Abbildung 8: Java-Pfad in Umgebungsvariable Path einfügen. Quelle: Eigene Darstellung.

3.1.1.4 Abschliessende Prüfung Um zu Prüfen ob die Umgebungsvariable richtig gesetzt wurde, kann der Befehl javac version nochmals in der Windows Konsole ausgeführt werden. Wenn alles korrekt installiert ist, sollte nun die JDK Version erscheinen (Abbildung 9). Abbildung 9: Ausgabe der Windows Konsole bei korrekter Installation. Quelle: Eigene Darstellung. 3.1.2 Android SDK 3.1.2.1 Herunterladen der Installationsdatei Das aktuelle Android SDK kann unter folgendem Link heruntergeladen werden: http://developer.android.com/sdk/index.html Der Installationsvorgang kann einige Minuten in Anspruch nehmen. Während dem Installationsvorgang sollte folgende Meldung (Abbildung 10) erscheinen:

Abbildung 10: JDK Prüfung. Quelle: Eigene Darstellung. Zum Schluss sollte noch auf der letzten Seite die Option zum Starten des SDK-Managers deaktiviert werden. 3.1.2.2 SDK-Komponenteninstallation Damit das Android-SDK seinen Zweck erfüllen kann, müssen noch diverse Komponenten wie beispielsweise Programmbibliotheken mit Hilfe des SDK-Managers heruntergeladen werden. Der SDK-Manager befindet sich im Android/android-sdk Verzeichnis (Abbildung 11) und muss als Administrator ausgeführt werden, da sonst die Komponenteninstallation fehlschlägt.

Abbildung 11: Programm als Administrator ausführen. Quelle: Eigene Darstellung. Um die neusten Android Geräte zu unterstützten, reicht es die Android 4.0 API 3 herunterzuladen (Abbildung 12). Wenn ältere Android Geräte auch unterstützt werden sollen, so müssen auch alle anderen APIs herunterladen werden. Abbildung 12: SDK-Manager Paketauswahl. Quelle: Eigene Darstellung. Damit die Komponenteninstallation starten kann, müssen noch alle Lizenzverträge akzeptiert werden (Abbildung 13). 3 Eine API [Application Programming Interface] bildet die Schnittstelle zu Bibliotheksklassen, welche für die App-Programmierung benutzt werden. (Lous & Müller, 2011, S. 32)

Abbildung 13: Lizenzverträge akzeptieren. Quelle: Eigene Darstellung. Das Herunterladen und Installieren kann einige Minuten in Anspruch nehmen. Sobald folgende Meldung erscheint, ist die Installation abgeschlossen: Abbildung 14: Abschluss der Komponenteninstallation. Quelle: Eigene Darstellung. 3.1.3 Eclipse mit Android-Plugin 3.1.3.1 Herunterladen von Eclipse und Workspace anlegen Eclipse lässt sich unter folgendem Link herunterladen: http://www.eclipse.org/downloads/ Wichtig: Eclipse gibt es als 32-Bit und 64-Bit-Version. Die heruntergeladene Versions sollte mit der Version des installierten JDKs übereinstimmen. (Louis & Müller, 2011, S. 36) Die heruntergeladene Datei kann in ein Verzeichnis nach Wahl verschoben werden. Zum Beispiel: C:\Programme\Eclipse Um schneller auf Eclipse zugreifen zu können, empfiehlt es sich eine Desktopverknüpfung anzulegen. Anschliessend kann Eclipse gestartet werden. Die Arbeitsumgebung öffnet sich, sobald man auf das Work- Abbildung 15: Workbench Symbol. Quelle: Eigene Darstellung.

bench-symbol klickt. Beim erstmaligen Starten von Eclipse fragt das Programm nach dem zu verwendenden Workspace 4 -Verzeichnis. Der Name des Verzeichnisses ist frei wählbar. Beispielsweise: C:\MeineApps 3.1.3.2 Android-Plugin installieren Damit Eclipse optimal mit dem bereits im Kapitel 3.1.2 installierten Android-SDK arbeiten kann, benötigt es noch ein zusätzliches Plugin. Damit dieses korrekt installiert werden kann, muss Eclipse nochmals geschlossen werden und als Administrator neu gestartet werden. Das benötigte Android-Plugin kann in folgendem Menü direkt über die Eclipse- Programmoberfläche heruntergeladen werden: Help / Install New Software Es erscheint folgender Dialog: Abbildung 16: Dialog zur Installation von Plugins in Eclipse. Quelle: Eigene Darstellung. Anschliessend auf Add Klicken und im nächsten Dialog folgende Angaben übernehmen: Name: Android-Plugin Location: https://dl-ssl.google.com/android/eclipse/ Eclipse greift nun auf die angegebene Ressource zu und sollte nach einigen Sekunden folgende Developer Tools anzeigen. Diese müssen nun angewählt und installiert werden. 4 Eclipse organisiert sämtliche Programme (wie auch Apps) in Form von Projekten. Quelltexte, Bilddateien, etc. werden in einem eigenen Projektverzeichnis abgelegt. Der Name dieses Verzeichnisses wird beim erstellen eines neuen Projektes festgelegt. Alle Projektverzeichnisse befinden sich wiederum in einem übergeordnetem Ordner, dem sogenannten Workspace. (Louis & Müller, 2011, S.37)

Abbildung 17: Android-Plugin Developer Tools. Quelle: Eigene Darstellung. Im nächsten Schritt zeigt Eclipse die ausgewählten Tools an. Es muss unbedingt darauf geachtet werden, dass sich die Android Development Tools darunter befinden (Abbildung 18). (Louis & Müller, 2011, S. 40) Abbildung 18: Zusammenfassung der zu installierenden Tools. Quelle: Eigene Darstellung. Zum Schluss erscheint noch eine Sicherheitswarnung, da unsignierte Software installiert wird. Bei dieser Warnung unbedingt auf OK drücken, sonst wird die Software nicht installiert. Abbildung 19: Eclipse Sicherheitswarnung bei unsignierter Software. Quelle: Eigene Darstellung.

Nach der Installation muss Eclipse neu gestartet werden, damit die neu installierten Tools gebraucht werden können. 3.1.3.3 Eclipse konfigurieren Anschliessend muss Eclipse angegeben werden, so sich das Android-SDK befindet. Falls der Dialog nicht automatisch erscheint, kann dieser über folgendes Menü aufgerufen werden: Window / Preferences Kategorie Android wählen und den Punkt Use existing SDKs anwählen. Über Browse kann der Pfad zum Android-SDK angegeben werden (Abbildung 20). Abbildung 20: Android-SDK Pfad in Eclipse hinterlegen. Quelle: Eigene Darstellung. Anschliessend sollte unter Preferences folgendes eingetragen sein:

Abbildung 21: Installierte SDKs in Eclipse. Quelle: Eigene Darstellung. 3.1.3.4 App-Projekt erstellen Um mit der App-Entwicklung beginnen zu können, muss noch ein Projekt in Eclipse angelegt werden. Dieses Projekt dient als Ausgangsbasis für die im Kapitel 4.1 beschriebene Hello- World-App. Ein neues Projekt kann unter folgendem Menü aufgerufen werden: File / New / Project Anschliessend Android Project auswählen.

Abbildung 22: Android Projekt in Eclipse erstellen. Quelle: Eigene Darstellung. Projektname eintragen, beispielsweise Hallo. Abbildung 23: Projektname definieren in Eclipse. Quelle: Eigene Darstellung. Danach kann das Zielsystem ausgewählt werden, zum Beispiel Android 4.0.

Abbildung 24: Zielsystem der App auswählen in Eclipse. Quelle: Eigene Darstellung. Anschliessend müssen noch weitere Details angegeben werden wie: Programmname [1], Paketname [2], minimal vorausgesetzte SDK-Version [4] (muss mit gewählten Zielsystem aus Abbildung 24 übereinstimmen, SDK 14 = Android 4.0). Zudem sollte noch eine Activity 5 erstellt werden [3], was durch das Aktivieren des Kontrollkastens neben Create Activity gemacht wird (Abbildung 25). Wichtig: Der Activity Name darf keine Leer- und keine Sonderzeichen enthalten, da das Android-Plugin unter diesem Namen eine Java-Klasse definiert (Louis & Müller, 2011, S. 49). 4 1 2 3 Abbildung 25: Konfiguration des Android Projektes. Quelle: Eigene Darstellung. 5 Über Acitivties (deutsch: Aktivitäten) wird der Aufbau einer App definiert. Üblicherweise besteht eine App aus einer oder mehreren ausführbaren Activities. (Louis & Müller, 2011, S. 49).

Mit einem Klick auf Finish ist das Projekt fertig konfiguriert. 3.1.3.5 Projekt Übersicht Sobald das Projekt fertig konfiguriert ist, sollte folgende Übersicht erscheinen. 1 2 3 4 5 6 7 8 Abbildung 26: Eclipse Package Explorer. Quelle: Eigene Darstellung basierend auf Louis & Müller (2011, S. 52). Bevor mit der Programmierarbeit begonnen wird, ist es ratsam sich einen Überblick über die Projektstruktur zu machen. Jedes Android-Projekt ist wie folgt aufgebaut: 1. Projektordner 2. Ordner mit Quelltextdateien 3. Java-Paket (enthält.java Dateien) 4. Ordner für automatisch generierte Dateien 5. Ordner für Ressourcen 6. Layoutdatei definiert in XML 7. Sprachdatei, enthält Texte in XML

8. Manifestdatei listet die einzelnen Bestandteile einer App (Louis & Müller, 2011, S. 52) 3.1.3.6 Android Virtual Device anlegen Um Apps auf einem PC ausführen und testen zu können, muss noch ein virtuelles Gerät angelegt werden, ein sogenanntes Android Virtual Device [AVD]. Ein AVD kann je nach gewählten Einstellungen verschiedene Android Versionen und Bildschirmauflösungen simulieren. (Louis & Müller, 2011, S. 63) Um ein AVD zu erstellen, kann der Android Virtual Device Manager direkt vom Eclipse aus gestartet werden. Hierzu reicht ein Klick auf das entsprechende Symbol (Abbildung 27). Abbildung 27: Android Virtual Device Manager starten. Quelle: Eigene Darstellung. Anschliessend kann über die Schaltfläche New ein neues AVD erstellt werden. 1 2 Abbildung 28: AVD erstellen. Quelle: Eigene Darstellung. 1. Name des AVDs angeben (z.b. MeinAVD) 2. Zielsystem auswählen (z.b. Android 4.0)

Anschliessend sollte ein grüner Haken neben dem hinzugefügten AVD erscheinen (Abbildung 29). Abbildung 29: Auflistung der erstellten AVDs im Android Virtual Device Manager. Quelle: Eigene Darstellung. Nach der Erstellung des AVDs, kann der Android Virtual Device Manager geschlossen werden. Eclipse ist nun bereit für die App Entwicklung (vgl. Kapitel 4.1). Hinweis: Beim erstmaligen Ausführen einer App, fragt Eclipse nach einem Startmodus ( Run as ). Hierbei muss Android Application gewählt werden (Abbildung 30). Diese Einstellung wird beim späteren Ausführen der App automatisch übernommen. Abbildung 30: Eclipse Startmodus eistellen. Quelle: Eigene Darstellung.

3.2 Alternative: Installation einer App-Inventor Entwicklungsumgebung Als Alternative zur Eclipse Entwicklungsumgebung zeigt dieses Kapitel wie man den App Inventor nutzbar machen kann. Im Gegensatz zur lokal installierten Eclipse-Variante ist der App Inventor weitgehend online basiert. Das bedeutet, es sind wesentlich weniger Installations-, bzw. Einrichtungsschritte notwendig. 3.2.1 Anmeldung und Installation Der App Inventor ist ein Projekt des Google-Konzerns und kann via Google-Einstiegsseite gefunden werden oder direkt unter: http://www.appinventorbeta.com Für die Nutzung des kostenlosen Online-Programms ist ein Standard Google-Konto notwendig. Wenn man noch Keines hat, muss man sich noch registrieren, ansonsten kann man sich direkt mit Benutzername und Passwort einloggen. Um das Programm in ganzem Umfang nutzen zu können, muss Java Runtime Environment installiert sein. Ob das beim verwendeten Computer bereits der Fall ist, kann unter http://www.java.com/de/download/help/testvm.xml überprüft werden. Wenn die Installation fehlt oder nicht aktiviert ist, zeigt die angegebene Seite auch gleich die Anleitung für die notwendigen Schritte dazu. Als zweiter und bereits letzter Installationsschritt muss (zumindest bei der aktuellen App Inventor Version Beta 1.2) ein kleines spezifisches Setup-Packet lokal installiert werden. Die Downloadlinks und weitere Anleitungen findet man unter: http://www.appinventorbeta.com/learn/setup/#setupcomputer 3.2.2 Der Einstieg Wenn beiden Pakete installiert sind, kann der App Inventor durch einen Login auf der Einstiegsseite gestartet werden. Als Erstes muss unter MyProjects ein neues Projekt eröffnet werden. Dann sollte man zu folgenden Haupt-Screen kommen:

Abbildung 31: App Inventor Projekt Hauptansicht. Quelle: Eigene Darstellung. Nun ist das Programm bereits in vollem Umfang für die App Entwicklung bereit.

4 App-Programmierung in Android 4.1 Entwicklung einer Hello-World-App mit Eclipse Mit der Hello World App wagt die Projektgruppe den Einstieg in die Welt der Android App Programmierung. Als Basis für dieses Tutorial dient das Buch von Künneth (2011, S. 44-57) Android 3 Apps entwickeln mit dem Android SDK. Die für diese App notwendige Einrichtung des Projektes in Eclipse ist im Kapitel 3.1.3.4 auf Seite 25 beschrieben. Klassische Hello-World-Apps haben die Aufgabe Hello World! auf einem Bildschirm auszugeben. Um die Aufgabe etwas interessanter zu machen, wird die Aufgabe wie im folgenden Konzept beschrieben erweitert. 4.1.1 Konzept Die Hello-World-App soll nach starten des Programmes den Benutzer zunächst Begrüssen und ihn nach seinem Namen fragen. Anschliessend erfolgt eine persönliche Begrüssung und durch anklicken einer Schaltfläche kann das Programm beendet werden. Optional können noch weitere unterstützende Funktionen zur erleichterten Eingabe eingebaut werden. Die App lässt sich wie folgt aufbauen: Bildschirm 1 Bildschirm 2 Guten Tag. Schön, dass Sie mich gestartet haben. Bitte Verraten Sie mir Ihren Namen. Hallo Vorname Name. Ich freue mich, Sie kennen zu lernen. Vorname Name Weiter Fertig Abbildung 32: Prototyp der Benutzeroberfläche der Hello-World-App. Quelle: Eigene Darstellung basierend auf Künneth (2011, S. 47). Wie in Abbildung 32 ersichtlich, besteht die App aus drei verschiedenen Bestandteilen. Als Erstes wird ein nicht editierbares Textfeld eingeblendet, welches die Begrüssungsnachrichten enthält. Darunter befindet sich ein Eingabefeld in dem der Vorname und Nachname vom Benutzer eingegeben werden muss und ein Button mit dem die Eingabe bestätigt werden kann.

4.1.2 Dialogtexte erfassen Alle Texte und Beschriftungen die in der App enthalten sein sollen, können zentral in der XML-Datei strings.xml gespeichert werden. Im Eclipse Package-Explorer findet man diese Datei im Ordner res/values und ändert diese wie folgt ab. <?xml version="1.0" encoding="utf-8"?> <resources> <!-- Name der App --> <string name="app_name">hallo Android</string> <!-- Willkommensmeldung --> <string name="willkommen"> Guten Tag, Schön, dass Sie mich gestartet haben. Bitte verraten Sie mir Ihren Namen. </string> <!-- persönlicher Gruss --> <string name="hallo"> Hallo %1$s. Ich freue mich, Sie kennenzulernen.</string> <!-- Beschriftungen für Schaltflächen --> <string name="weiter">weiter</string> <string name="fertig">fertig</string> </resources> Quelltext 1: strings.xml Jedes Element <string> wird mit dem Attribut name ergänzt, um später im Quelltext darauf zugreifen zu können. Laut Künneth (2011, S. 45) müssen diese Namen projektweit eindeutig sein. Mit %1$s wird eine Variable erstellt, die in Bildschirm 2 (vgl. Abbildung 32) zur Anzeige des Benutzereingabe benötigt wird.

4.1.3 Programmoberfläche erstellen Die Programmoberfläche lässt sich ebenfalls mittels einer XML-Layoutdatei beschreiben. Die Layoutdatei main.xml befindet sich im Package-Explorer von Eclipse im Ordner res/layout und kann wie folgt geändert werden: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/nachricht" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/eingabe" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/weiter_fertig" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" /> </LinearLayout> Quelltext 2: main.xml Quelle Eigene Darstellung basierend auf Künneth (2011, S. 49). Sämtliche Bedienelemente der Hello-World-App werden in einen sogenannten Container des Typs LinearLayout gepackt. Die Elemente innerhalb dieses Containers werden nebenoder untereinander angezeigt und bilden so die Hierarchie der Oberfläche. In diesem Beispiel ist <LinearLayout> das Elternelement mit den drei Kinderelementen <TextView>, <Edit Text> und <Button>. (Künneth, 2011, S. 48-49)

Die Attribute android:layout_width und android:layout_height mit dem Wert fill_parent, sorgen dafür, dass die Komponenten die Breite und Höhe des Elternobjekts erben. In diesem Beispiel wird dies eingesetzt, um die gesamte Bildschirmbreite zu nutzen. Der Wert wrap_content hingegen bewirkt, dass sich die Grösse des Elements aus dem Inhalt ergibt. Dies wird in diesem Beispiel beim Button sowohl für die Höhe als auch für die Breite verwendet. Das Textfeld und die Eingabemaske verwenden wrap_content nur für die Höhe. Zusätzlich enthält der Button das Attribut android:layout_gravity mit dem Wert right, dies sorgt dafür, dass der Button rechtsbündig ausgerichtet wird. (Künneth, 2011, S. 49-50) Um Texte und Beschriftungen in die Klassen einfügen zu können, benötigt es eine Referenz. Um eine Referenz zu erstellen wird mittels android:id ein Name definiert, beispielsweise weiter_fertig. Die Angabe @+id/ sorgt dafür, dass einer View ein Bezeichner zugewiesen wird, auf den später mittels R.id zugegriffen werden kann. nachricht eingabe weiter_fertig Abbildung 33: Beschriftung der Oberflächenelemente. Quelle: Eigene Darstellung. 4.1.4 Programmlogik und ablauf Aufgrund der eingeschränkten Darstellungsmöglichkeiten auf Smartphones, müssen Apps in einzelne Funktionsblöcke aufgeteilt werden. Die Android-Plattform nennt solche Blöcke Activities. Jede Anwendung besteht aus mindestens einer Activity. (Künneth, 2011, S. 50-51) Die Hello-World-App könnte man laut Künneth (2011, S. 51) mit folgenden drei Activities aufbauen: 1. Begrüssung anzeigen 2. Namen eingeben 3. Personalisierten Gruss anzeigen

Allerdings ist dies laut Künneth (2011, S.51) in diesem Fall nicht sinnvoll, da keine Umfangreichen Benutzereingaben oder aufwendige Netzwerkkommunikation erfordert wird. Deshalb ist es zielführender die gesamte App in einer Activity abzubilden. 4.1.4.1 Activity erstellen Die Datei HalloSagenActivity.java im Ordner src kann wie folgt geändert werden: package ihrname.saghallo; import android.app.activity; import android.os.bundle; import android.widget.button; import android.widget.textview; public class HalloSagenActivity extends Activity { private TextView nachricht; private Button weiter_fertig; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); 1 nachricht = (TextView)findViewById(R.id.nachricht); 2 weiter_fertig = (Button) findviewbyid(r.id.weiter_fertig); nachricht.settext(r.string.willkommen); weiter_fertig.settext(r.string.weiter); 3 } } Quelltext 3: HalloSagenActivity.java 1. Version Quelle: Eigene Darstellung basierend auf Künneth (2011, S. 53) Erläuterungen zur 1. Version 1) Laden und Anzeigen der in main.xml definierten Benutzeroberfläche 2) Referenz mittels findviewbyid() auf in main.xml definierten Objekte nachricht und weiter_fertig erstellen

3) Beschriftung der Objekte durch settext() mittels der in strings.xml definierten Texte (vgl. Quelltext 1, Seite 35) 4.1.4.2 Benutzereingaben einfügen Um eine erste funktionsfähige Version der Hello-World-App zu erstellen, muss noch der Button weiter_fertig mit Funktionalität ausgestattet werden. Beim ersten Klicken auf den Button soll der Inhalt im Textfeld eingabe ausgelesen werden und als persönlicher Gruss im Textfeld nachricht angezeigt werden (vgl. Abbildung 33). Danach soll eingabe ausgeblendet werden und die Beschriftung des Buttons weiter_fertig von Weiter auf Fertig geändert werden. Beim zweiten Klicken soll die App beendet werden. (Künneth, 2011, S. 54) Die Datei HalloSagenActivity.java im Ordner src kann wie folgt ergänzt werden: package ihrname.saghallo; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.textview; public class HalloSagenActivity extends Activity { private TextView nachricht; private EditText eingabe; private Button weiter_fertig; private boolean erster_klick; 1 @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); nachricht = (TextView)findViewById(R.id.nachricht); eingabe = (EditText) findviewbyid(r.id.eingabe);

weiter_fertig = (Button) findviewbyid(r.id.weiter_fertig); erster_klick = true; 1 nachricht.settext(r.string.willkommen); weiter_fertig.settext(r.string.weiter); weiter_fertig.setonclicklistener(new OnClickListener() { public void onclick(view v) { if (erster_klick) { 2 nachricht.settext(getstring(r.string.hallo, eingabe.gettext())); 3 eingabe.setvisibility(view.invisible); weiter_fertig.settext(r.string.fertig); erster_klick = false; 4 5 } else { } finish(); 7 } } }); } Erläuterungen zur 2. Version 1) Boolean 6 Variable erster_klick zur Überprüfung, ob der Button zum ersten Mal angeklickt wird. Die Variable wird zuerst auf true gesetzt. 2) Mittels eines onclicklisteners kann auf das Anklicken des Buttons weiter_fertig reagiert werden. Dieses sogenannte Interface besteht aus der Methode onclick() und nutzt die boolean Variable erster_klick, um zu bestimmen, welche Aktionen durchzuführen sind (Künneth, 2011, S. 55). 3) Dem Textfeld nachricht wird mittels settext() der Text hallo aus der Datei strings.xml zugewiesen. Durch eingabe.gettext() wird der vom Benutzer eingegebene Name im Textfeld eingabe ausgelesen und an der dafür vorgesehenen Stelle (Variable %1$s) im Text hallo eingefügt. (vgl. Quelltext 1, Seite 35) 6 Dieser Datentyp kann den Wert true (wahr) oder false (falsch) annehmen.

4) Textfeld eingabe ausblenden 5) Button weiter_fertig mit in strings.xml definierten Text Fertig beschriften 6) Variable erster_klick auf false setzen 7) Beim zweiten Mal Klicken App beenden 4.1.4.3 Eingabehilfen einbauen Um die hochkomplexe ;-) Hello-World-App leichter bedienbar zu machen, kann im leeren Eingabefeld eingabe noch ein Hinweis angezeigt werden, was als Benutzereingabe erwartet wird (Vorname und Nachname). Hierzu wird die Datei strings.xml wie folgt ergänzt: <?xml version="1.0" encoding="utf-8"?> <resources> [ Inhalt aus strings.xml, Seite 35 ] <!-- Hinweistext --> <string name="vorname_nachname">vorname Nachname</string> </resources> Quelltext 4: strings.xml Ergänzung Quelle: Eigene Darstellung basierend auf Künneth (2011, S. 55). Nachdem der anzuzeigende Text in der strings.xml hinterlegt ist, muss noch die Layoutdatei main.xml wie folgt modifiziert werden: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" [ Inhalt aus main.xml, Seite 36 ] <EditText android:id="@+id/eingabe" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@+string/vorname_nachname" 1 android:singleline="true" 2 android:inputtype="textcapwords" 3 /> [ Inhalt aus main.xml, Seite 36 ] </LinearLayout> Quelltext 5: main.xml Ergänzung Quelle: Eigene Darstellung basierend auf Künneth (2011, S. 55).

Ergänzungen 1) Fügt den in strings.xml definierten Text in eingabe ein 2) Bewirkt, dass das Textfeld immer genau eine Zeile hoch ist 3) Macht den ersten Buchstaben eines eingegebenen Wortes automatisch Gross Um die Usability der App weiter zu steigern, ist es sinnvoll den Button weiter_fertig erst anklickbar zu machen, wenn der Benutzer seinen Namen im Textfeld eingabe eingetragen hat. Hierzu sind folgende Ergänzungen in der HalloSagenActivity.java notwendig: package ihrname.saghallo; import [ ] import android.text.textwatcher; public class HalloSagenActivity extends Activity { [ ] weiter_fertig = (Button) findviewbyid(r.id.weiter_fertig); eingabe.addtextchangedlistener(new TextWatcher() { public void ontextchanged(charsequence s, int start, int before, int count) { } public void beforetextchanged(charsequence s, int start, int count, int after) { } public void aftertextchanged(editable s) { weiter_fertig.setenabled(s.length() > 0); } }); weiter_fertig.setenabled(false); erster_klick = true; [ ] Quelltext 6: Ergänzungen zu HalloSagenActivity.java

Quelle: Eigene Darstellung basierend auf Künneth(2011, S.56). 4.1.5 App im AVD starten Im Eclipse auf Schaltfläche Run klicken und warten bis in der Konsole die Meldung ActivityManager: Starting Intent erscheint. Das Starten der App kann mehrere Minuten in Anspruch nehmen. (Bei Fehlermeldungen vgl. Kapitel 4.1.6 auf Seite 48) Abbildung 34: Ausgabe der Konsole in Eclipse beim Starten einer App. Danach auf Menü drücken, die App wird direkt geladen.

Abbildung 35: Android Virtual Device Startbildschirm.

Button funktioniert erst nach Eingabe des Namens. Abbildung 36: 1. Bildschirm der Hello-World-App. Quelle: Eigene Darstellung.

Abbildung 37: 1. Bildschirm der Hello-World-App mit aktiviertem Button. Quelle: Eigene Darstellung. Abbildung 38: 2. Bildschirm der Hello-World-App. Quelle: Eigene Darstellung. Sobald man auf Fertig klickt wird die App beendet. Die App kann jederzeit in der Appübersicht neugestartet werden.

Abbildung 39: Android Appübersicht. Quelle: Eigene Darstellung.

4.1.6 Problembehandlung AVD Bei der Installation der Entwicklungsumgebung auf anderen Testgeräten, stellte die Projektgruppe fest, dass es aufgrund fehlender Internetverbindung oder geringer Rechenleistung zu Problemen kommen kann (Abbildung 40 und Abbildung 41). Daher sollte vor dem Start der App sichergestellt sein, dass der PC am Internet angeschlossen ist. Bei leistungsschwachen Notebooks sollte darauf geachtet werden, dass das Netzteil angeschlossen ist und der Energiesparmodus ausgeschaltet ist. Abbildung 40: Mögliche Fehlermeldung bei geringer Rechenleistung. Quelle: Eigene Darstellung. Abbildung 41: Mögliche Fehlermeldung bei fehlender Internetverbindung. Quelle: Eigene Darstellung. 4.1.7 App auf ein mobiles Gerät übertragen Eclipse bietet eine automatische Funktion zur Übertragung der App auf ein mobiles Gerät an. Hierzu sind jedoch einige vorbereitende Schritte zu beachten. Die Projektgruppe erläutert diesen Prozess exemplarisch in Anlehnung an Louis & Müller (2011, S. 67 69) anhand eines Samsung Galaxy Tabs.

4.1.7.1 Gerätetreiber installieren Samsung Geräte benötigten sogenannte Kies-Treiber um von einem PC korrekt erkannt zu werden. Der Treiber kann unter folgendem Link heruntergeladen werden http://samsung.de/de/consumer/kies.aspx Nach der Installation, kann das Tablet via USB an den PC angeschlossen werden und die Kies Software ein Mal ausgeführt werden. Kies sollte das angeschlossene Gerät erkennen und anzeigen. Anschliessend kann Kies beendet werden und die USB Verbindung getrennt werden. Danach muss das Tablet in den USB-Debugging Modus geschaltet werden (Abbildung 3). Dieser Modus kann unter folgendem Menü aktiviert werden: Einstellungen / Anwendungen / Entwicklung / USB-Debugging Abbildung 42: USB-Debugging auf Tablet aktivieren. Quelle: Eigene Darstellung. Nachdem der USB-Debugging Modus eingeschaltet wurde, kann das Tablet wieder an den PC angeschlossen werden. Windows sollte nun weitere Treiber automatisch installieren (Abbildung 43).

Abbildung 43: Automatische Treiberinstallation bei angeschlossenem Tablet im USB-Debugging Modus. Quelle: Eigene Darstellung. 4.1.7.2 Zielsystem überprüfen Als nächstes steht die Überprüfung der Kompatibilität der Software mit dem gewünschten Zielsystem an, in diesem Fall ein Samsung Galaxy Tab mit Android 2.2 7. Das Gerät muss bei diesem Vorgang unbedingt am PC angeschlossen sein. Im Eclipse muss folgendes aufgerufen werden: Run / Run Configurations Anschliessend in den Reiter Target wechseln. Sofern mehrere Apps bestehen, muss im linken Menü noch die zu übertragende App gewählt werden (Abbildung 44). 7 Die installierte Android Version kann unter Einstellungen / Telefoninfo / Firmware-Version abgefragt werden.

Abbildung 44: App und Zielsystem wählen. Quelle: Eigene Darstellung. Der Deployment Target Selection Mode kann auf automatic gestellt werden. Anschliessend auf Run klicken (Abbildung 44). Danach sollte die Seriennummer des angeschlossenen Gerätes erscheinen. Wie aus Abbildung 45 hervorgeht, besteht in diesem Fall ein Versionskonflikt. Die Software wurde für Android 4.0 geschrieben, das Zielsystem läuft jedoch mit Android 2.2. Abbildung 45: Versionskonflikt. Quelle: Eigene Darstellung.

Um dieses Problem zu beheben, muss die Android 2.2 API nachgeladen werden und das komplette Projekt mit der Einstellung min. SDK Version 8 (= Android 2.2) erstellt werden. Die Projektgruppe zieht aus dieser Erfahrung den Schluss, dass man von Anfang an festlegen sollte, welche Android Plattformen man unterstützen möchte, um solche Probleme zu vermeiden. 4.1.7.3 API nachladen APIs können über den Android SDK Manager heruntergeladen werden. Bevor dies gemacht wird, sollte Eclipse nochmals geschlossen werden und als Administrator nochmals gestartet werden. Der SDK Manager kann direkt in der Eclipse Symbolleiste gestartet werden. Als nächstes Wählt man die zu unterstützende API, in unserem Fall Android 2.2 und lädt die entsprechenden Files herunter. Abbildung 46: API Download im Android SDK Manager. Quelle: Eigene Darstellung. Möglicherweise sind zwei Downloaddurchgänge notwendig, um alle Pakete installieren zu können. Die ADB-Restart Meldung kann mit Yes bestätigt werden. 4.1.7.4 Angepasstes Projekt erstellen Um mögliche Konflikte zu vermeiden, hat die Projektgruppe ein neues App Projekt wie in Kapitel 3.1.3.4 auf Seite 25 beschrieben erstellt. Als Build Target wurde Android 2.2. gewählt (vgl. Abbildung 24) und als min. SDK Version wurde 8 gewählt (vgl. Abbildung 25). Damit die Änderung ohne Anpassungen am Quelltext möglich ist, hat die Projektgruppe vor der Erstellung des neuen Projektes, die Inhalte der Dateien HalloSagenActivity.java,

strings.xml und main.xml in einer externen Textdatei gespeichert und das alte Projekt komplett gelöscht. So war keine Änderung des Projekt- oder Paketnamens notwendig. Nach der Erstellung des neuen Projektes konnten die genannten Dateien mit den gesicherten Quelltexten gefüllt werden. 4.1.7.5 App übertragen Um die App zu übertragen öffnet man das in Kapitel 4.1.7.2 beschriebene Menü und wählt Android 2.2. Der Deployment Target Selection Mode wird dieses Mal auf Manual gestellt. Danach kann Apply gedrückt werden und anschliessend Run. Wie aus Abbildung 47 hervorgeht, stimmen dieses Mal die Zielsysteme überein. Die App kann mit einem Klick auf OK auf das mobile Gerät übertragen werden. Abbildung 47: App auf mobiles Gerät übertragen. Quelle: Eigene Darstellung. 4.1.7.6 App auf mobilem Gerät testen Die übertragene App sollte direkt auf dem Bildschirm des mobilen Gerätes angezeigt werden (Abbildung 48). Es empfiehlt sich eingebauten Funktionen zu testen, um sicherzugehen, dass das Gerät die App optimal unterstützt.

Abbildung 48: Hello World App auf einem Samsung Galaxy Tab. Quelle: Eigene Darstellung. Nach dem Testen kann die App normal beendet werden und bei Bedarf wie jede andere App über das App-Menü gestartet werden. Um die normale USB-Funktionalität wiederherzustellen, kann der USB-Debugging Modus wieder ausgeschaltet werden.

4.2 Alternative: Entwicklung einer Hello-World-App mit dem App- Inventor Um eine Hello-World-App wie in Kapitel 4.1 mit Eclipse beschrieben alternativ mit dem App Inventor zu erstellen, muss als erstes im Online-Programm unter MyProjects ein neues Projekt angelegt werden. 4.2.1 Oberfläche Danach öffnet sich automatisch die Hauptansicht mit der Palette und dem Viewer. Mit diesen Instrumenten ist es nun auch einem programmier-unerfahrenen Benutzer möglich eine App Oberfläche zu entwickeln. Die einzelnen Elemente können ganz einfach per Maus von der Palette aus in den Viewer gezogen und angepasst werden. Die freie, bzw. gezielt gewünschte Positionierung der Elemente ist so jedoch nicht möglich. Auch kann nur einen Screen erstellt werden, um mehrere Screens vorzutäuschen, muss man mit dem Abtausch von sichtbaren und unsichtbaren Elementen arbeiten. Wenn man den ersten Screen wie in Kapitel 4.1.1 beschrieben mit dem App Inventor erstellt, sieht das wie in der nachfolgenden Abbildung 49 aus. Abbildung 49: Programm Oberfläche mit dem App Inventor. Quelle: Eigene Darstellung. 4.2.2 Funktionen Um der Oberfläche Funktionen zu hinterlegen benötigt man den integrierten Blocks Editor. Dieser Teil des Programms öffnet und erstellt eine lokale Datei auf der die Funktionen der App vorerst gespeichert werden. Mit dem Blocks Editor werden die Funktionen nicht wie bei der Programmierung klassisch mit Codezeilen eingegeben, sondern mit einer Art vorgefertig-

ter Puzzle-Teile. Jedes Element von der zuvor erstellten Oberfläche kann so relativ schnell mit Funktionen verbunden werden. Allerdings ist man in den Möglichkeiten im Vergleich mit der Eclipse Entwicklung durchaus eingeschränkt. Eher seltenere Funktionen sind teilweise nicht vorgefertigt und müssen oft umständlich erstellt werden, bspw. mit vielen verschachtelten Wenn -Schlaufen und Ähnlichem. Für viele Standard-Funktionen eignet sich der App Inventor jedoch hervorragend und bietet durch die Puzzle-Oberfläche immer eine gute Übersicht. Im nachfolgenden Bild ist die Funktion des Weiter -Knopfes aus dem Hallo-World- App -Beispiel abgebildet. Abbildung 50: Funktionen im App Inventor. Quelle: Eigene Darstellung. 4.2.3 Weitere Möglichkeiten Erstaunlich und erwähnenswert beim App Inventor ist, dass das Programm im Vergleich zur klassischen Programmierung einige sehr komplexe Programmteile viel schneller und einfacher erstellen kann. Beispielsweise wenn es um Datenbankzugriffe geht. Der App Inventor bietet unter anderem Möglichkeiten unkompliziert auf die Neigungs- oder Beschleunigungssensoren von Smartphones zuzugreifen und damit zu arbeiten. Auch die Programmierung für die Verwendung der GPS Daten eines Geräts kann mit dem App Inventor erstaunlich leicht erledigt werden.

5 Publikation einer App Nachdem sich das vorhergehende Kapitel mit der Entwicklung einer Android App auseinandergesetzt hat, geht es nun um den nächsten Schritt: Die Publikation einer App. Die folgenden Kapitel zeigen die Möglichkeiten und die Vor- und Nachteile bei der Veröffentlichung einer App speziell im offiziellen Android Market von Google. 5.1 Der offizielle Android Market Es gibt zahlreiche kleinere Plattformen und ein paar grössere um Android Apps zu beziehen. Die mit Abstand gewichtigste Plattform in diesem Bereich ist jedoch der offizielle Android Store von Google selbst. Der Online Store kann unter folgenden Link aufgerufen werden: https://www.market.android.com 5.1.1 Suchen und Finden Der Android Market zeigt sich trotz dem enormen Umfang und der grossen Vielfalt auf den ersten Blick überraschend übersichtlich. Das mag daran liegen, dass die Apps recht konsequent nach User-Ratings und zusätzlich auch kostenpflichtig und nicht kostenpflichtig sortiert sind. Dadurch finden besonders die Apps mit vielen und guten Bewertungen schnell weitere Kunden. Eher seltener benutzte und weniger beliebte Apps, wie in unserem Fall, findet man wohl nur wenn man das Suchfeld benutzt. 5.1.2 Publishing Um Apps zu publizieren, benötigt man als Erstes, wie auch in Kapitel 4.2 für die Nutzung des App Inventors, ein Google Account. Auf der Market Seite gibt es einen Entwickler Bereich, dieser ist über einen Link auf der Hauptseite erreichbar oder auch unter: https://www.market.android.com/publish/home Wenn man sich auf dieser Seite zum ersten Mal einloggt, muss man eine zusätzliche Registrations-Prozedur durchlaufen. Diese dauert weniger als 5 Minuten und besteht aus drei Teilschritten. Zuerst braucht Google noch ein paar weitere Detailangaben, nebst den bereits bestehenden aus dem Standard-Google-Account.

Abbildung 51: Registrations-Zusatz-Schritt 1 - Detailangaben. Quelle: Eigene Darstellung. Unter diesem Profil werden die Apps nachher publiziert. Später hat man immer noch die Möglichkeit sein Profil zu erweitern, diese Informationen (wie in Abb. 51) sind aber vorerst zwingend nötig. In einem zweiten Schritt muss eine Gebühr von 25$ für die Eröffnung des Kontos bezahlt werden. Diese kann ausschliesslich mit Kreditkarte bezahlt werden. Abbildung 52: Registrations-Zusatz-Schritt 2 - Entwickler-Gebühr. Quelle: Eigene Darstellung.

Beim Bezahlprozess wird auch noch die Rechnungsadresse gefordert, die Kreditkarteninformationen werden zudem unumgänglich gespeichert. Als letzter Schritt muss man noch die umfangreichen Vertragsvereinbarungen akzeptieren. Nun ist die Registration provisorisch abgeschlossen, man gelang direkt zur übersichtlichen Startseite. Abbildung 53: Erster Einstieg in den Android Market Entwickler Account. Quelle: Eigene Darstellung. Bevor man definitiv Apps veröffentlichen kann, muss noch die Überprüfung der Registration durch einen Google-Mitarbeiter abgewartet werden. In derzeit können bereits Apps hochgeladen und beschrieben werden, nur noch nicht veröffentlicht. Wenn man plant die App kostenpflichtig anzubieten, muss zusätzlich ein Verkäuferkonto eingerichtet werden, da unsere Beispiel-App Pausencountdown kostenlos angeboten werden soll, verzichten wir an dieser Stelle auf die Prozedur. Eine App kann kostenlos oder für einen Betrag zwischen $0.99 - $200 angeboten werden, ein Publisher kann das vollständig selbst bestimmen. Wenn man eine App verkauft behält Google 30% des Verkaufspreises als Transaktionsgebühr, die restlichen 70% werden auf das hinterlegte Konto überwiesen. Google bietet in diesem Bereich sehr effiziente und bequeme Transaktionslösungen. (Künneth, 2011, S. 79 82)

Eine weitere interessante Dienstleistung von Google für den Publisher ist der Statistik- Bereich, der anzeigt wie viele Downloads, Installation und Deinstallationen die angebotene App weltweit hat. Auch bietet das Konto eine Benachrichtigungsfunktion für Upgrades. Um eine App hochladen zu können, muss diese im gängigen APK-Format vorliegen. Wie man eine App richtig exportiert ist in Kapitel 5.3 App exportieren beschrieben. Über den Link auf der Startseite kann die App direkt aus dem Browser hochgeladen werden, der Market arbeitet von Beginn an automatisch mit Versionen. Abbildung 54: App hochladen im Android Market. Quelle: Eigene Darstellung. Sobald die Programmdatei hochgeladen ist, kann weiter am Publishing gearbeitet werden. Printscreens, App-Logo, Beschreibungen und Weiteres (siehe Abb. 55) können als Informationen hinzugefügt werden. Google gibt sehr genau in welchem Mass und Format das geschehen soll.

Abbildung 55: Veröffentlichungsinformationen hinzufügen. Quelle: Eigene Darstellung. Schon ist die App bereit zur Veröffentlichung, sofern sie den Richtlinien (in Kapitel 5.2 beschrieben) genügt. 5.2 Veröffentlichungs-Richtlinien Ein heikles Thema beim Publishing von Apps sind oft die Veröffentlichungsrichtlinien. Besonders bei Apple stellen diese Richtlinien eine grosse Hürde dar für die Entwickler. Beim Android Market von Google sind die Vorgaben verhältnismässig gering. Google gibt hauptsächliche Richtlinien für die Inhalte vor. Die wichtigsten Vorgaben diesbezüglich sind Verbote für: Illegale Inhalte Verletzungen des Datenschutzes Inhalte, die die Funktionalität von Drittanbieter-Diensten beeinträchtigen Inhalte, die Hass verbreiten oder zu Gewalt anstiften Inhalte, die gegen gewerbliche Schutzrechte verstossen, einschliesslich Patent- und Urheberrechten (siehe DMCA-Richtlinie), Markenrechten, Geschäftsgeheimnissen und anderer Eigentumsrechte Jegliche Inhalte, die für Nutzer unter 18 Jahren nicht geeignet sind Pornografie, Unzüchtigkeit, Nacktheit oder sexuelle Aktivitäten

Zudem sollte das Programm die Geräte oder persönlichen Daten der Nutzer nicht schädigen und das Netzwerke nicht unerwartet stark belasten. Wenn man diese wenigen Richtlinien erfüllt steht einer offiziellen Veröffentlichung nichts mehr im Weg. (Google, 2011)

5.3 App exportieren Um eine App publizieren zu können, muss die App zuvor digital siginiert werden und anschliessend ein Application Package erstellt werden. Eclipse erzeugt aus diesem Package eine komprimierte Installationsdatei mit der Endung.apk. Sie enthält alle Klassen, Ressourcen und sonstige Bestandteile der App. (Künneth, 2011, S. 77-79) Die folgenden Abbildungen zeigen den Vorgang. Recktsklick auf Projekt und folgendes Aufrufen Android Tools / Export Signed Apllication Package Abbildung 56: Signiertes Apllication Package exportieren. Quelle: Eigene Darstellung.

Abbildung 57: Schlüssel erstellen. Quelle: Eigene Darstellung. Unter Location wird der Pfad angegeben, wo der Schlüssel abgelegt werden soll. Der Dateiname muss mit.keystore enden (Abbildung 57). Anschliessend können ergänzende Informationen hinzugefügt werden (Abbildung 58). Abbildung 58: Angaben zum Schlüssel. Quelle: Eigene Darstellung.

Zum Schluss muss noch der Name und Pfad des Installationsarchivs angegeben werden. 6 Fazit Wenn man eine mobile Applikation entwickeln will, muss man sich schon ziemlich früh im Entwicklungsprozess Gedanken machen, auf welchem System das Programm später laufen soll. Wenn man dabei in grösseren Dimensionen denkt, macht man die Entscheidung oft vom Marktanteil abhängig. Die Mobile-Betriebssysteme Android, Apple ios und Microsoft bestimmen zukünftig den Markt, darin sind sich die Experten einig (siehe Kapitel 2.1). Weltweit gesehen wird in fünf Jahren vor allem Android am den Markt dominieren mit beinahe 50 Prozent Marktanteil, in der Schweiz könnte sich Apple mit dem iphone noch etwas länger an der Spitze halten. Wenn man eine App programmieren will, könnte es sich also lohnen auf die Plattform Android zu setzten. Alternativ kann eine App auch systemunabhängig programmiert werden, in dem sie rein webbasiert erstellt wird (beispielsweise mit HTML5). Nach der Wahl des Ziel-Betriebssystems, stellt sich als zweites die Frage nach dem Programmier-Tool. Für die Android-App Erstellung bieten sich zwei Varianten an, die erste ist die klassische Programmierung Zeile für Zeile mit der Entwicklungsumgebung Android SDK, die Alternative ist die Programmierung mit dem online-gestützten Tool App Inventor. Beide Wege haben ihre Vor- und Nachteile. Bei der klassischen Entwicklung beispielsweise hat man alle Freiheiten, während dem man sich beim App Inventor auf die vorprogrammierten Codeteile beschränken muss. Ein gewisses Programmiergrundverständnis ist für beide Varianten notwendig. Zu guter Letzt soll eine App meistens auch veröffentlicht werden. Dafür bietet sich unter anderem der offizielle Android App Store von Google an. Im Gegensatz zu App Veröffentlichung bei Apple sind die Richtlinien deutlich weniger streng. Mit einem geringen finanziellen Aufwand lässt sich eine Android App weltweit verfügbar machen. Was allenfalls für die anschliessende Vermarktung einer App notwendig ist, das ist ein mögliches Thema einer weiteren Arbeit.

Quellenverzeichnis 66 Quellenverzeichnis Literatur Künneth, T. (2011). Android 3. Apps entwickeln mit dem Android SDK. Bonn: Galileo Press. Kloss, J. H. (2011). Android-Apps. Programmierung für Einsteiger. Mobile Anwendungen entwickeln mit App Inventor. München : Markt+Technik Verlag. Louis, D. & Müller, P. (2011). Android. Der schnelle Einstieg in die Programmierung und Entwicklungsumgebung. München: Markt+Technik Verlag. Surendorf, K. & Hardt, M. (2009). Einstieg in Objective-C 2.0 und Cocoa inkl. iphone Programmierung. Bonn: Galileo Press. Petzold, C. (2010). Programming Windows Phone 7. Redmond, Washington: Microsoft Press. Internetquellen Gartner. (2011). Worldwide Mobile Communications Device Open OS Sales to End Users by OS (Thousands of Units). Gefunden am 7. Oktober 2011 unter http://www.gartner.com/it/page.jsp?id=1622614 Golem. (2011). Android festigt Marktführerschaft, Windows Phone 7 verliert. Gefunden am 7. Oktober 2011 unter http://www.golem.de/1108/85650.html Golem. (2010). Kein Tablet mit Windows Phone 7 geplant. Gefunden am 7. Oktober 2011 unter http://www.golem.de/1010/78585.html Google. (2011). Market-Richtlinien für Entwicklerinhalt. Gefunden am 7. Oktober 2011 unter https://support.google.com/androidmarket/developer/bin/answer.py?hl=de&answer=1 13474&topic=2364761&ctx=topic Wikipedia. (2011 a). Android (Betriebssystem). Gefunden am 19. Dezember 2011 unter http://de.wikipedia.org/wiki/android_(betriebssystem) Wikipedia. (2011 b). Apple ios. Gefunden am 19. Dezember 2011 unter http://de.wikipedia.org/wiki/apple_ios Wikipedia. (2011 c). Research in Motion. Gefunden am 19. Dezember 2011 unter http://de.wikipedia.org/wiki/research_in_motion Wikipedia. (2011 d). Symbian-Plattform. Gefunden am 19. Dezember 2011 unter http://de.wikipedia.org/wiki/symbian-plattform

Quellenverzeichnis 67 Wikipedia. (2011 e). Windows Phone 7. Gefunden am 19. Dezember 2011 unter http://de.wikipedia.org/wiki/windows_phone Wikipedia. (2011 f). Windows Mobile. Gefunden am 19. Dezember 2011 unter http://en.wikipedia.org/wiki/windows_mobile Nokia. (2011). Nokia and Microsoft announce plans for a broad strategic partnership to build a new global ecosystem. Gefunden am 19. Dezember 2011 unter http://press.nokia.com/2011/02/11/nokia-and-microsoft-announce-plans-for-a-broadstrategic-partnership-to-build-a-new-global-ecosystem/ Titelblatt Wallpapersonly. Android Ice Cream Sandwich [Foto]. Gefunden am 3. Dezember 2011 unter http://www.wallpapersonly.net/wallpapers/android-ice-cream-sandwich- 1920x1200.jpg

Anhänge 1 Anhänge Anhang A: Programmcode Countdown App Enter.java (Zeigt Titelbild an und wechselt nach 3 Sekunden zum Countdown) package my.countdown; // Startbildschirmcode basierend auf stackoverflow.com import android.app.activity; import android.os.bundle; import android.os.handler; import android.content.intent; public class Enter extends Activity { //Festlegen wie lange Startbild angezeigt werden soll private final int SPLASH_DISPLAY_LENGHT = 3000; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.welcome); new Handler().postDelayed(new Runnable() { public void run() { //Zu ladende Dateien definieren Intent mainintent= new Intent(Enter.this,CountActivity.class); Enter.this.startActivity(mainIntent); Enter.this.finish(); } }, SPLASH_DISPLAY_LENGHT); } }

Anhänge 2 CountActivity.java (Enthält Programmlogik für Countdown) package my.countdown; import android.app.activity; import android.os.bundle; import android.os.countdowntimer; import android.widget.textview; import android.widget.button; import android.view.view; import android.view.view.onclicklistener; public class CountActivity extends Activity { Button start, stop; //Steuerungsbuttons TextView tv; //Textfeld für Countdown @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); //Referenzen zu Layoutdatei erstellen start = (Button)findViewById(R.id.start); stop = (Button)findViewById(R.id.stop); tv = (TextView)findViewById(R.id.tv); //Startanzeige des Countdowns (nicht Startwert!) tv.settext("300 Sekunden"); //Counter erstellen, Startwert und Abzählwert in Millisekunden definieren final MyCount counter = new MyCount(300000,1000); //Startbutton Funktion zuweisen start.setonclicklistener(new OnClickListener() { public void onclick(view v) { counter.start(); } }); stop.setonclicklistener(new OnClickListener() {

Anhänge 3 public void onclick(view v) { counter.cancel(); } }); } //Erweiterung der abstrakten Klasse CountDownTimer mit Methoden public class MyCount extends CountDownTimer{ public MyCount(long msinfuture, long countdowninterval){ } super(msinfuture, countdowninterval); //Anzeige wenn Countdown abgelaufen @Override public void onfinish() { tv.settext("zeit abgelaufen!"); } //Countdownanzeige @Override public void ontick(long msuntilfinished){ tv.settext(+msuntilfinished/1000 +" Sekunden"); } } }

Anhänge 4 welcome.xml (Definiert Layout des Startbildschirms, enthält Referenz zum Startbild willkommen.png im Ordner Drawable) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:src="@drawable/willkommen" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/iv1"> </ImageView> </LinearLayout> main.xml (Definiert Layout des Countdowns) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="verbleibende Zeit" android:textsize="20dp" android:textstyle="bold" /> <TextView android:id="@+id/tv" android:text="" android:layout_width="fill_parent" android:layout_height="200dp" android:layout_gravity="center" android:textcolor="#ff0000" android:textsize="30dp" android:textstyle="bold" />

Anhänge 5 <Button android:id="@+id/start" android:text="starten" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> <Button android:id="@+id/stop" android:text="beenden" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> </LinearLayout>

Anhänge 6 Android Manifest (Enthält Informationen über die App, Referenz zu Icon (icon.png im Ordner Drawable), Bildschirmausrichtung und Activities) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.countdown" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name=".countactivity" android:screenorientation="portrait"></activity> <activity android:label="@string/app_name" android:name=".enter" > <intent-filter > <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>

Anhänge 7 Anhang B: Bildmaterial Countdown App Bilder werden jeweils im Ordner Drawable abgelegt. Startbild willkommen.png Verknüpfungsicon icon.png

Anhänge 8 Anhang C: Screenshot Countdown App