Einführung in das mobile Betriebssystem Android

July 31, 2021 | Author: Gretel Kruse | Category: N/A
Share Embed Donate


Short Description

Download Einführung in das mobile Betriebssystem Android...

Description

Einführung in das mobile Betriebssystem Android

Seminararbeit von Alexander Cüpper Matr.-Nr. 995260

15. Dezember 2010

1. Betreuer : Prof. Dr. Volker Sander 2. Betreuer : Dr.-Ing. Christoph Butenweg

Inhaltsangabe 1 2

3

4

5 6

Einleitung Vergleich Android 2 vs. Apple iOS 4 und Symbian^3 2.1 Übersicht der Betriebssysteme 2.1.1 Apple iOS 4 2.1.2 Symbian^3 2.1.3 Google Android 2.x 2.2 Der Vergleich 2.3 Warum Android? Der Aufbau von Android 3.1 Architekturen 3.1.1 Die Dalvik Virtual Machine 3.1.2 Die Basisbibliotheken 3.1.3 Anwendungsrahmen (Application Framework) 3.1.4 Anwendungsschicht (Applications) 3.2 Oberflächengestaltung 3.2.1 Das Android-Manifest 3.2.2 View 3.2.3 Layout 3.2.4 Activity 3.3 Weitere Komponenten einer Anwendung 3.3.1 Services 3.3.2 Die Klasse Context 3.3.3 Content Provider 3.3.4 Broadcast Receiver 3.4 Intents 3.4.1 Explizite Intents 3.4.2 Implizite Intents 3.4.3 Intent-Filter Programmierung in Java 4.1 Warum Java? 4.2 Android Development Tools(ADT) 4.2.1 ADT-Plugin 4.2.2 Android Emulator 4.2.3 Android Debug Bridge(adb) 4.2.4 sqlite3 4.2.5 dx-Tool 4.3 Einstiegsbeispiel für Android Fazit / Ausblick Anhang / Quellen 6.1 Literaturverzeichnis 6.2 Abbildungsverzeichnis

1

1 Einleitung 1.1 Motivation und Ziel Am Lehrstuhl für Baustatik und Baudynamik der RWTH Aachen wurde und wird die Software MINEA entwickelt und weiterentwickelt. Durch die Software ist es möglich die Standsicherheitsnachweise von Mauerwerksbauten und Mauerwerksbauten in Mischbauweise unter Vertikal- und Horizontallasten aus Erdbeben und Wind durchzuführen. Durch eine integrierte Datenbankstruktur können alle Mauerwerksund Betonmaterialen in der Berechnung verwendet werden. Die Berechnung erfolgt in MINEA, je nach Anforderungen des konkreten Objektes, anhand einer zwei- oder dreidimensionalen Modellierung des Tragwerks. Innerhalb der Software ist ebenfalls eine Datenbank für Erdbebenzonen für Deutschland. Mit dieser lassen sich in einem Tool von MINEA elastische Antwortspektren für bestimmte Untergrund- und Baugrundklassen anzeigen. Im Zuge meiner anstehenden Bachelorarbeit werde ich dieses Tool als Applikation für Android entwickeln. Das Tool soll alleinstehend auf mobilen Endgeräten mit dem Betriebssystem Android funktionieren. Zusätzlich zum Grundrahmen des Tools soll eine Verlinkung mit Google Maps implementiert werden. Mit dieser Seminararbeit möchte ich einen Einblick in das Betriebssystem Android geben. Dabei wird der Aufbau erläutert und ein Überblick über die Entwicklung von Android Applikationen gegeben, um für die Bachelorarbeit eine gewisse Grundlage zu schaffen.

2

2 Vergleich Android 2 vs. Apple iOS 4 und Symbian^3

2.1 Übersicht der Betriebssysteme Um einen guten Überblick über Android zu bekommen, möchte ich neben Android zunächst die Betriebssysteme Apple iOS und Symbian vorstellen um diese mit Android zu vergleichen und abgrenzen zu können.

2.1.1 Apple iOS 4 Das Betriebssystem iOS 4 von Apple wurde mit dem Erscheinen des iPhone Anfang 2007 vorgestellt. iOS ist ein auf das iPhone angepasstes und auf ARM(Advanced RISC Machine)-Prozessoren portierter Abkömmling von Mac OS X. Nicht nur auf dem iPhone findet iOS Verwendung. Die Apple-Produkte iPad, iPod und die zweite Generation der Apple TV laufen ebenfalls mit iOS, womit jedoch die Anzahl von Endgeräten schon ausgeschöpft ist . Es ist zwar möglich, in Form von Klonen der Original iOS, das Betriebssystem auf anderen Smartphones zu installieren jedoch ist dies von Apple nicht beabsichtigt. Wenn man bei iOS zum Beispiel einen Musiktitel auf das Abbildung 1- iOS Homescreen iPhone/den iPod portieren möchte, ist man an iTunes gebunden, denn alles was mit Multimedia und Synchronisation von Kalendereinträgen, Kontakten und E-Mail zusammenhängt, läuft über iTunes. Hierbei funktioniert alles nicht so einfach, wie mit anderen Smartphones. Man kann die Geräte dabei einfach an einen PC anschließen und sich als externes Laufwerk anzeigen lassen. Daraufhin kann man die Geräte einfach per “Drag and Drop“ mit Musik oder Ähnlichem füllen. Wenn man sein iOS Betriebssystem mit Zusatzprogrammen(Spiele o.ä.) versehen möchte, kommt man um den App Store von Apple nicht herum. Durch diesen wurde der Markt für Zusatzprogramme erst richtig geschaffen. Dementsprechend gut ist die Handhabung, die Sortierung und das Angebot im App Store, welcher inzwischen mehr als 285.000 Applikationen fasst[Stand Oktober 2010]. Kritik muss Apple einstecken, wenn es um Zulassung und Verweigerung von Software zur Aufnahme in den App Store geht, da die Kriterien, nach denen dies gemacht wird, nicht offengelegt sind und deswegen auch als willkürlich beschrieben werden können. Zum Beispiel werden Applikationen, wie zum Beispiel ein Mailclient eines 3

Drittanbieters, die aber auch durch das eigene Betriebssystem zur Verfügung gestellt werden, nicht für den App Store freigeschaltet. Seit iOS 4 ist das Betriebssystem endlich multitaskingfähig, was andere Betriebssysteme schon lange waren. Apple argumentierte bisher, dass unkontrolliertes Multitasking zu viel Akkuleistung verbrauchen würde, was nicht im Sinne des Nutzers ist. Außerdem ist Apple der Meinung, dass Multitasking nur mit genügend Arbeitsspeicher benutzbar sei. Auf Grund dessen sei Multitasking nicht auf allen bzw. älteren Endgeräten von Apple möglich. Ein weiteres Problem ist, dass die Anwendungen an Multitasking angepasst werden müssen, da die alten Anwendungen nicht für Multitasking programmiert worden sind. Vermutlich werden viele ältere Anwendungen nicht angepasst, wodurch die Nutzung von Multitasking nicht ausgereizt wird. Der Sensorbildschirm der Endgeräte dient zur Bedienung des iOS, da es von Anfang an auf kapazitive Touchscreens ausgelegt worden ist. Dadurch werden Multi-TouchGesten unterstützt, welche sich an reelle Fingerbewegungen lehnen und deswegen das Bedienen intuitiv vereinfachen. iOS Applikationen können nur auf dem Betriebssystem Mac OS X entwickelt werden, da die integrierte Entwicklungsumgebung Xcode von Apple nur unter Mac OS X läuft. Xcode mit der iPhone-SDK bekommt man kostenlos nachdem man sich bei Apple als Entwickler registriert hat, wobei sich die Kosten auf 99$ im Jahr belaufen. Zur Programmierung wird Obejctive-C genutzt, was eine objektorientierte Spracherweiterung von Standard C ist. Zuletzt sei gesagt, dass iOS kein quelloffenes System ist, wodurch eine schnelle Reaktion auf Trends und Innovationen nicht gegeben ist.

