Apps programmieren – Schritt für Schritt - Elektor
Apps programmieren – Schritt für Schritt - Elektor
Apps programmieren – Schritt für Schritt - Elektor
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Stefan Schwark<br />
Android<br />
<strong>Apps</strong> <strong>programmieren</strong> <strong>–</strong> <strong>Schritt</strong> <strong>für</strong> <strong>Schritt</strong>
Stefan Schwark<br />
Android-<strong>Apps</strong><br />
<strong>Elektor</strong>-Verlag, Aachen
Für meine Eltern<br />
© 2012: <strong>Elektor</strong> Verlag GmbH, Aachen.<br />
2. Auflage 2012<br />
Alle Rechte vorbehalten.<br />
Die in diesem Buch veröffentlichten Beiträge, insbesondere alle Aufsätze und Artikel sowie alle<br />
Entwürfe, Pläne, Zeichnungen und Illustrationen sind urheberrechtlich geschützt. Ihre auch auszugsweise<br />
Vervielfältigung und Verbreitung ist grundsätzlich nur mit vorheriger schriftlicher Zustimmung<br />
des Herausgebers gestattet.<br />
Die Informationen im vorliegenden Buch werden ohne Rücksicht auf einen eventuellen Patentschutz<br />
veröffentlicht. Die in diesem Buch erwähnten Soft- und Hardwarebezeichnungen können<br />
auch dann eingetragene Warenzeichen sein, wenn darauf nicht besonders hingewiesen wird. Sie<br />
gehören dem jeweiligen Warenzeicheninhaber und unterliegen gesetzlichen Bestimmungen.<br />
Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen.<br />
Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autor<br />
können <strong>für</strong> fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine<br />
Haftung übernehmen.<br />
Für die Mitteilung eventueller Fehler sind Verlag und Autor dankbar.<br />
Korrektorat: Ute Marion Poeppel, Bonn<br />
Umschlaggestaltung: Etcetera, Aachen<br />
Satz und Aufmachung: InterMedia <strong>–</strong> Lemke e. K., Ratingen<br />
Druck: WILCO, Amersfoort (NL)<br />
Printed in the Netherlands<br />
ISBN 978-3-89576-252-9<br />
<strong>Elektor</strong>-Verlag GmbH, Aachen<br />
www.elektor.de<br />
119014-1/D
Inhaltsverzeichnis<br />
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
Über den Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
1. Einführung in das Android-System. . . . . . . . . . . . . . . . . . . . . . . 9<br />
1.1 Entwicklung ................................ 9<br />
1.2 Android und Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
1.3 Open Source-Projekte ......................... 13<br />
1.4 Portierungen auf Endgeräte . . . . . . . . . . . . . . . . . . . . . 15<br />
2. Die Eclipse Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . 16<br />
2.1 Die benötigte Software . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
2.2 Android Virtual Devices . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
3. Grundlagen der Android Programmabarbeitung . . . . . . . . . . . . . 20<br />
3.1 Komponenten des Systems . . . . . . . . . . . . . . . . . . . . . 20<br />
3.2 Die Android-Manifest-Datei . . . . . . . . . . . . . . . . . . . . . 22<br />
3.3 Die Android-API-Level . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
3.4 Die Android-Activity . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
4. Das Android-User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
4.1 Views und ViewGroups. . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
4.2 Layout-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
4.3 Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />
5. Android und JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />
5.1 JAVA-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />
5.2 Android-Pakete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
5.3 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
5.4 Sichtbarkeit von Variablen und Methoden . . . . . . . . . . . 49<br />
6. Einfache Android Applikationen . . . . . . . . . . . . . . . . . . . . . . . . 51<br />
6.1 Ein erstes App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />
6.2 Ein einfaches Rechenprogramm . . . . . . . . . . . . . . . . . 56<br />
6.3 Auswahllisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />
6.4 Eine Stoppuhr als Android-App . . . . . . . . . . . . . . . . . . 85<br />
6.5 Timer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />
6.6 Benachrichtigungen anzeigen. . . . . . . . . . . . . . . . . . . . 99<br />
5
Inhaltsverzeichnis<br />
6.7 Dateien lesen und schreiben . . . . . . . . . . . . . . . . . . . . 101<br />
6.8 SMS versenden und empfangen .................. 108<br />
7. Die Abfrage und Darstellung von Umweltdaten. . . . . . . . . . . . . . 118<br />
7.1 Geo-Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />
7.2 Zeichnen auf dem Display . . . . . . . . . . . . . . . . . . . . . . 128<br />
7.3 Ein GPS-Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br />
7.4 GPS-Tracks speichern . . . . . . . . . . . . . . . . . . . . . . . . . 145<br />
7.5 Die Abfrage von Sensoren . . . . . . . . . . . . . . . . . . . . . . 155<br />
7.6 Widgets <strong>für</strong> das Display . . . . . . . . . . . . . . . . . . . . . . . . 168<br />
8. Medienwiedergabe auf dem Smartphone . . . . . . . . . . . . . . . . . . 177<br />
8.1 Eingebettete Sounddateien wiedergeben . . . . . . . . . . . . 177<br />
8.2 Frequenzen ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />
8.3 Sounddateien aufnehmen . . . . . . . . . . . . . . . . . . . . . . 192<br />
9. <strong>Apps</strong> <strong>für</strong> Webanwendungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 201<br />
9.1 Das Anzeigen von Webseiten . . . . . . . . . . . . . . . . . . . . 201<br />
9.2 Die Wiedergabe von Internet Videos . . . . . . . . . . . . . . . 207<br />
9.3 Web <strong>Apps</strong> in Javascript und HTML . . . . . . . . . . . . . . . . 209<br />
9.4 Eine App <strong>für</strong> Wikis . . . . . . . . . . . . . . . . . . . . . . . . . . . 211<br />
9.5 Datenbankabfragen über HTTP. . . . . . . . . . . . . . . . . . . 216<br />
9.6 Socket-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . 226<br />
10. Android und Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233<br />
10.1 Rechte und Benutzer . . . . . . . . . . . . . . . . . . . . . . . . 233<br />
10.2 Linux Kommandozeilenbefehle. . . . . . . . . . . . . . . . . . 234<br />
Nachwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />
Anhang. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />
Javascript-Quellcodebeispiel. . . . . . . . . . . . . . . . . . . . . . . . 242<br />
Android-Manifest-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />
Quellenverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />
Abbildungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />
Quellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />
Webadressen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252<br />
Stichwortverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254<br />
6
Vorwort<br />
Smartphones sind heutzutage ein normaler Begleiter im Alltag geworden.<br />
Nur wenige Jahre nach der Markteinführung sieht man überall Menschen,<br />
die über die Displays ihrer Telefone streichen. Doch was hat so<br />
ein Smartphone an sich, dass so viele Leute ein solches Gerät besitzen<br />
möchten. Wahrscheinlich hätten sich diese leistungsstarken Telefone<br />
ohne die Entstehung der sozialen Netzwerke und der vielen sogenannten<br />
Web 2.0-Anwendungen niemals so stark verbreitet. Aber diese kleinen<br />
tragbaren Computer mit Telefonfunktion sind zu viel mehr in der Lage,<br />
als nur die neuesten Nachrichten zu twittern oder über Facebook mit<br />
Freunden zu chatten. Die äußerst leistungsstarke Hardware, die in einem<br />
Smartphone enthalten ist, kann bei richtiger Programmierung erstaunliche<br />
Dinge vollbringen. Auch lassen sich sehr einfach Programme <strong>für</strong><br />
die verschiedensten Anwendungen schreiben, sei es ein Rechenprogramm<br />
oder eine Applikation <strong>für</strong> den Internetzugriff. Das Android-System<br />
ist erstaunlich vielseitig und mächtig, so dass wenige Zeilen <strong>für</strong> ein Programm<br />
ausreichen.<br />
Hat man erst einmal die Programmierumgebung installiert und die ersten<br />
Programme geschrieben, so wird man feststellen das es im Alltag genug<br />
Problemstellungen gibt, <strong>für</strong> die es doch sehr praktisch wäre, wenn es ein<br />
Programm <strong>für</strong> das Mobiltelefon geben würde. Was spricht also dagegen,<br />
sich mal eben eine passende App zu <strong>programmieren</strong>.<br />
Für solche Fälle wurde das vorliegende Buch geschrieben. Die hier gezeigten<br />
Beispiele führen in die verschiedenen Besonderheiten des Android-<br />
Framework ein. Anhand einfach gehaltener Programme wird hier gezeigt,<br />
wie die grundlegenden Android-Objekte funktionieren und wie sie programmiert<br />
werden. Die Bandbreite der Anwendungen reicht dabei von ganz einfachen<br />
Rechenprogrammen, über praktische Anwendungen wie Zeitmesser,<br />
bis zu Programmen, welche die Sensoren des Telefons abfragen und die<br />
gemessenen Werte darstellen. Auch die Erstellung von Web-Applikationen,<br />
welche mit Skript-Sprachen wie Javascript erstellt werden können, wird behandelt<br />
und an Beispielen dargestellt.<br />
7
Über den Autor<br />
Für die Hilfe und Unterstützung bei der Erstellung dieses Buches möchte<br />
ich mich bei meiner Lebensgefährtin und meinem Sohn sehr herzlich<br />
bedanken und wünsche dem Leser viel Freude beim Lesen und Programmieren.<br />
Über den Autor<br />
8<br />
Würselen im Januar 2012<br />
Stefan Schwark wurde 1967 in Aachen geboren und ist staatlich geprüfter<br />
Elektrotechniker. Nach dem Abschluss seiner Ausbildung zum Informationselektroniker<br />
studierte er einige Semester Elektrotechnik an der Fachhochschule<br />
in Aachen. Anschließend arbeitete er mehrere Jahre als Hardwareentwickler<br />
und Programmierer bevor er sich im Jahre 2005<br />
selbständig machte. Zu dieser Zeit begann er sich mit der Programmierung<br />
von Mobiltelefonen zu beschäftigen und veröffentlichte 2007 das Buch<br />
»JAVA ME <strong>für</strong>s Handy«. Momentan arbeitet er als Programmierer <strong>für</strong> die<br />
Steuerung und Visualisierung von Brennstoffzellensystemen.
1. Einführung in das Android-System<br />
1.1 Entwicklung<br />
Ursprünglich war Android ein Betriebssystem <strong>für</strong> Mobiltelefone. Die Entwicklung<br />
von Android beginnt im Jahr 2003. In diesem Jahr wurde die Firma<br />
Android Inc. gegründet. Die Firma war ein Start Up-Unternehmen, das sich<br />
mit der Entwicklung von Software <strong>für</strong> Mobiltelefone befasste. Über die eigentlichen<br />
Entwicklungen ist wenig bekannt. Android Inc. Mitbegründer Jeff<br />
Rubin, heute ›Director of mobile Platforms‹ bei Google, erklärte 2003 in<br />
einem Interview mit der Zeitschrift ›Business Week‹, dass man sich mit der<br />
Entwicklung von Mobiltelefonen befasst, die Informationen zum Standort<br />
des Benutzers erfassen könnten. Veröffent lichungen gab es jedoch keine.<br />
Die Webseite der Firma zeigte in dieser Zeit einige sehr kuriose Sachen, wie<br />
Comics oder private Empfehlungen, gab jedoch keinerlei Informationen über<br />
Entwicklungen oder Unternehmenszweck an. Trotzdem wurde Android Inc.<br />
2005 von Google erworben. Dies geschah zu einem Zeitpunkt, als Google<br />
mehrere kleine Start Up-Unternehmen aufkaufte. Da zu diesem Zeitpunkt<br />
die Firma Apple das iPhone bereits entwickelte, welches Anfang 2007 auf<br />
den Markt kam, gab es schon bald Gerüchte über das sogenannte gPhone.<br />
Also ein von Google entwickeltes Mobiltelefon. Nahrung bekamen diese Gerüchte,<br />
als Gespräche zwischen großen Mobiltelefon-Herstellern und Google<br />
bekannt wurden. Google dementierte zwar, aber das Gerücht hielt sich nachhaltig.<br />
Bis zum 5. November 2007, als Google erklärte, man würde kein<br />
Mobiltelefon entwickeln, sondern ein Betriebssystem. Die Gespräche mit<br />
den anderen Firmen hatten den Zweck die Open Handset Alliance zu gründen.<br />
Diese ist ein Zusammenschluss mehrerer großer Unternehmen aus der<br />
Mobilfunk Branche. Neben Herstellern von Telefonen wie LG, Samsung und<br />
HTC, finden sich hier ebenso Hersteller der benötigten Chips und auch Provider<br />
und Netzanbieter wie z. B. T-Mobile. Die Entwicklung von Android lag<br />
von nun an in der Hand dieser Vereinigung. Android stammt also nicht nur<br />
von Google, obwohl die Firma eine treibende Kraft ist, sondern ist ein freies<br />
und quell-offenes Betriebssystem, welches unter der Apache-Lizenz von der<br />
Open Handset Alliance veröffentlicht wird.<br />
Nachdem man die Entwicklung der Öffentlichkeit angekündigt hatte, ging<br />
es recht schnell vorwärts. Bereits eine Woche später wurde die erste Ver-<br />
9
1. Einführung in das Android-System<br />
sion des Software Development Kits (= SDK) veröffentlicht. Kurze Zeit danach<br />
stellten die ersten Chiphersteller schon die ersten Chipsets vor, die<br />
einen ersten Ausblick auf die Fähigkeiten des kommenden Systems ermöglichten.<br />
Die grundlegende Idee bestand darin, das Betriebssystem zusammenbauen<br />
zu können, indem man einzelne Komponenten einfach kombiniert.<br />
Was sich zunächst einfach anhört, war damals jedoch nicht üblich.<br />
Die Telefonhersteller hatten alle eigene Versionen von Betriebssystemen<br />
und eine Erweiterung war zunächst aufwendig und musste immer <strong>für</strong> die<br />
passende Hardware erstellt werden. Mit Android konnten dann auch Module<br />
von anderen Herstellern integriert werden, was die Entwicklung vereinfachte.<br />
Android ist nicht nur ein Betriebssystem. Android ist eine Sammlung von<br />
mehreren Komponenten, die erforderlich sind, um eine bestimmte Funktionalität<br />
zu erlangen. So etwas nennt man dann ›Software Stack‹. Ein solcher<br />
Software Stack beinhaltet verschiedene Teile, die die verschiedenen<br />
Aufgaben übernehmen, die benötigt werden, um eine Anwendung vollständig<br />
zu realisieren. Das ist dann nicht nur das Betriebssystem, sondern auch<br />
verschiedene Schichten darüber. Im Falle von Android besteht der Software<br />
Stack aus dem Betriebssystem, der sogenannten Middleware und einigen<br />
Programmen, welche die wichtigsten Funktionen bereitstellen.<br />
Basis des Betriebssystems ist ein Linux 2.6 Kernel. Der Kernel kümmert sich<br />
um die Kommunikation mit der eigentlichen Hardware. Er sorgt <strong>für</strong> die Verwaltung<br />
des Arbeitsspeichers und der ablaufenden Prozesse. Der Kernel stellt<br />
hier eine Hardware-Abstraktionsschicht dar. Das heißt, er besitzt logische<br />
Schnittstellen, über die er mit der nächsthöheren Schicht kommuniziert. Das<br />
hat den Vorteil, dass der Kernel der einzige Teil des Systems ist, der von der<br />
verwendeten Hardware abhängig ist. Diese Architektur macht es möglich,<br />
das Android-Betriebssystem <strong>für</strong> viele verschiedene Geräte zu portieren. So<br />
gibt es mittlerweile Android <strong>für</strong> verschiedenste Mobiltelefone und Tablet-<br />
Computer, als PC-Version <strong>für</strong> X86 Prozessoren und <strong>für</strong> zahlreiche andere<br />
Plattformen bis hin zu eingebetteten Systemen.<br />
Über der Kernelschicht steht dann die Middleware. Hierbei handelt es sich<br />
um eine Sammlung von Software, die die Verbindung zwischen der Applikation<br />
und dem Kernel regelt. Der wichtigste Teil ist die, von dem Google-<br />
Mitarbeiter Dan Bornstein entwickelte Dalvik-Maschine. Diese virtuelle Maschine<br />
stellt die JAVA-Laufzeitumgebung dar. Der Name Dalvik wurde von<br />
10
Bornstein nach einer Stadt in Island gewählt, in der einige seiner Vorfahren<br />
lebten. Die Dalvik-Maschine selbst, ist <strong>für</strong> die Ausführung des JAVA-Codes<br />
zuständig. Im Unterschied zu der normalen JAVA-Maschine ist die Dalvik-<br />
Maschine anders konzipiert. Der Unterschied liegt im zugrunde liegenden<br />
theoretischen Konstrukt. Bei der normalen JAVA-Virtual-Maschine handelt<br />
es sich um einen Kellerautomaten, während die Dalvik-Maschine als Registermaschine<br />
ausgeführt ist. Da das Modell der Dalvik-Maschine besser an<br />
moderne Prozessoren, wie den <strong>für</strong> Mobil telefone sehr häufig verwendeten<br />
ARM-Mikroprozessor angepasst ist, arbeitet es hier wesentlich ressourcensparender.<br />
Das ist ein wesentlicher Punkt, da Android <strong>für</strong> jeden Prozess eine<br />
neue Maschine startet. Da die Ressourcen eines Mobiltelefons jedoch eher<br />
begrenzt sind, muss die Dalvik-Maschine sich mit wesentlich weniger zufrieden<br />
geben als eine Virtual-Machine auf einem PC. Die Dalvik-Maschine ist<br />
auch wieder ein eigenes Open Source-Projekt und auch unter der Apache-<br />
Lizenz veröffentlicht. Zur Dalvik-Maschine gibt es auch ein eigenes Software<br />
Development Kit, welches auf der Projektwebseite erhältlich ist.<br />
1.2 Android und Linux<br />
1.2 Android und Linux<br />
Da Android zu einem großen Teil auf Linux basiert, könnte man sagen: Android<br />
ist Linux. Das wäre aber nur zu einem Teil richtig. Android besteht<br />
zwar aus einem Linux-Kern, aber der Rest des Systems hat zunächst einmal<br />
nichts mit dem Betriebssystem zu tun. Trotzdem ist es ratsam einen Blick<br />
auf diesen Unterbau zu werfen, da hier einige Gründe <strong>für</strong> bestimmte Verhaltensweisen<br />
des Android-Systems liegen.<br />
Auch wer mit Linux bisher noch nie etwas zu tun hatte, kennt dieses Betriebssystem<br />
aus den diversen Veröffentlichungen und Beilagen in den Computerzeitschriften.<br />
Hierbei handelt es sich jedoch um Linux-Distributionen, welche<br />
eine Zusammenstellung des eigentlichen Systems mit diversen Programmen<br />
und Anwendungen darstellten. Der Kern des Systems ist wesentlich kleiner.<br />
Grundsätzlich besteht Linux nur aus einem Kernel mit diversen Treibern bzw.<br />
Modulen. Selbst die darauf aufsetzende Shell, die nur eine einfache Kommandozeile<br />
zur Ver fügung stellt, hat mit dem eigentlichen Linux-System schon<br />
nichts mehr zu tun, sondern stellt in der Regel ein eigenes Projekt dar. Es besteht<br />
deswegen auch die Möglichkeit, diese Programme auszutauschen und<br />
den eigentlichen Bedürfnissen anzupassen. Deswegen basieren viele Geräte<br />
11
1. Einführung in das Android-System<br />
Bild 1: Das Android-Framework<br />
12
1.3 Open Source-Projekte<br />
<strong>für</strong> den heimischen Gebrauch, wie Router oder Netzwerkfestplatten aus kleinen<br />
Linux-Systemen mit einer minimalen Kommandoshell und den <strong>für</strong> den Betrieb<br />
nötigen Programmen. Für viele dieser Systeme gibt es daher auch andere Firmware<br />
Images, die auf Linux-Projekten wie z. B. OpenWRT basieren. Oft ist es<br />
aber auch möglich, komplette Debian-Linux-Installationen auf solchen Geräten<br />
unterzubringen. So entsteht dann aus der ausgedienten USB- Dockingstation<br />
z. B. eine IP-Webcam. Es gibt im Internet mittlerweile eine ganze Reihe solcher<br />
Projekte. Zu diesen gehören auch die zahlreichen Portierungen, welche es ermöglichen,<br />
Android auch auf nicht da<strong>für</strong> bestimmten Geräten zu installieren.<br />
Da eine solche Portierung jedoch eine sehr genaue Kenntnis des zugrunde<br />
liegenden Systems voraussetzt, würde das Thema den Rahmen dieses Buches<br />
sprengen. Trotzdem ist es ratsam, sich etwas mit diesem Betriebssystem<br />
und seinen Eigenheiten, wie der Benutzerverwaltung und der grundsätzlichen<br />
Bedienung, vertraut zu machen. Es besteht nämlich durchaus<br />
die Möglichkeit, von einer Android-Applikation aus, auf das Linux-System<br />
zuzugreifen und dort auch Befehle auszuführen. Ebenso wie Linux kennt<br />
Android einen Root User, welcher auf dem System uneingeschränkten Zugriff<br />
hat. Aus diesem Grund existieren auch zahlreiche Anleitungen und<br />
<strong>Apps</strong> im Android-Market, die es erlauben unter "diesem Benutzer" auf dem<br />
Smartphone zu arbeiten. Nur unter "diesem Benutzer" ist es z. B. möglich,<br />
bestimmte Einstellungen des Gerätes zu verändern. Wenn man also z. B.<br />
die Taktfrequenz seines Smartphone erhöhen will, dann geht das nur, wenn<br />
man die Rechte des Root Users hat.<br />
1.3 Open Source-Projekte<br />
Nicht jede Applikation muss neu geschrieben werden. Viele Anwendungen<br />
sind so komplex, dass es keinen Sinn machen würde, sich alleine zu Hause<br />
hinzusetzen und mit einem enormen Zeitaufwand das Rad neu zu erfinden.<br />
Stattdessen spart einem der Blick ins Internet oft eine Menge Zeit. Zumindest<br />
gibt es jedoch einen guten Überblick darüber, was bereits realisiert<br />
wurde. Es ist außerdem immer gut, sich anzusehen, wie ein Problem von<br />
anderen gelöst wurde.<br />
Ein Beispiel <strong>für</strong> ein solches Open Source-Projekt stellt ›gmote‹ dar. Wie <strong>für</strong><br />
Android üblich unter der Apache-Lizenz veröffentlicht, ist ›gmote‹ eine<br />
13
1. Einführung in das Android-System<br />
Applikation, welche die Fernsteuerung des Rechners über das Android-<br />
Smartphone ermöglicht.<br />
Open Source-Projekte werden in der Regel auf einer Projektwebseite veröffentlicht.<br />
Hier gibt es alle zum Projekt relevanten Informationen, soweit<br />
die Projektbetreuer sie veröffentlicht haben. Zunächst einmal kann man<br />
hier immer die Lizenz finden, unter der das Projekt veröffentlicht ist. Diese<br />
sollte man sich durchlesen, falls man z. B. eine kommerzielle Nutzung vorhat<br />
oder an dem Projekt mitarbeiten möchte. Eine Dokumentation des Projektes<br />
ist in der Regel auch immer auf der Webseite zu finden. Oftmals<br />
ergänzt durch ein Wiki oder ein Forum in dem Fragen gestellt werden<br />
können. Manche Projekte bieten auch Unterstützung durch IRC-Channels,<br />
in denen den Entwicklern direkt Fragen gestellt werden können.<br />
Die Projekte werden dann meistens in der Form von Source Code veröffentlicht.<br />
Entweder als Archiv zum Herunterladen oder auch innerhalb eines<br />
Revision Control Systems, bei dem der Quellcode über einen Client <strong>für</strong> dieses<br />
System ausgelesen werden kann. Das am meisten verwendete System<br />
ist die Software ›Apache Subversion‹. Es gibt <strong>für</strong> dieses System Client-<br />
Software <strong>für</strong> jedes Betriebssystem und es kann in mehrere Entwicklungsumgebungen<br />
und Editoren integriert werden.<br />
Hat man das passende Projekt gefunden, kann man sich den Quellcode<br />
herunterladen und diesen selber in seiner eigenen Entwicklungsumgebung<br />
bearbeiten. Oftmals kann die Software schon fast alles, was man zu <strong>programmieren</strong><br />
vorhatte. So fehlen nur ein paar Punkte, um die gewünschte<br />
Applikation <strong>für</strong> das eigene Problem zu bekommen. Diese kann man jetzt<br />
selber schreiben und den Quellcode erweitern. Bevor man nun aber dieses<br />
Programm stolz auf seiner Webseite präsentiert oder gar versucht im<br />
Android-Market zu verkaufen, gilt es daran zu denken, das dies keine Software<br />
ist, die man selber geschrieben hat. Wenn die Lizenzbedingungen eine<br />
kommerzielle Nutzung ausschließen, dann kann man es nicht verkaufen.<br />
Ebenso gehört zu einer Veröffentlichung immer der Hinweis auf das zugrunde<br />
liegende Projekt. Man kann natürlich auch einfach an dem Projekt<br />
mitarbeiten und seine Erweiterungen so der Allgemeinheit zur Verfügung<br />
stellen. Der Nächste wird davon profitieren.<br />
14
1.4 Portierungen auf Endgeräte<br />
1.4 Portierungen auf Endgeräte<br />
Android ist auf viele Endgeräte portierbar. Die Quelloffenheit des Betriebssystems<br />
ermöglicht es, das System sogar an Geräte anzupassen, <strong>für</strong> die<br />
keine Originalversion des Herstellers zu finden ist. So gibt es mittlerweile<br />
mehrere Portierungen <strong>für</strong> Android-fremde Mobiltelefone im Internet. Auch<br />
<strong>für</strong> den Einsatz auf Tablet-PCs ist Android verfügbar. Portierungen sind<br />
hier u. a. <strong>für</strong> ASUS eepC zu finden.<br />
Obwohl Android ursprünglich <strong>für</strong> den Einsatz auf Mobiltelefonen gedacht<br />
war, interessiert sich mittlerweile auch die Industrie <strong>für</strong> den Einsatz des<br />
Betriebssystems. Zur Zeit existieren schon mehrere Firmen die Android<br />
<strong>für</strong> Steuerungs- und Visualisierungsaufgaben einsetzen. Hier wird dann<br />
der zugrunde liegende Linux-Kernel an das Zielsystem, meistens ein Embedded<br />
System <strong>für</strong> den Einsatz in der Industrie, angepasst. Im Prinzip<br />
lässt sich das ohne viel Hardwareaufwand auch zu Hause realisieren, da<br />
es auch preisgünstige Embedded Linux-Systeme auf dem Markt gibt. Ein<br />
Beispiel hier<strong>für</strong> ist das weit verbreitete Beagleboard, welches im Hobbybereich<br />
sehr beliebt ist und <strong>für</strong> das bereits Portierungen existieren.<br />
Die Menge der im Internet veröffentlichten Anwendungen und Portierungen<br />
steigt ständig, so dass es den Rahmen eines Buches sprengen würde, diese<br />
auch nur annähernd darzustellen. Prinzipiell eignet sich jedes System, welches<br />
über die Möglichkeit verfügt, ein Display anzuschließen und auf dem<br />
eine Linux-Variante installiert werden kann. Es lassen sich zwar auch Anwendungen<br />
realisieren, die das User Interface nicht benutzen, aber da stellt<br />
sich die Frage nach dem Sinn des Einsatzes eines Android-Framework.<br />
15
2. Die Eclipse-Entwicklungsumgebung<br />
2.1 Die benötigte Software<br />
Schauen wir uns nun einmal an, wie so eine App aufgebaut ist und wie sie<br />
programmiert wird. Hierzu benutzen wir die freie Entwicklungsumgebung<br />
Eclipse, welche <strong>für</strong> alle Plattformen verfügbar ist. Zusätzlich zu der Entwicklungsumgebung<br />
benötigen wir noch ein aktuelles JAVA-Runtime Environment,<br />
da Eclipse ohne dieses Environment nicht ausgeführt werden kann. Um die<br />
einzelnen <strong>Schritt</strong>e darzulegen, gehen wir von einem frisch installierten Betriebssystem<br />
aus.<br />
Als erstes installieren wir das JAVA-Development Kit (= JDK), vorzugsweise<br />
in der aktuellen Version, welches von der Webseite der Firma Oracle heruntergeladen<br />
werden kann. In diesem Development Kit ist das <strong>für</strong> die<br />
Eclipse-IDE (= Integrated Development Environment) benötigte JAVA-Runtime<br />
Environment bereits enthalten, so dass es nicht extra installiert werden<br />
muss. Die Installation sollte problemlos verlaufen, da die einzigen Sachen<br />
die hier beachtet werden müssen, die eventuell nicht gewünschte Toolbar<br />
<strong>für</strong> den Internet Browser oder die manchmal unbeliebte automatische<br />
Update-Funktion ist. Beide Optionen können im Verlauf des Installationsprozesses<br />
abgewählt werden.<br />
Nachdem das Runtime Environment installiert wurde, kann nun die eigentliche<br />
Entwicklungsumgebung installiert werden. Diese kann von der Website<br />
des Eclipse-Projektes heruntergeladen werden. In unserem Fall ist die<br />
Classic-Version eine gute Wahl, da sie alles enthält, was <strong>für</strong> die Entwicklung<br />
benötigt wird. Auch hier sollte die Installation ohne große Probleme<br />
funktionieren. Nach der Fertigstellung kann die IDE gestartet werden. Wenn<br />
alles richtig verlaufen ist, fragt die Software nach dem zu verwendenden<br />
Workspace-Verzeichnis. Dieses kann als Defaultwert festgelegt und sollte<br />
gespeichert werden, wenn man nicht bei jedem Start erneut gefragt werden<br />
möchte.<br />
Damit wir jetzt auch Programme <strong>für</strong> Android entwickeln können, benötigen<br />
wir jedoch noch einiges mehr an Software. Deswegen laden wir im nächsten<br />
<strong>Schritt</strong> das aktuelle Software Development Kit (= SDK) <strong>für</strong> Android<br />
16
2.1 Die benötigte Software<br />
herunter. Das SDK kann im Development-Bereich der Android-Webseite<br />
unter www.android.com heruntergeladen werden. Bei der Installation wird<br />
geprüft, ob bereits ein JDK installiert wurde. Wenn das noch nicht geschehen<br />
ist, etwa weil nur ein JAVA-Runtime Environment installiert wurde,<br />
muss dieser <strong>Schritt</strong> jetzt nachgeholt werden. Je nachdem, welche Version<br />
des Android-SDK he runtergeladen wurde, ist die Installation etwas unterschiedlich.<br />
Für Microsoft Windows ist es die beste Wahl, das Installationspaket<br />
mit Installer herunterzuladen. Für Linux oder Mac-Systeme kann das<br />
SDK als gepacktes Archiv heruntergeladen werden. Dieses Archiv wird dann<br />
einfach an der gewünschten Stelle entpackt. Die weitere Installation erfolgt<br />
über die Eclipse-Entwicklungsumgebung.<br />
Bild 2: Die Eclipse-<br />
Entwick lungsumgebung<br />
Um das Android-SDK in die Eclipse-IDE einzubinden, ist ein extra Plugin<br />
<strong>für</strong> Eclipse verfügbar. Dieses ADT-Plugin muss als nächstes installiert werden.<br />
Dazu wird Eclipse gestartet. In der Menüleiste ist unter dem Punkt<br />
›Help‹ der Unterpunkt ›Install new Software‹ zu finden. Dieser wird ausgewählt<br />
und es erscheint der Dialog <strong>für</strong> die Installation neuer Software. Durch<br />
Klick auf den ›Add‹-Button wird nun ein Eingabefeld aufgerufen, in dem<br />
eine neue Quelle <strong>für</strong> die Installation eingegeben werden kann. Als Namen<br />
kann der von Android vorgeschlagene ›ADT-Plugin‹ verwendet werden. In<br />
17
2. Die Eclipse-Entwicklungsumgebung<br />
das Feld Location muß nun die Adresse eingetragen werden, unter der das<br />
Archiv <strong>für</strong> das Plugin heruntergeladen werden kann. Diese lautet:<br />
https://dl-ssl.google.com/android/eclipse/<br />
Aus Sicherheitsgründen sollte die https-Adresse verwendet werden. Sollten<br />
sich damit Probleme ergeben, empfiehlt Android die Installation mit<br />
http zu versuchen. Nach Klicken auf den ›OK-Button‹ wird nun das Archiv<br />
geladen. Nach kurzer Zeit erscheint der Punkt ›Developer Tools‹ im Auswahlfenster.<br />
Dieser wird nun angeklickt und nach Klicken auf ›Next‹ wird<br />
zum Akzeptieren der Lizenzbestimmungen aufgefordert. Nachdem man<br />
die Lizenzbedingungen gelesen oder zumindest zur Kenntnis genommen<br />
hat, werden diese nun akzeptiert und durch Klicken auf ›Finish‹ die<br />
Installation gestartet. Nachdem nun alle Dateien installiert sind, wird zum<br />
Neustart von Eclipse aufgefordert und damit ist die Installation des Plugins<br />
abgeschlossen.<br />
2.2 Android Virtual Devices<br />
Das neue Plugin ist nun im Menüpunkt ›Window‹ zu finden. Hier wurde der<br />
Menüpunkt ›Android SDK und AVD Manager‹ hinzugefügt. Ein Klicken auf<br />
diesen Menüpunkt führt jedoch zunächst einmal zu einer Fehlermeldung.<br />
Das liegt daran, dass Eclipse noch nicht weiß, wo das Android SDK zu finden<br />
ist. Das muss nun zunächst noch unter ›Window → Preferences‹ eingestellt<br />
werden. Hier ist unter dem Punkt ›Android‹ der Pfad des SDK einzutragen.<br />
Für Windows-Systeme also z. B. ›.../Programme/Android‹, bei<br />
Linux-Systemen der Ort, an dem das SDK entpackt wurde. Dies kann z. B.<br />
das Home-Verzeichnis sein. Nachdem man den Eintrag bestätigt hat, wird<br />
überprüft, ob alle benötigte Software vorhanden ist. Für den Fall, dass etwas<br />
fehlt, wird man nun vom SDK-Manager darauf hingewiesen und kann die<br />
benötigten Teile hier installieren. Der Einfachheit halber installiert man am<br />
besten einfach alle Pakete, die zur Verfügung stehen. Das ist in der Regel<br />
eine relativ große Zahl und dauert dementsprechend lange.<br />
Nachdem nun endlich alle benötigte Software installiert wurde, braucht<br />
man <strong>für</strong> eine Applikation natürlich auch ein Endgerät, auf dem dieses Programm<br />
laufen soll. Damit wir das erste Programm <strong>für</strong> Android auch laufen<br />
18
2.2 Android Virtual Devices<br />
lassen und testen können, brauchen wir noch ein sogenanntes AVD (Android<br />
Virtual Device), also einen Emulator auf dem das Programm ausgeführt<br />
werden kann. Zu diesem Zweck wechseln wir wieder in Eclipse und rufen<br />
hier erneut den AVD-Manager im Window-Menü auf. Hier gibt es den Menüpunkt<br />
›Virtual Devices‹ unter dem wir unsere AVD erstellen können. Nach<br />
Klicken auf ›New‹ erscheint ein Dialogfeld, in dem wir die Einstellungen <strong>für</strong><br />
unser AVD vornehmen können. Für unsere erste App reicht es, einen Namen<br />
zu vergeben und die Zielplattform auszuwählen. Die Zielplattform ist das<br />
Gerät, auf dem die App später laufen soll, also z. B. ein Gerät mit Android 2.1.<br />
Das wird nun hier ausgewählt und anschließend kann durch Klicken auf<br />
›Create‹ die AVD erstellt werden.<br />
Bild 3: Der Dialog <strong>für</strong> die Erstellung eines<br />
neuen Android-Device<br />
19
3. Grundlagen der Android-Programmabarbeitung<br />
3.1 Komponenten des Systems<br />
Wie bereits erwähnt, werden Android-Programme in JAVA programmiert.<br />
Damit aus diesem Quellcode ein fertiges Programm <strong>für</strong> den Einsatz auf<br />
einem Mobiltelefon oder einem anderen System wird, muss der Programmcode<br />
vom Android-SDK zunächst übersetzt und anschließend mit<br />
den im Projekt erstellten Ressourcen zusammengepackt werden. Hieraus<br />
erstellt das SDK nun ein Android-Installationspaket. Dieses Paket ist im<br />
Wesentlichen eine Archivdatei in der die einzelnen Komponenten enthalten<br />
sind. Diese Datei trägt die Endung .apk. Eine solche .apk-Datei enthält<br />
eine komplette Applikation und ist der normale Weg, diese auf einem<br />
Android-System zu installieren. Dazu muss dieses Archiv nur auf das<br />
Gerät kopiert werden, auf dem das Programm installiert werden soll. Ein<br />
Anklicken oder Tippen startet dann den Installations prozess.<br />
Damit die Applikation keine anderen Programme bei der Arbeit stören<br />
kann, sind verschiedene Sicherheitsmechanismen im Android-Framework<br />
und dem darunterliegenden Linux-System vorgesehen. So wird z. B. jede<br />
Applikation unter einem anderen Benutzer ausgeführt, was mit dem Linux-<br />
System ohne Probleme möglich ist. Zu diesem Zweck teilt das System dem<br />
Anwenderprogramm eine einzigartige ID zu, welche nur <strong>für</strong> diese Applikation<br />
gültig und auch nur diesem System bekannt ist. Das Anwenderprogramm<br />
kann auf diese ID nicht zugreifen. Aufgrund dieser ID werden nun<br />
die Zugriffsrechte <strong>für</strong> die Applikation und ihre Ressourcen gesetzt, so dass<br />
nur dieses Programm darauf zugreifen kann.<br />
Für jede Applikation wird nun eine eigene Dalvik-Maschine gestartet, die<br />
in einem eigenen Linux-Prozess läuft. Dadurch kann kein Programm ein<br />
anderes stören oder das System beeinträchtigen. Das Android-Framework<br />
verwaltet hierbei den Lebenszyklus der Applikation, indem es einen neuen<br />
Prozess startet, sobald dieser benötigt wird. Wenn das Programm beendet<br />
wird, so sorgt Android auch wieder <strong>für</strong> die Freigabe der Systemressourcen.<br />
20
3.1 Komponenten des Systems<br />
Diese Vorgehensweise wird als principle of least privilege e bezeichnet. Das<br />
bedeutet, dass als Voreinstellung der Applikation, so gut wie keine Rechte<br />
<strong>für</strong> den Zugriff auf andere Komponenten gegeben werden.<br />
Es gibt jedoch auch Ausnahmen von dieser Regel, damit ein Android-Programm<br />
seine Daten mit einem anderen Programm teilen kann. Dazu gibt<br />
es zwei Möglichkeiten. Man kann da<strong>für</strong> sorgen, dass beide Applikationen<br />
unter einer gemeinsamen Linux-ID ausgeführt werden. Dies erlaubt dann<br />
natürlich beiden Applikationen untereinander Ressourcen freizugeben, da<br />
das System nicht unterscheiden kann, welches Programm den Zugriff vornimmt.<br />
Die zweite Möglichkeit besteht darin, vom Benutzer die Erlaubnis<br />
<strong>für</strong> den Zugriff zu erfragen. Hierzu muss die Applikation <strong>für</strong> jeden Zugriff<br />
auf Daten, wie z. B. das Telefonbuch oder Hardware-Geräte, wie die Kamera<br />
oder Bluetooth, die benötigten Rechte gewährt bekommen. Diese<br />
Rechte werden bei der Installation des Programmes vom Benutzer zugeteilt.<br />
Android-<strong>Apps</strong> können prinzipiell aus vier verschiedenen Komponenten bestehen.<br />
Das sind die vier Typen: Activity, Service, Content Provider und<br />
Broadcast Receiver. Jede dieser verschiedenen Komponenten hat einen bestimmten<br />
Anwendungsfall innerhalb des Android-Systems und einen unterschiedlichen<br />
Lebenszyklus.<br />
Das erste ist die Activity. Eine Activity stellt genau einen Bildschirm mit<br />
einem Benutzerinterface dar. Eine komplette Applikation kann also aus einer<br />
oder mehreren Activities bestehen. Jede Activity läuft zunächst einmal<br />
<strong>für</strong> sich alleine. Durch das Zusammenwirken im Android-Framework entsteht<br />
<strong>für</strong> den Benutzer jedoch der Eindruck eines zusammenhängenden<br />
Programms. Eine Activity kann aber auch von einem anderen Programm<br />
aufgerufen werden, sofern sie es erlaubt. So ist es z. B. möglich, ein Photo<br />
an ein Mailprogramm zu übergeben und von diesem versenden zu lassen.<br />
Man programmiert also nicht alles in das Kameraprogramm, sondern nutzt<br />
einfach die Funktionen bereits vorhandener Software aus.<br />
Eine weitere Komponente des Android-Framework stellen die Services dar.<br />
Hierbei handelt es sich um Prozesse, welche kein Benutzerinterface benötigen<br />
und im Hintergrund ablaufen, um entweder sehr lange laufende Programmteile<br />
auszuführen oder mit anderen Prozessen zu kommunizieren. Ein<br />
Service kann von einer anderen Komponente gestartet werden und kann<br />
21
3. Grundlagen der Android-Programmabarbeitung<br />
anschließend Daten mit dieser, oder einer anderen Komponente an ihn angebundenen,<br />
Daten auszutauschen.<br />
Bei einem Content Provider handelt es sich um eine Komponente, welche<br />
den Zugriff auf Daten ermöglicht. Dabei ist es egal, ob es sich um Daten<br />
in einer Datei, einer Datenbank oder dem Internet handelt. Die Applikationen<br />
können mit Hilfe des Content Provider auf die Daten zugreifen und<br />
brauchen sich dabei nicht um den Ort oder das Format der Daten zu kümmern.<br />
So kann ein Programm z. B. über ein einheitliches Interface auf das<br />
Adressbuch des Gerätes zugreifen und daraus Informationen beziehen.<br />
Natürlich auch hier nur, wenn ihm die passenden Rechte gewährt wurden.<br />
Die vierte Komponente eines Android-Systems ist der Broadcast Receiver.<br />
Dieser Receiver arbeitet mit Meldungen des Systems und reagiert darauf,<br />
wenn er über die entsprechende Funktion verfügt. Broadcast Receiver haben<br />
in der Regel keine großen eigenen Programmfunktionen und sind nur<br />
da<strong>für</strong> zuständig, eine bestimmte Aktion anzustoßen, sobald ein Ereignis<br />
geschieht, wie z. B. der Empfang einer SMS oder auch das Ver löschen der<br />
Displaybeleuchtung.<br />
Eine Besonderheit des Android-Systems besteht darin, dass eine Applikation<br />
Komponenten einer anderen Applikation starten kann. Da dieses nicht<br />
direkt möglich ist, muss hierzu eine Nachricht über das System geschickt<br />
werden. Diese Systemnachricht heißt ›Intent‹ und veranlasst das System,<br />
die Komponente zu aktivieren.<br />
3.2 Die Android-Manifest-Datei<br />
Damit das Android-System eine Applikation starten kann, muss es natürlich<br />
zunächst einmal wissen, welche Dateien und Komponenten zu dieser<br />
Applikation gehören. Zu diesem Zweck gibt es die Datei AndroidManifest.<br />
xml. Diese Datei muss im Hauptverzeichnis des Projektes zu finden sein<br />
und in ihr müssen alle Komponenten der Applikation deklariert werden.<br />
Neben diesen stehen in dieser Datei noch einige andere Informationen, wie<br />
z. B. der verwendete API-Level und die Rechte, welche die Applikation benötigt.<br />
Ein Beispiel <strong>für</strong> eine Android-Manifest-Datei kann wie folgt aussehen.<br />
22
3.2 Die Android-Manifest-Datei<br />
Stichwortverzeichnis<br />
A<br />
ADT-Plugin 55<br />
AlarmManager 97<br />
AnalogClock 88<br />
Android-User Interface 30<br />
Android-Virtual Device 18<br />
API 22, 23, 24, 25,<br />
26, 156<br />
Audioausgang 192<br />
Audiogenerator 180<br />
Audio-Recorder 193<br />
B<br />
Beschleunigung 155, 156, 158,<br />
159, 166<br />
Bitmap 134<br />
BroadcastReceiver 93<br />
C<br />
Canvas 130<br />
Chronometer 87, 88<br />
CSS 242<br />
D<br />
Datenbank 217<br />
DigitalClock 89<br />
drawText() 133<br />
DrawView 129<br />
E<br />
Eclipse 16<br />
254<br />
Environment.getExternalStorage-<br />
State() 105<br />
event 126, 131, 132, 159<br />
Extended Markup Language 31<br />
F<br />
finish() 185<br />
FTP 201<br />
G<br />
GPS 118<br />
gpx-Format 149<br />
GPX-Standard 155<br />
gravity 88<br />
H<br />
HTML 242<br />
I<br />
Intent 85<br />
Internet 204<br />
J<br />
JAVA-Development-Kit 16<br />
Javascript 242<br />
K<br />
Kernel 10<br />
Klinkenstecker 191, 192
Kommandozeile 234<br />
Kurvenform 183<br />
L<br />
Layout 56<br />
LED 100<br />
Lesezugriff 105<br />
Linux 233<br />
ListView 68<br />
LocationManager 122<br />
LocationService 122<br />
M<br />
MediaPlayer 212<br />
Mikrofoneingang 192<br />
MySQL 216<br />
N<br />
Namespace 55<br />
Network 232<br />
NMEA 126<br />
Notification 100<br />
O<br />
onClick 65<br />
OnClickListener 63<br />
onCreate 52<br />
onLocationChanged() 123<br />
onReceive() 97<br />
onSensorChanged() 158, 159,<br />
163<br />
onTouchListener 130<br />
Open Handset Alliance 9<br />
P<br />
Paint 130<br />
PHP 220<br />
Port 232<br />
Projektbaum 52<br />
Prozess 236<br />
Q<br />
Quick Fix 104<br />
R<br />
Receiver 115<br />
Root 233<br />
Runtime 236<br />
Stichwortverzeichnis<br />
S<br />
SD-Karte 149<br />
Sensoren 155, 156, 158, 159,<br />
166, 167<br />
setContentView() 30<br />
Shell 236<br />
Sinuskurve 183<br />
SMS 114<br />
Socketverbindung 227<br />
Software Development Kit 16<br />
Software Stack 10<br />
Speicherkarte 102<br />
SQL 217<br />
startActivity 85<br />
Stream 236<br />
strings.xml 55<br />
Superuser 233<br />
System 233<br />
Systeminformationen 236<br />
255
Stichwortverzeichnis<br />
T<br />
Taktfrequenz 234<br />
TELNET 125, 232<br />
TextSize 87<br />
Thread 186<br />
TimePicker 93<br />
Tonerzeugung 180<br />
V<br />
Verzeichnis 236<br />
Vibrationsalarm 95<br />
Video 209<br />
256<br />
VideoView 208<br />
W<br />
Webcam 201<br />
WebView 212<br />
Wegpunkt 154<br />
Wiki 212<br />
X<br />
XML-Header 55
Stefan Schwark<br />
Android<br />
<strong>Apps</strong> <strong>programmieren</strong> <strong>–</strong> <strong>Schritt</strong> <strong>für</strong> <strong>Schritt</strong><br />
Smartphones und Tablet-Computer mit dem Betriebssystem Android fi nden immer weitere<br />
Verbreitung. Die Anzahl der Anwendungsprogramme <strong>–</strong> die sogenannten Applikationen<br />
oder kurz <strong>Apps</strong> <strong>–</strong> mit denen sich die Geräte individuell an die Vorlieben und Wünsche<br />
ihrer Benutzer anpassen lassen, steigt täglich an. Die ständig besser werdende technische<br />
Ausstattung der Geräte erlaubt inzwischen Anwendungen, die vor wenigen Jahren<br />
nur Desktop-Computern oder spezieller Hardware vorbehalten waren. Mittlerweile kann<br />
jedes Smartphone seine Position bestimmen, Videos aufnehmen und vieles andere.<br />
Man ist bei der Individualisierung seines Smartphones aber nicht auf fi x und fertige Applikationen<br />
beschränkt. Es ist einfacher als man denkt, Android-Geräte selber zu <strong>programmieren</strong><br />
und eigene <strong>Apps</strong> zu schreiben.<br />
Dieses Buch bietet eine Einführung in die Programmierung von <strong>Apps</strong> auf Android-Geräten.<br />
Es erklärt leicht nachvollziehbar die Funktionsweise des Android-Systems und <strong>Schritt</strong> <strong>für</strong><br />
<strong>Schritt</strong> die Programmierung von Applikationen.<br />
Anhand vieler Beispiele werden die verschiedensten Anwendungsmöglichkeiten gezeigt.<br />
Das reicht von einfachen Rechenprogrammen über die Abfrage von Sensoren und GPS-<br />
Daten bis zur Programmierung von Applikationen <strong>für</strong> die Internet-Kommunikation. Neben<br />
der Erstellung von Applikationen in der Programmiersprache JAVA wird auch gezeigt, wie<br />
<strong>Apps</strong> mit Hilfe von Javascript oder PHP-Skripten programmiert werden können.<br />
ISBN 978-3-89576-252-9<br />
<strong>Elektor</strong>-Verlag GmbH<br />
52072 Aachen<br />
www.elektor.de