2.1.2 Symbian^3 Symbian^3 ist ein Betriebssystem für Smartphones und PDAs, welches von der Non-Profit-Organisation Symbian Foundation als Open-Source System verwaltet wird. Die Symbian Foundation wurde 2008 unter anderem von Nokia, Sony Ericsson, NTT DoCoMo, Motorola, Texas Instruments, Vodafone, LG Electronics, Samsung Electronic, STMicorelectronics sowie AT&T gegründet. Im Sommer 2010 wurde der Source Code von Symbian^3 vollständig als Open Source veröffentlicht. Bereits 2001 kam eine frühere Symbian-Version auf Smartphones von Nokia und Sony Ericsson zum Einsatz. Inzwischen jedoch handelt es sich um ein aussterbendes Betriebssystem, da zum Beispiel sowohl Samsung als auch Sony Ericsson verkündet haben, bei zukünftigen Smartphones auf Symbian zu verzichten. Symbian^3 hat vieles mit Desktop-Betriebssystemen 4

Abbildung 2 – Symbian Homescreen

gemeinsam. Es verfügt unter anderem über präemptives Multitasking, Multithreading und Speicherschutz. Die Geräteauswahl bei Symbian beschränkt sich zwar auf Handys bzw. Smartphones, jedoch ist unter diesen die Auswahl sehr groß. Fast alle dieser Geräte verfügen über ein gutes Multimediaangebot(Kamera, Musik- und Videoplayer), jedoch ist fraglich, wieso dort so viele Ressourcen „verschwendet“ werden und nicht eher in Oberfläche und App Store investiert wird. Der Symbian-Homescreen hat sich zum Beispiel in den letzten Jahren ebenso wenig verändert wie die Oberfläche und die Art der Bedienung. Symbian^3 hat keinen eigenen zentralen App Store, welcher nennenswert viele Applikationen zur Verfügung stellt. Das keine feste Verdrahtung zu einem bestimmten Store vorhanden ist, erkennt man auch daran, dass man beim ersten Starten der Store-App der verschiedenen Anbieter auf dem Smartphone einen Storeclient herunterladen muss. In der Vergangenheit hat Symbian Maßstäbe gesetzt, was die Bedienung angeht. Jedoch hießen zu dieser Zeit Smartphones noch Handys und die Steuerung war mittels Joystick oder Vierwege-Pad und Okay-Taste üblich. Die meisten Smartphones mit Symbian haben auf Grund dessen meist gar keinen Touchscreen oder, falls doch, eine zusätzliche Tastatur zur Bedienung. Nokia hat ebenfalls angekündigt, dass Symbian sehr bald in der Multifunktionsklasse von MeeGo abgelöst werden wird. Dabei handelt es sich um ein offenes LinuxSystem. Andere Klassen, wie z.B. die Businessklasse, werden weiter mit Symbian laufen. Resultierend aus alten gutlaufenden Zeiten ist Symbian sehr weit verbreitet, dadurch ist es auch im Visier von Virenprogrammieren. Durch Einführen eines Zertifikatssystems ab einer Vorversion von Symbian^3 ist die Sicherheit erheblich erhöht worden. Programme ohne ein gültiges Zertifikat von SymbianSigned können nicht mehr installiert werden. Deswegen kann eine gecrackte oder mit Viren verseuchte Software nicht mehr ohne Umwege auf dem Endgerät installiert werden. Um für Symbian programmieren zu können braucht man allem voran Programmierkenntnisse in C++. Alles Weitere, was man zum Entwickeln für Symbian braucht, wird von Qt Development Frameworks, einer Sparte von Nokia, geliefert. Darin eingeschlossen ist unter anderem eine C++-Bibliothek und die Entwicklungsumgebung Qt Creator für alle möglichen Betriebssysteme. Auf der Entwicklerseite von Nokia werden diese kostenlos zum Download in einem Komplettpacket angeboten. Der Vorteil hierbei liegt darin, dass man so ziemlich alle Klassen, die man bei der Desktopentwicklung verwendet, benutzen kann. Unterstützung für relationale Datenbanken in der Implementierung von SQLite wird ebenso von Symbian^3 geboten. Abschließend kann man sagen, dass die Entwicklung eher von Symbian weg geht, und in die Richtung von MeeGo läuft, da Symbian in vielen Punkten einfach zu weit abgeschlagen gegenüber anderen Betriebssystemen ist. Der Markt hat sich deutlich

5

gewandelt. Die aktuelle Governance-Struktur von Symbian ist diesem nicht mehr angemessen. 2.1.3 Google Android 2.X Android ist ein Betriebssystem bzw. eine Softwareplattform, welche von der, von Google Inc. geleiteten, Open Handset Alliance entwickelt wird. Android wird auf mobilen Geräten, wie Smartphones, Mobiltelefonen, Netbooks und Tablets genutzt. Die Open Handset Alliance wurde von der Firma Google am 5. November 2007 mit 47 Partnern gegründet. Unter den Gründern waren Firmen aus den unterschiedlichsten Branchen vertreten. Dazu gehörten Software-Firmen, Mobiltelefonhersteller, Netzbetreiber, Chiphersteller und Marketingunternehmen. Damit war jede Branche, die wichtig für das Entwickeln von guten mobilen Geräten sind in dem Konsortium vorhanden. Inzwischen beläuft sich die Anzahl Abbildung 3 - Android der Mitglieder auf 78 unterschiedliche Firmen. Homescreen Schon im Sommer 2005 kaufte Google die bis dahin relativ unbekannte, im Herbst 2003 gegründete, Firma Android. Man wusste nur, dass Android Software für Mobiltelefone entwickelt, insbesondere mit dem Hauptaugenmerk auf standortbezogene Dienste. Das System Android ist eine freie Software und komplett quelloffen. Dadurch haben die einzelnen Unternehmen die Möglichkeit das Betriebssystem auf ihre eigenen Bedürfnisse bzw. Vorstellungen anzupassen. Das ist einer der Gründe, weswegen es eine so große Auswahl an mobilen Endgeräten von momentan 14 vertreibenden Unternehmen gibt, wobei HTC mit 14 Smartphones die größte Auswahl bietet. Diese Auswahl bringt aber nicht nur Vorteile mit sich. Zum einen wird das Betriebssystem durch die vielen eigenen Varianten zersplittert und zum anderen produzieren die Firmen so viele Produkte, dass sie aus Eigeninteresse keine Updates des Betriebssystems zur Verfügung stellen. Das entspricht jedoch nicht dem Kerngedanken des offenen Systems Android. Dieses Problem soll jedoch mit späteren Versionen entfernt werden, indem die Google-Software und HerstellerOberfläche entkoppelt werden. Dadurch kann der Kunde die Neuerungen von Android nutzen ohne darauf warten zu müssen, dass die verschiedenen Unternehmen ihre Version der neuen Android-Version entwickelt haben. Das ist aber das Einzige, was man bei Quelloffenheit kritisieren kann. Es gibt dadurch zum Beispiel eine umfangreiche Hilfe im Netz mit APIs, Tutorials und CodeBeispielen. Der größte Vorteil ist jedoch die schnelle Entwicklung von Android. Nicht nur das Betriebssystem kann sich so schnell an Trends und Innovationen anpassen, auch die Vielfalt an Applikationen steigt stetig. Jeden Monat kommen ca. 18.000 Applikationen zu den bereits 130.000[Stand: 22.09.2010] vorhandenen Applikationen hinzu, damit ist der Android Market die am schnellsten wachsende Market-Software, 6

obwohl das Projekt noch jung ist. Diese Tatsachen machen den Market natürlich für den Endnutzer sehr interessant, vor allem weil viele Applikationen kostenlos zu erhalten sind. Zu Anfang der Entwicklung von Android war ein Google-Konto Pflicht, jedoch hat sich dies im Lauf der Zeit gelockert und man braucht nicht unbedingt ein Google-Konto zu eröffnen, was allerdings empfehlenswert ist, da man sonst nicht alle Features des Betriebssystem nutzen kann. Ohne das Google-Konto kann zum Beispiel der Android Market nicht benutzt werden. Durch das Google-Konto hat man zusätzlich die Möglichkeit seine Kontakte, Kalendereinträge etc. auf dem Computer zu synchronisieren und zu sichern. Die Android-Architektur beruht auf den Linux-Kernel der Version 2.6. Er ist für die Kernsystemservices Speicherverwaltung, Prozessverwaltung und Netzwerkkommunikation zuständig. Zusätzlich bildet er die Hardwareabstraktionsschicht für die Software und stellt die Gerätetreiber für das System. Ebenso wichtig sind die Android-Java-Klassenbibliotheken und die Dalvik Virtual Machine, welche der Java Virtual Machine sehr ähnelt. Die DVM erzeugt aus Java-Klassen den sogenannten Dalvik-Bytecode. Anwendungen für Android werden ausschließlich mit Java geschrieben, nur in geschwindigkeitskritischen Bereichen greifen diese Anwendungen auf in C oder C++ geschriebene, native Bibliotheken zu. Mit der Version 2.2 von Android wurde erstmals ein Just-In-Time-Compiler implementiert, wodurch die Bedienung und das Ausführen von Anwendungen viel schneller wurde, da die meisten Anwendungen in Java programmiert wurden. Bei der Entwicklung von Android wurde von Anfang an auf die Zukunftstechnologie, die Multi-Touchscreenbedienung, gesetzt. Ebenso wichtig war bzw. ist Multitasking gewichtet. Android-Entwickler können den vollen Sprachumfang von Java 5 mit Generics, Collections sowie umfangreiche Libraries zur Verwendung von GPS-Daten, Audio, Video etc. nutzen. Zusätzlich gibt es spezielle APIs zur Interaktion mit GoogleDiensten. Die Oberfläche von Android wird mit XML deklariert. Abschließend sei noch gesagt, dass Android nach dem Marktforscherunternehmen Gartner spätestens im Jahr 2014 Marktführer, vor Symbian und iOS, wird.

2.2 Der Vergleich Nachdem ich die drei Betriebssysteme vorgestellt habe, möchte ich nun ihre Stärken und Schwächen vergleichen. Bevor man die Betriebssysteme vergleicht, sollte man feststellen, dass es momentan nicht das perfekte Betriebssystem gibt. Das liegt daran, dass jeder andere Anforderungen an ein solches Betriebssystem bzw. an das daran gekoppelte Smartphone hat. Dabei unterscheidet man meist zwischen dem geschäftlichen und dem privaten Bereich.

7

Bei meiner Arbeit möchte ich jedoch etwas anders an den Vergleich gehen. Mein Hauptaugenmerk liegt auf den Punkten Programmierung von Applikationen und der zukünftig Entwicklung der Betriebssysteme.

Zunächst möchte ich darauf eingehen, wie momentan die Entwicklung der Betriebssysteme vonstattengeht. Auf der einen Seite hat man Symbian und Android, welche von Kooperationen von verschiedenen Firmen entwickelt werden und zusätzlich ihren Code größtenteils quelloffen zur Verfügung stellt. Bei Android ist es die Open Handset Alliance, welche momentan wächst, da immer mehr Firmen bei ihren Endprodukten auf Android setzen. Bei Symbian Abbildung 4 – Weltmarktentwicklung der SmartphoneBetriebssysteme handelt es sich um die Symbian Foundation, welche jedoch kleiner wird. Große Firmen wie Samsung und Sony Ericsson sind dieses Jahr ausgestiegen und wollen in Zukunft auf Android setzen. Auf der anderen Seite hat man Apples iOS, welches nur von Apple weiterentwickelt wird. Zusätzlich ist der Code von iOS nicht quelloffen, wodurch die Anzahl der Entwickler, welche an iOS arbeiten deutlich überschaubarer ist. Da der SmartphoneMarkt ein sich schnell ändernder Markt ist, liegen besonders dort die Vorteile bei Android und Symbian, da man schnell auf Trends und Innovationen reagieren kann. Symbian liegt dabei jedoch sehr weit hinter Android, da Symbian erst mit Symbian^3 quelloffen geworden ist. Zusätzlich ist Symbian nicht auf Touchscreenbedienung, sondern auf die alte Generation von Handys ausgelegt. Dadurch liegt Symbian^3 im direkten Vergleich nicht nur hinter Android, sondern auch hinter iOS. Es sei auch gesagt, dass Apple zwar nur die besten Leute einstellt, jedoch mit Google in Verbindung mit der Open Handset Alliance nun einen Konkurrenten bekommen hat, den es so vorher nicht gegeben hat. Aus diesen Gründen liegt in diesem Bereich Android klar an erster Position. Ein weiterer Vorteil von Android ist ganz klar die große Endgerätauswahl. Egal in welchen Bereichen sie ein Smartphone suchen, sie werden immer eines finden, welches ihren Vorstellungen entspricht. Symbian hat zwar auch eine große Anzahl an Endgeräten, jedoch wird es in Zukunft nicht mehr so viele neue Symbian Smartphones geben. Es steigen einfach zu viele Endgeräthersteller aus und wechseln zu Android. Für iOS hat der Verbraucher nur die Wahl zwischen den verschiedenen Modellen des iPhone bzw. iPad etc. Somit hat iOS in dieser Hinsicht absolut keine Chance um gegen Android zu bestehen, da ein einziges Smartphone 8

für den Massenmarkt keine Chance gegen Dutzende auf viele Kundengruppen spezialisierte Geräte hat.

Abbildung 5 - Endgeräte

Ein gut organisiertes und umfangreiches Angebot an Zusatzanwendungen in einem Store, für das gewählte Betriebssystem ist natürlich von Vorteil. So kann man sein Smartphone noch besser an seine Vorstellungen anpassen und erweitern. Für einen Entwickler von Applikationen ist dies wichtig, da man über den Store seine Applikationen am besten verbreiten bzw. verkaufen kann. Hierbei zeigt Symbian, wie man es nicht machen sollte. Es gibt keinen eigenen Store, die Anwendungen müssen entweder bei den Herstellern der Smartphones oder im Internet gesucht werden. Die Stores von Android und iOS hingegen sind beide sehr umfangreich und gut organisiert. Man kann auch hier einen kleinen Vorteil bei Android aufgrund der Quelloffenheit sehen. Deswegen gibt es viel mehr Entwickler, die Anwendungen für Android schreiben und in den Stores kostenlos oder kostenpflichtig bereitstellen. Dadurch wird im Laufe der Zeit der Android Market von Google den AppStore von Apple überholen. Apple muss jedoch einen Kritikpunkt, wie oben im Überblick schon erwähnt, hinnehmen. Damit eine Anwendung für den Store freigeschaltet wird, muss sie durch Apple zertifiziert werden. Die Kriterien dafür sind jedoch nicht öffentlich. Anwendungen, welche Alternativen zu den von Apple entwickelten Anwendungen sind, werden wohl aus reinem Geschäftsinteresse meist nicht freigegeben. Während Apple die Zertifikate zur Kontrolle der Auslieferung über den App Store verwendet, dienen sie bei Google nur dazu, um sicherzustellen, dass alle Updates der Anwendung vom selber Entwickler stammen. Man braucht jedoch einen GoogleAccount, damit man den Android Market nutzen kann, was bei einigen Kunden, auf Grund der Datensammlung von Google, bedenken auslöst. Trotzdem wird auf kurz oder lang Android in diesem Bereich das beste Angebot anbieten. Im Zeitraum von März 2010 bis Oktober 2010 ist die Anzahl von Anwendungen im AppStore um 68% und im Android Market um 233% gestiegen, was die Entwicklung deutlich unterlegt.

9

Abbildung 6 - Anzahl Applikationen in App Stores

Nun möchte ich kurz auf die Möglichkeiten und Rahmenbedingungen für die Programmierung von Anwendungen für die einzelnen Betriebssysteme eingehen. Einzig für iOS braucht man bestimmte Hardware - einen Apple-Rechner mit Mac OS X -, damit man die Entwicklungsumgebung zum Programmieren der Anwendungen installieren kann. Bei Symbian und Android spielt dies keine Rolle. Die Software, die man zur Entwicklung nötig ist, bekommt man für Android und Symbian kostenlos. Um für iOS programmieren zu können muss man sich bei Apple als Entwickler registrieren und einen Jahresbeitrag von 99$ zahlen. In diesen beiden Punkten liegt der Vorteil deutlich bei Symbian und Android, da man mit wenig Aufwand direkt in die Programmierung einsteigen kann. Bei der Entwicklung von Anwendungen für iOS wird Objective-C verwendet, zusätzlich kann C++ und JavaScript, als interpretierte Sprache, benutzt werden. Für Symbian wird ebenfalls in C++ entwickelt, jedoch mit der C++-Bibliothek Qt. Durch die Bibliothek von Qt werden viele Möglichkeiten von Desktopsystemen auch für mobile Geräte ermöglicht. Java wird für Android genutzt, dabei kann der Entwickler auf den kompletten Sprachumfang von Java 5 zurückgreifen. Hierbei hat jede Sprache für sich seine Vor- und Nachteile, somit kommt es auf den Entwickler selbst an für welche Programmiersprache er sich entscheidet. Einen Punkt sollte man hierbei jedoch noch ausarbeiten: Multitasking ist nicht mit allen drei Betriebssystemen gleich gut ausnutzbar. Multitasking war bis Version 4.0 den von Apple entwickelten Anwendungen vorbehalten, da nur die Entwickler von Apple Multitasking nutzen durften. Aber auch mit Version 4.0 ist Multitasking bei iOS noch nicht ausgereift. Dies liegt größtenteils daran, dass die alten Anwendungen für Multitasking umgeschrieben werden müssen und dies nicht bei allen alten Anwendungen von den Entwicklern gemacht werden wird. Das nun eingesetzte Multitasking ist jedoch nicht mit dem von Android vergleichbar. Mehr als das Beenden von wichtigen VoIP, Audioplayback und die Lokalisierung erlaubt Apple als Hintergrundaktivitäten nicht.

10

Mit der nun folgenden Tabelle möchte ich einen kurzen Überblick über die zentralsten Punkte geben, um dann ein Resümee zu ziehen.

Android

iOS

Symbian

Programmiersprache

Java

Objective C

C++

Quelloffenheit

Offen

Closed

Teilweise Offen

Zukunftsaussichten

Sehr gut

Sehr gut

Schlecht

Entwickelt von:

Open Handset Alliance

Apple

Symbian Foundation

Ausgelegt auf:

Multi-Touch-Screen

Multi-Touch-Screen

Tastatur

Endgerätauswahl

Groß(+wachsend)

Sehr gering

Groß(-sinkend)

App Store

Gut sortiert und stetig wachsend

Gut sortiert und stetig wachsend, jedoch nicht so schnell wie Android

Kein allgemeiner Store für Symbian, jede Firma hat seinen eigenen Store

Marktentwicklung

Sehr positiv

Positiv

Negativ

Kosten für Entwicklung

-

99$/Jahr

-

Abbildung 7 - Überblick der Betriebssysteme

Letztendlich denke ich, dass, wenn man alles zusammennimmt, sich Android in den nächsten Jahren als Marktführer durchsetzen wird. Google und die Open Handset Alliance sind sehr innovativ und haben auch durch die dominante Stellung von Google im Internet Vorteile gegenüber Apple. Hinzu kommt zum einen die große Geräteauswahl, sodass jeder Smartphonebenutzer ein Smartphone, was seinen Ansprüchen und Wünschen entspricht, findet und zum anderen die Quelloffenheit, wodurch man sich schnell an den sich verändernden Markt anpassen kann. iOS wird trotz geringerem Geräteangebot und des nicht offenem Codes weiterhin eine große Rolle auf dem Markt für Betriebssysteme für Smartphones einnehmen. Symbian wird sich leider auf Dauer gar nicht mehr durchsetzen, weswegen bei Nokia sehr bald MeeGo im Fokus sein wird. Es wird einfach nicht möglich sein das alte System an die neue Generation von Endgeräten anzupassen und so ist der „Neustart“ ein Schritt in die richtige Richtung.

11

2.2 Warum Android? Nachdem ich nun Android, iOS und Symbian vorgestellt und verglichen habe, möchte ich nun erklären, warum ich mich dafür entschied, Anwendungen für Android zu programmieren. Als erstes möchte ich schreiben, warum ich Android den Vorzug vor iOS gegeben habe. Zunächst ist der Einstieg für einen Neuanfänger der ApplikationenProgrammierung nicht einfach, da iOS keine Open Source ist und man sich erst mal bei Apple als Entwickler registrieren muss. Dazu muss man einen Jahresbeitrag an Apple zahlen um für iOS zu entwickeln. Bevor ich mit der Programmierung hätte anfangen können, hätte ich mir erstmal die für mich neue Programmiersprache Objective-C aneignen müssen. Die Verkaufszahlen der Endgeräte steigen im Gegensatz zu Android-Handies nicht so rapide an. Nun zu Android: Man kann sagen, dass der Einstieg in die Programmierung sehr einfach ist, da man nur das Android SDK mit Plug-In für Eclipse und Konsolenprogramm adb(Emulator) zur Kommunikation mit den Geräten installieren muss. Diese bekommt man kostenlos zum Download bei http://developer.android.com/index.html. Durch den Emulator kann man seine selbstgeschriebenen Anwendungen sehr leicht testen und braucht kein eigenes Endgerät. Die Quelloffenheit von Android kommt dem Entwickler sehr entgegen, da man dadurch bei Problemen sehr tief in Android hinein debuggen kann. Zusätzlich gibt es eine sehr umfangreiche Hilfe im Netz, dort findet man auch unzählige Code-Beispiele und die APIs sind sauber dokumentiert. Die Architektur von Android ist viel zukunftsorientierter, da diese ermöglicht, Systemfunktionen sehr leicht zu erweitern oder Dienste für andere Anwendungen anzubieten. Darauf möchte ich jedoch erst im nächsten Kapitel genauer eingehen. Android ist das Betriebssystem der Zukunft, so wurde es von Anfang an entwickelt und so wird es weiterentwickelt. Die Anzahl von Applikationen im Android Markt steigt stetig an. Innerhalb eines halben Jahres ist die Anzahl um 233% gestiegen und es sieht momentan nicht so aus, als ob sich der Trend ändern wird.

12

3 Der Aufbau von Android Ich möchte in diesem Kapitel den Aufbau und die Architektur des Betriebssystems und von Anwendungen in Android erklären. Dabei möchte ich zunächst kurz auf das Schichtenmodell der Architektur eingehen, danach auf die Oberflächengestaltung und zuletzt wichtige Komponenten einer Anwendung vorstellen.

3.1 Architekturen Android basiert auf einem Vier-Schichtenmodell. Die Basis in der ersten Schicht bildet ein Linux-Kernel mit den Hardwaretreibern, welcher in Bezug auf Energieverbrauch und Speichermanagment optimiert worden ist. In der zweiten Schicht kommt die Android Runtime mit der Dalvik Virtual Machine und den Core Libraries dazu. In der gleichen Schicht beAbbildung 8 - Übersicht Android-Architektur finden sich die Basisbibliotheken, auf die der Anwendungsrahmen von Android zugreifen kann. Die dritte Schicht bildet das Application Framework(Anwendungsrahmen). Sie stellt einige Systemklassen zur Verfügung, welche in Java geschrieben sind und den Zugriff auf Hardwarekomponenten aus der Anwendung heraus erlauben. Die oberste Schicht Applications ist die Ansicht für den Android-Anwender. In den folgenden Abschnitten möchte ich genauer auf einzelne Teile der Schichten eingehen, wobei zum Linux Kernel nichts weiter zu anzumerken ist, als dass, was bereits erwähnt worden ist. 3.1.1 Die Dalvik Virtual Machine Die Dalvik Virtual Machine(DVM) ist eine virtuelle Maschine für Android, welche speziell für die Erfordernisse von Android entwickelt worden ist. Sie basiert auf der Java Virtual Machine(JVM), führt jedoch Dateien im Dalvik Executable-Form (.dex) aus. Diese sind so beschaffen, dass sie möglichst wenig Speicher beanspruchen, da auf Smartphones nicht viel Speicher vorhanden ist. Weiter kommt sie gut mit schwachen Prozessoren zurecht und ist für Betriebssysteme ohne SWAP-Partition geeignet, was bei einem Smartphone bzw. Android so vorhanden ist. Da die DVM auf 13

Akku-betriebenen Geräten zum Einsatz kommt, wurde bei ihr ebenfalls der Strombedarf berücksichtig. Weil Android in Java geschrieben wird, muss der normale, vom Java-Compiler kompilierte, Byte-Code(.class) in das .dex-Format umgewandelt werden, damit die DVM ihn ausführen kann. Das übernimmt der im Android SDK enthaltene Dalvik Cross-Assembler, kurz dx-Tool. Dabei werden mehrere Class-Dateien zu einer DexDatei zusammengefasst, wodurch eine Optimierung bezüglich des Speicherbedarfs vorgenommen wird. Desweitern ist die DVM im Gegensatz zur klassischen JVM eine Registermaschine ist, die die in der Regel verfügbaren Register der neuen Prozessoren(z.B.: ARMCPUs wie sie Smartphones haben) profitieren. Register sind schnell zugreifbare Speicherzellen in den Prozessoren. Dabei handelt es sich also um Mikroprozessoren mit Zwischenspeicher direkt im Prozessor. Seit Android 2.2 besitzt die DVM zudem einen JIT-Compiler ("Just In Time"). Ein Just-in-time-Compiler übersetzt zur Laufzeit und erst bei Bedarf den Bytecode direkt in Maschinen-Code. Das bietet gegenüber dem Interpreter einen Geschwindigkeitsvorteil.

Abbildung 9 : Umwandlung von .java in .dex durch das dx-Tool

3.1.2 Die Basisbibliotheken Von den Basisbibliotheken werden die Kernfunktionalitäten von Android via C/C++Bibliotheken bereitgestellt. Darin enthalten sind für Entwickler wichtige, fertige Methoden und Eigenschaften zur Entwicklung. Darunter fallen zum Beispiel Funktionen für Datenbanken (SQLite), den Browser (Webkit), Multimedia (Media Framework), Verschlüsselung, Grafik und den Touchscreen. An dieser Stelle fragt man sich natürlich, warum es sich bei den Basisbibliotheken um C/C++-Bibliotheken und nicht im Java-Bibliotheken handelt. Der Vorteil der C/C++-Bibliotheken ist, dass sie in geschwindigkeitskritischen Bereichen von Anwendungen schneller sind. Dabei handelt es sich zum Beispiel um CPU-intensive Signal- und Datenverarbeitung.

14

Eigentlich spricht nichts dagegen C/C++ für die komplette Programmierung von Android einzusetzen, jedoch möchte die Open Handset Alliance dies nicht, da dadurch eine deutliche höhere Komplexität der Programmierung entstehen würde. 3.1.3 Anwendungsrahmen (Application Framework) Über den Bibliotheken und der Android-Runtime liegt das Application Framework. Es ist komplett in Java geschrieben und beinhaltet folgende Komponenten:   

     

Activity Manager: verwaltet die Anwendungen(Activities) und deren Laufzeit Package Manager: protokolliert die heruntergeladenen und installierten Applikationen Windows Manager: lässt sich über eine Java-Api ansteuern und greift auf den Surface Manager(steuert den Zugriff und fügt 2D und 3D Grafik Ebenen von verschiedenen Anwendungen zu einem Bild zusammen) zu. Content Provider: zuständig für den Austausch und den Zugriff auf Daten anderer Applikationen/Anwendungen, zum Beispiel Kontakte Ressource Manager: Verwaltung von Ressourcen wie Grafiken, Strings, Layouts Location Manager: stellt geografische Informationen über den aktuellen Standort bereit Notification Manager: ermöglicht es Applikationen/Anwendungen Informationen in der Statusleiste anzuzeigen View System: Eingabefelder, Textboxen, Buttons usw. Telephony Manager: verwaltet die Dienste für Telefonie

Später werde ich dieses Kapitel nochmal aufgreifen und etwas genauer auf verschiedene Punkte eingehen. 3.1.4 Anwendungsschicht (Applications) Unter diese Schicht fallen die einzelnen Apps, die Kontakte, das Telefon, der Kalender und so weiter. Hier findet die Interaktion zwischen Mensch und Maschine statt, sowie die Kommunikation zwischen den einzelnen Anwendungen.

3.2 Weitere Komponenten einer Anwendung Neben den im Folgenden beschriebenen Komponenten gehören auch Activities zu den Komponenten einer Anwendung. Bei Activities handelt es sich um die Layout organisierende Komponente, welche ebenfalls den Zugriff auf die in den Layouts enthaltenden Views steuert. Im Kapitel Oberflächengestaltung werde ich auch näher auf Activities eingehen. 15

3.2.1 Services Ein Service erledigt Hintergrundprozesse. Wenn man zum Beispiel Musik abspielen möchte, kann man die Bedienung des Players einer Activity überlassen und das Abspielen der Musik einen Service erledigen lassen. Einen Service kann man im Prozess der aufrufenden Komponente starten oder in einem eigenen Prozess. Bei dem Service, welcher im gleichen Prozess wie die Anwendung läuft, spricht man von einem Local Service. Den im eigenen Prozess laufenden Service nennt man Remote Service. 3.2.2 Die Klasse Context Die Klassen Activity(siehe 3.4.4) und Service(siehe 3.2.1) sind von der abstrakten Klasse android.content.Context abgeleitet. Die Klasse Context repräsentiert den Anwendungskontext und stellt somit die Verbindung zwischen Anwendungen und dem System von Android her. Dadurch kann man zum Beispiel auf die ManagerKlassen des Anwendungsrahmens zugreifen. Somit erhält man Zugang auf die Hardware des Endgerätes. Zusätzlich kann der Anwendungskontext zum Beispiel noch auf folgende Systemkomponenten zugreifen:       

den Classloader das Dateisystem die Berechtigungen der Anwendungen die verfügbaren Datenbanken die anwendungseigenen Bibliotheken den Bildschirmhintergrund den Zugriff auf andere Komponenten der Anwendung

Letztlich sei noch gesagt, dass, da die beiden Komponenten/Klassen Activity und Service von Context abgeleitet sind, der Anwendungs-kontext mittels this in diesen Klassen überall zur Verfügung(siehe 4.3) steht.

3.2.3 Content Provider Der Content Provider verwaltet Daten und abstrahiert die darunterliegende Persistenzschicht. Er wird über eine definierte Schnittstelle lose an Anwendungen gebunden. Er stellt über Berechtigungen einer Anwendungen oder mehreren Anwendungen untereinander Daten zur Verfügung.

16

3.2.4 Broadcast Receiver Der Broadcast Receiver ist für das Empfangen von Systemnachrichten zuständig. Dabei handelt es sich zum Beispiel um Nachrichten über Störungen der Netzwerkverbindung oder einen schwachen Akku.

3.3 Intents Das größte Einsatzgebiet von Intents ist es, dafür zu sorgen, dass eine Activity die Möglichkeit hat eine andere Activity starten kann. Intents sind ein Teil des Mechanismus zum Austausch von Nachrichten und Daten zwischen Komponenten einer Anwendung, verschiedener Anwendungen untereinander oder mit der AndroidPlattform. Intents verbinden die Komponenten Activities, Services, Content Provider und Broadcast Receiver zu einem Gesamtsystem und schaffen eine Verbindung zur Android-Plattform. Surft man mit seinem Smartphone im Internet und stößt im Browser zum Beispiel auf ein YouTube Video, so öffnet sich nicht ein neues Browserfenster, sondern automatisch das YouTube Programm, welches bereits auf dem Android Smartphone installiert ist. Diese Interaktion wird durch Intents ermöglicht. Da Android komponentenbasiert ist, liegt es nahe diese Komponenten mit einem Mechanismus verbinden zu können. Intents werden unterteilt in explizite und implizite Intents. 3.3.1 Explizite Intents Ist die Empfängerkomponente bereits bei der Programmierung des Aufrufs bekannt und eindeutig identifiziert spricht man von einem expliziten Intent. Hierbei wird beim Aufrufen der Activity eine bekannte Klasse übergeben. 3.3.2 Implizite Intents Implizite Intents adressieren keinen bestimmten Empfänger und überlassen es den Komponenten der installierten Anwendungen, auf den Intent zu reagieren. Diese Intents werden praktisch ins Leere abgeschickt. Man hofft, dass es eine oder mehrere Komponenten gibt, die mit diesem Intent was anfangen können. Oft werden implizite Intents verwendet, wenn man Komponenten anderer Anwendungen nutzen möchte. Damit dies funktioniert, muss man eine Activity vorher erst mit der Möglichkeit versehen, implizite Intents zu empfangen. Diese Aufgabe übernimmt der Intent-Filter.

17

3.3.3 Intent-Filter Intent-Filter werden im Android-Manifest deklariert. Ein Intent-Filter besteht aus bis zu drei Elementen, mit deren Hilfe er genau festlegen kann, auf welche Intents er reagiert. Die drei Elemente sind: action(Was soll passieren?), category(Wie wird die Activity aufgerufen?), data(Mit welchen Daten?). Der Intent-Filter leitet einen Intent an eine spezielle Activity weiter. Wenn eine Activity eine bestimmte Fähigkeit hat, zum Beispiel das Anzeigen von Webseiten, dann veröffentlicht sie einen Intent-Filter, der angibt, dass sie die Action View für den Datentyp URL ausführen kann.

3.4 Oberflächengestaltung In diesem Unterkapitel thematisiere ich, welche Komponenten zur Darstellung von Anwendungen gehören. Zusätzlich möchte ich dabei noch ein wenig Bezug auf Objective C nehmen und dies mit den Möglichkeiten von Android vergleichen. 3.4.1 Das Android-Manifest Das Android-Manifest ist das Kernstück der Oberflächengestaltung. Es organisiert und teilt der Android-Laufzeitumgebung mit, aus welchen Komponenten sich eine Anwendung zusammensetzt. Beim Android-Manifest handelt es sich um eine XML-Datei im Wurzelverzeichnis der Anwendung. Sie wird beim Anlegen eines neuen Projekts in Eclipse automatisch erzeugt. Wenn man ein neues Projekt in Eclipse anlegt, wird das Android-Manifest automatisch erzeugt. Dabei handelt es sich um eine XML-Datei im Wurzelverzeichnis der Anwendung und sieht standardmässig wie in Abbildung 10 aus. (2) Abbildung 10 – Das Android-Manifest

18

Folgende grundsätzliche Elemente werden im Android-Manifest verarbeitet :      

Festlegung des Package-Namens der Anwendung(1) Angabe der Versionsnummer der Anwendung(2) Auflistung aller Komponenten (Activities, Services, Content Provider, Broadcast Receiver) der Anwendung(3) Die minimale Android-API-Level wird festgelegt, unter dem die Anwendung lauffähig ist Berechtigungen auf Anwendungs- und Prozessebene werden vergeben Die Bibliotheken, welche die Anwendung verwendet, werden angegeben

3.4.2 View Als View (=Darstellung) werden die klassischen Oberflächenelemente wie Eingabefelder, Schaltflächen und Auswahllisten bezeichnet. Jedes Element, was an der Oberfläche sichtbar ist, wird von der Klasse android.view.View abgeleitet. Für jede View gibt es eine XML- und eine Java-Repräsentation. Beide Repräsentationen haben im Wesentlichen die gleichen Attribute, nur dass man in der Java-Klasse die Attribute sieht, die speziell für diese View gelten. Elementare Views sind zum Beispiel :        

, ,

- Einfache Textausgabe - Schaltfläche - Formularelement zur Texteingabe - Ankreuzfeld - Auswahlliste - Auswahl von Datum und Uhrzeit

3.4.3 Layout Die erwähnten Views werden mit Hilfe von Layouts (=Anordnung) auf dem Bildschirm geordnet. Es gibt verschiedene Layouts, die jeweils unterschiedliche Anordnungsvorschriften darstellen. Die Layouts bieten verschiedene Anordnungsvorschriften, unter anderem eine lineare Anordnung der View-Elemente (LinearLayout), eine tabellarische Anordnung (TableLayout) oder eine Anordnung relativ zueinander (RelativeLayout). Layouts werden als XML-Dateien angelegt in denen ebenfalls die verwendeten Views sind, die Layouts können zusätzlich ineinander geschachtelt werden. [siehe Abbildung 11]

19

Abbildung 11 – Layout XML

3.4.4 Activity Die Android-Komponente Activity organisiert die Layouts und den Zugriff auf die darin enthaltenen Views. Zum Beispiel bei Oberflächenereignissen muss die Activity steuern, welches Layout als nächstes angezeigt wird. Eine Activity sollte aber nur zur Darstellung genau einer Bildschirmseite implementiert werden. Sie besitzt immer nur ein Layout, welches sie zur Anzeige auf dem Endgerät bringt. Darüber hinaus keine eine Activity in der Lage sein auf Datenquellen und die Hardware des Endgerätes zuzugreifen. Jede Activity hat einen Lebenszyklus nachdem sie gestartet worden ist. Für jeden Zustand in diesem Zyklus gibt es eine Methode in der Klasse Activity, welche auf Wunsch überschrieben werden kann. Es gibt sieben verschiedene Methoden in einem Zyklus. Ich möchte nun kurz auf den Ablauf [siehe Abbildung 12] und die einzelnen Methoden eingehen.

20

Abbildung 12 – Lebenszyklus einer Activity

Um eine Activity zu starten wird die onCreate() – Methode aufgerufen. Sie initialisiert die Layouts, die Schaltflächen und das Menü. Danach werden die Methoden onStart() und onResume() aufgerufen. Erst dann ist die Activity vollständig sichtbar. Der Unterschied von onStart() und onResume() ist, dass onStart() aufgerufen wird, nachdem eine Activity neu erzeugt wurde oder wenn sie vorher nicht sichtbar war, aber nun wieder angezeigt werden soll. OnResume() wird aufgerufen, wenn eine teilweise verdeckte Activity wieder vollständig angezeigt werden soll. Bei Überlagerung von 2 Activities wird die Methode onPause() aufgerufen. In diesem Status bleibt sie so lange sie nur teilweise überlagert wird. Wenn sie vollständig von einer anderen Activity überlagert wird, dann wird die Methode onStop() ausgeführt. Wenn die Activity wieder aufgerufen werden soll und nur auf onPause() gestanden hat wird einfach die Methode onResume() aufgerufen und die Activity wird wieder komplett angezeigt. Falls die Activity im Status onStop() ist, werden die Methoden onRestart(), onStart() und onResume() in dieser Reihenfolge aufgerufen, bevor die Activity wieder sichtbar ist. Nur wenn man die Activity komplett beenden möchte, wird die onDestroy()-Methode aufgerufen. Durch diesen Lebenszyklus realisiert Android performantes Multitasking. Komponenten werden so „am Leben“ erhalten, nachdem sie ihre Aufgabe erledigt haben, sodass sie beim nächsten Aufruf dieser Komponente nicht komplett neu erzeugt werden muss. Dabei wird die Komponente nur vom inaktiven Zustand in den aktiven geändert. Dies gilt nicht nur für die Komponenten einer Anwendung, sondern grundsätzlich für das ganze Android-System. 21

4 Programmierung in Android

4.1 Warum Java? Aus folgenden Gründen ist Java, gegenüber dem Hauptkonkurrenten C++, obwohl aus geschwindigkeitsgründen in gewissen Bereichen die Basisbibliotheken aus C/C++ sind, am besten zur Programmierung für Android geeignet :   

Frühere Sun-Mitarbeiter und Java-Ingenieure entwickeln für Google Vorteil gegenüber C ist, dass Objektorientierung bei Java möglich ist Verbreitung :  Java gibt es auf über 1,8 Milliarden mobilen Endgeräten  80% aller neuen verkauften Handys und PDAs basieren mit der Untermenge Java ME letztendlich auf Java



Portabilität :  Da bei Softwareentwicklung für Android viele Java SE- sowie Androidspezifischer Bibliotheken genutzt werden und dadurch eine relative Nähe zur Java SE-Programmierung vorhanden ist, erleichtert dies eine Wiederverwendung von existierendem Java Quellcode (besonders wenn es sich um keine Benutzerschnittstellenanwendung oder speziell für Mobilfunkgeräte entwickelte Anwendungen handelt)



Sicherheit :  Es gibt ein extra API bei Java für Sicherheit (Authentifizierung, Überprüfung von Signaturen, Vergabe von Rechten)



Akzeptanz :  Java hat eine große Community und ist weltweit ähnlich anerkannt wie C



Robustheit :  Die VM wacht darüber, dass ein Absturz eines Programms keine anderen Anwendungen stört  Integrität von Bytecode ist sichergestellt, da vorher ein Prüfsummenverfahren angewandt wurde, somit werden unbemerkte Veränderungen durch Viren o.ä. verhindert



Garbage Collector :  Java hat im Gegensatz zu C++ einen Garbage Collector, wodurch bei Java keine Datenlecks auftreten 22

4.2 Android Development Tools (ADT) Android bringt eine Reihe von Werkzeugen (Tools) mit, welche die Entwicklung vereinfachen können und sollen. In diesem Kapitel möchte ich ein paar von diesen Tools kurz vorstellen. 4.2.1 ADT-Plugin Durch dieses Plugin wird das Android SDK mit der Eclipse IDE verkuppelt, sodass man Android-Programme in der für viele gewohnten Eclipse-Entwicklungsumgebung bearbeiten und weiterentwickeln kann. Das ADT-Plugin erweitert die Möglichkeiten von Eclipse um schnell und einfach neue Android Projekte zu erstellen und fügt Komponenten, die auf das Android Framework API aufbauen, hinzu.

Abbildung 13 – Installation ADT-Plugin

Um das Plugin zu installieren muss man es einfach über den Update Manager von Eclipse herunterladen. Nach der Installation muss in Eclipse nur noch unter Window > Preferences > Android eingegeben werden, wo sich die vorher heruntergeladene und installierte Android SDK auf dem Entwicklungsrechner befindet.

23

4.2.2 Android Emulator Der Android Emulator emuliert ein Android-Endgerät auf dem Entwicklungscomputer. Durch diesen ist es möglich, entwickelte Android-Programme auszuführen, zu testen bzw. zu debuggen, ohne, dass man auf Android-Hardware zurückgreifen muss. Dieser zeichnet sich durch folgende Eigenschaften aus :      

Emulation einer ARM CPU in der Version ARMv5 Ansteuerung eines 16-Bit Displays Ansteuerung der Audio-Hardware Ansprechen von Flash Speicher-Partitionen Simulation eines Mobilfunknetzes Simulation einer SIM-Karte

4.2.3 Android Debug Bridge (adb) Mit der adb lassen sich sowohl der Emulator als auch das Android-Endgeräte direkt von der Konsole aus ansteuern. Dadurch lassen sich zum Beispiel Dateien zwischen dem Emulator oder dem Endgerät und dem Entwicklungscomputer hin und her kopieren. Ebenso ist es möglich Programme auf ein spezifisches Endgerät bzw. Emulator installieren.

4.2.4 sqlite3 Bei SQLite handelt es sich um ein kompaktes, für den Einsatz in mobilen Plattformen optimiertes, quelloffenes, relationales Datenbanksystem. Durch sqlite3 wird der Zugriff auf SQLite-Daten ermöglicht. Das sqlite3-Tool enthält zusätzlich Kommandos, wie zum Beispiel .dump um Inhalt aus einem Datenbanktable auszugeben oder auch .schema um das SQL CREATE Statement für ein vorhandenes table anzuzeigen. 4.2.5 dx-Tool Das dx-Tool konvertiert für die Dalvik Virtual Machine Java-Bytecode(.class) in Android-Bytecode(.dex).

24

4.3 Einstiegsbeispiel für Android „Hello Seminar“ Ich möchte nun mit einem kleinen und einfachen Beispiel den typischen Ablauf vom erstellen eines neuen Projekts bis zur ersten kleinen Applikation zeigen. Nachdem man Eclipse mit dem ADT Plugin verzahnt hat, kann man ganz einfach ein neues Android-Projekt anlegen. Man wählt in der Menüleiste von Eclipse einfach File  New  Project aus, daraufhin erhält man folgendes Fenster :

Abbildung 14 – Neues Projekt anlegen (1)

Wie auf dem Bild zu sehen ist, wählt man dort einfach Android Project aus und klickt auf Next. Als nächstes erscheint das Fenster in dem die Projektdetails eingegeben werden müssen. Als erstes muss in diesem Fenster der Project Name eingegeben werden, bei diesem handelt es sich um den Eclipse Projektnamen der Applikation. In dem Verzeichnis werden die gesamten Projektdateien angelegt. In der Liste unter Build Target wird festgelegt, für welche Android-Version die Applikation programmiert werden wird. Der Application Name ist der Titel, welchen man, nachdem die Applikation auf einem Endgerät oder Emulator laufen lässt, sieht. Im Feld Package Name wird ein im Android-System einzigartiger Name für das Package in dem der Quellcode angelegt wird festgelegt. In diesem Package wird die Wurzel-Activity angelegt. Der Name dieser Activity wird in dem Feld Create Activity festgelegt. Als letztes muss noch

25

festgelegt werden, welches API Level die Applikation braucht. Dies geschieht im Feld Min SDK Version.

Abbildung 15 – Neues Projekt anlegen (2)

Nachdem alle Eingaben korrekt eingegeben worden sind, klickt man auf Finish, woraufhin das angelegt Projekt im Eclipse Explorer erscheint. Im Projekt ist dadurch die Datei HelloSeminar.java erstellt worden. Diese sollte Standardmässig wie folgt aussehen : package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Abbildung 16 – Standard Java-Datei

26

Mit der Applikation möchten wir, dass ein einfacher Satz durch das Endgerät bzw. den Emulator angezeigt wird. Nach kleinen Modifikationen sieht der Quellcode nun so aus : package com.android.helloseminar; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloSeminar extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); (1) tv.setText("Hello, Seminar"); (2) setContentView(tv); (3) } } Abbildung 17 – Hello Seminar

Zunächst sieht man, dass ein TextView erstellt worden ist (1), welcher eine Android Context Instanz als Parameter akzeptiert. Das ist möglich, weil die Klasse Activity von der abstrakten Klasse Context erbt und die Klasse HelloSeminar eine Unterklasse von Activity ist, wodurch HelloSeminar ebenfalls ein Context ist. Daraufhin wird mit setText(“…“) der Textinhalt des TextView definiert (2). Die Methode setContentView() wird aufgerufen, damit der Text im Interface der Activity dargestellt wird (3). Wenn diese Methode nicht aufgerufen werden würde, wäre kein Interface vorhanden, sodass ein leerer Bildschirm angezeigt werden würde. Damit die Applikation ausführbar bzw. zu testen ist, muss ein Android Virtual Device(AVD) also ein Emulator erstellt werden. Um dies zu machen gibt es den Android SDK und AVD Manager(siehe Abbildung 18).

Abbildung 18 – Android SDK und AVD Manager

27

Dieser wird von dem ADT-Plugin von Android für Eclipse mitgebracht. Eine neue AVD wird erstellt in dem auf New geklickt wird, im folgenden Fenster verschiedene Einstellungen für den AVD vorgenommen werden und dann auf Create AVD geklickt wird(siehe Abbildung 19).

Abbildung 19 – Erstellen eines AVD

Es gibt fünf Einstellungsmöglichkeiten für einen AVD. Im ersten Feld wird ein eindeutiger Name zur Identifikation des AVD festgelegt. Unter Target wird die Version des Betriebssystems, mit welchem der AVD laufen soll, eingestellt. Zusätzlich kann man den AVD mit einer SD-Karte versehen und dabei ebenfalls die Größe dieser SD-Karte festlegen. Wenn man möchte, kann man auch einen bestimmten Skin für seinen AVD festlegen, wobei es jedoch kaum eine Rolle spielt, mit welchem AVD man verschiedene Anwendungen testet. Zuletzt kann noch eingestellt werden, mit welcher Hardware die AVD laufen kann. Nachdem der AVD erstellt worden ist, muss der programmierten Applikation nur noch gesagt werden, dass sie auf diesem laufen soll. Dazu muss man in den Run Configurations zunächst das Projekt, welches man testen möchte, im Reiter Android eingeben und danach im Reiter Target den zu benutzenden AVD einstellen.

28

Abbildung 20 – Run Configurations

Durch das Klicken auf Run wird der Emulator(AVD) gestartet. Nachdem dieser hochgefahren ist, sieht er wie in Abbildung 21 aus. Man kann die programmierte Applikation auch schon auf dem Bildschirm des Emulators sehen. Wenn man diese durch Anklicken ausführt, wird ein neuer View geöffnet und man kann das programmierte sehen[siehe Abbildung 22].

Abbildung 21 – Emulator (1)

Abbildung 22 – Emulator (2)

29

5. Fazit und Ausblick Durch das Erscheinen von Android hat sich der Smartphone-Markt sehr verändert. Apples iOS hat seine Monopolstellung, was mit Touchscreen bediente Smartphones angeht, verloren und mit Googles Android einen sehr starken Konkurrenten bekommen. Dadurch die Entwicklung des Marktes in die Richtung von TouchscreenHandies bzw. Smartphones, hat Symbian seine ehemals sehr starke Position im Mobilfunkgeschäft verloren. Das Betriebssystem ist einfach nicht auf eine solche Bedienung und Hardware ausgelegt ist. Da Google es Entwicklern sehr einfach macht, für ihre Plattform zu entwickeln, wird in meinen Augen in Zukunft kein Weg mehr an Android vorbeigehen und auf kurz oder lang Apples iOS in den Schatten stellen, obgleich iOS immer eine starke Stellung auf dem Markt behalten wird. Des Weiteren ist das System der Komponentenarchitektur durch Activities, welche es möglich machen Standardprogramme des Betriebssystems zu erweitern oder zu ersetzen, das Zukunftssicherste und modernste System, welches es im Moment gibt. Zur bevorstehenden Bachelorarbeit vorausschauend freue ich mich sehr auf die Arbeit mit Android, da mir das Prinzip von Google und des Systems an sich sehr zusagt. Im Verlauf der Arbeit soll der Umgang mit Datenbanken in Android vertieft werden, um eine in sich und mit dem System konsistente Applikation schreiben zu können.

30

6 Anhang / Quellen 6.1 Literaturverzeichnis Heiko Mosemann, Matthias Kose : Android – Anwendungen für das HandyBetriebssystem erfolgreich programmieren, Hanser, 2009 [1]Arno Becker, Marcus Pant : Android 2 – Grundlagen und Programmierung, dpunkt.verlag, 2010 c’t Magazin für Computertechnik 2010, Heft 16, Heft 22, Heft 24 http://de.wikipedia.org/wiki/Symbian-Plattform http://de.wikipedia.org/wiki/Android_(Betriebssystem) http://de.wikipedia.org/wiki/Apple_iOS http://winfwiki.wi-fom.de/ Analyse_der_Entwicklungsumgebung_für_Android [2]http://developer.android.com/index.html http://www.24mobile.de/blog/aktuelle-smartphone-betriebssysteme-im-check-iphoneios-4-android-windows-7-phone-meego-symbian-bada-maemo.html http://www.minea-design.com/de/programmbeschreibung/ http://www.computerwelt.at/detailArticle.asp?a=131365&n=1 http://www.golem.de/1006/75885.html [3]http://mobiles-internet.buemo.net/2010/11/nokia-im-sinkflug-microsoft-am-boden/ [4]http://mobilemetrics.de/2010/10/25/app-stores-im-vergleich-100-000-apps-imandroid-market/

31

6.2 Abbildungsverzeichnis Abbildung 4 : Weltmarktentwicklung der Smartphone-Betriebssysteme[3] Abbildung 6 : Anzahl Applikationen in App Stores[4] Abbildung 8 : Übersicht Android-Architektur [2] Abbildung 9 : Umwandlung von .java in .dex durch das dx-Tool [1] Abbildung 12 : Lebenszyklus einer Activity [2]

32

View more...

Comments

Copyright � 2017 SILO Inc.