Vorwort
I. Android-Grundlagen
1. Die Plattform
Architektur
Versionsgeschichte
Android-Apps
Bestandteile
Java-Programme
Ressourcen
Das Manifest
Funktionsweise
Betrieb in der Sandbox
Berechtigungen
Komponentenmodell
2. Die Entwicklungsumgebung
Das Android-SDK
Voraussetzungen
Installation
Startpaket herunterladen und auspacken
Pfad setzen
IDE-Unterstützung
Eclipse-ADT
Weitere IDEs
Der SDK-Manager
Android-Plattformpakete laden
Tools
Plattformversionen
Extras
Was davon brauchen Sie?
Das SDK aktualisieren
Virtuelle Geräte
3. Der Entwicklungszyklus
Ein neues Projekt anlegen
Projekttypen
Projektparameter
Verzeichnisstruktur
Programmieren
Java-Programme
Anwendungsoberflächen
Manifest und XML-Ressourcen
Android Lint
Der Build-Prozess
Starten und Debuggen
Ein neues AVD
Start mit dem AVD
Start auf einem externen Gerät
Debuggen
Testen
Testprojekte
Testprojekte erstellen
Testklassen schreiben
Tests ausführen
Weitere Test-Tools
Veröffentlichen
Vorbereitungen für die Veröffentlichung
Eine Release-Version erstellen
Veröffentlichen auf einer Website
Veröffentlichen über einen App-Markt
Aktualisierungen
II. Mit Android programmieren
4. Bevor es losgeht
Eine einfache Beispiel-App
Das Manifest
Die Haupt-Activity
Die Ressourcen
Intents und Parcels
Die Rolle der Intents
Inhalt eines Intents
Die Zielkomponente
Aktion und Daten
Extra-Daten
Kategorien und Flags
Intentfilter
Pending Intents
Parcels
Zulässige Typen
Parcelables
Der Kontext
Hinweise zur Programmierung
Multithreading
Logging
Die Unterstützungsbibliothek
Packages
Erweiterungen bestehender Klassen
Parallelimplementierungen
Neue Features
Google Play Services
5. Komponenten
Eigene Komponenten implementieren
Ereignismethoden und Lebenszyklus
Komponenten und Manifest
Tags für Komponenten
Gemeinsame Attribute
Untergeordnete Tags
Activities
Funktionsweise
Lebenszyklus einer Activity
Backstack und Tasks
Anmeldung im Manifest
Alias-Activities
Implementierung
Lebenszyklusmethoden
onCreate
onResume
onPause
Zwischenspeichern des aktuellen Zustands
Start und Ende
Eine Activity starten
Eine Activity beenden
Vorgefertigte Activities
Fragmente
Implementierung
Lebenszyklus
Einbindung in die Activity
Kommunikation zwischen Fragmenten und der Activity
Fragmente ohne Oberfläche
Spezielle Fragmente
Services
Funktionsweise
Anmeldung im Manifest
Implementierung
Start und Ende
Einen Service starten
Einen Service beenden
Selbst-Stopp
Vordergrund-Services
Der IntentService
Broadcast-Receiver
Funktionsweise
Anmeldung
Anmeldung im Manifest
Dynamische Anmeldung
Implementierung
Broadcast-Versand
Broadcast-Varianten
Geordnete (synchrone) Broadcasts
Sticky Broadcasts
Lokale Broadcasts
Content-Provider
Funktionsweise
Der Content-URI
Content-Werte
Abfragekriterien
Anmeldung
Implementierung
Der URI-Matcher
onCreate
getType
insert
update
delete
query
Signalisierung von Inhaltsänderungen
Aufruf
Content-Provider im Android-System
6. Ressourcen
Struktur und Form
Ressourcenverzeichnisse
Verzeichnisvarianten
XML-Ressourcendateien
Auf Ressourcen zugreifen
Referenzierung aus Java-Programmen – die Klasse R
Referenzierung aus anderen Ressourcen
Einfache Ressourcentypen
Struktur der einfachen Ressourcen
Einfache Ressourcen im Detail
Der Ressourcentyp string
Der Ressourcentyp plurals
Freie Ressourcen (Assets)
7. GUI-Gestaltung
Layout-Definition
Arten von Layoutelementen
Layout mit XML
Ein Layout aufbauen
Referenzierung einzelner Views
Layout-Definition mit Java
View-Attribute
Dimensionsangaben
Bemaßung in XML
Bemaßung in Java
Style und Themes
Anwendung als Style
Anwendung als Theme
View-Ereignisse
Layout-Views
Layout-Parameter
Layout-Parameter in XML
Layout-Parameter in Java
Allgemeine Layout-Parameter
LinearLayout
Spezielle Attribute des LinearLayout
Spezielle Layout-Parameter für Kind-Views im LinearLayout
RelativeLayout
Spezielle Layout-Parameter für Kind-Views im RelativeLayout
TableLayout und TableRow
Spezielle Attribute des TableLayout
Spezielle Layout-Parameter für Kind-Views in der TableRow
GridLayout
Spezielle Attribute des GridLayout
Spezielle Layout-Parameter für Kind-Views im GridLayout
Dekorator-Views
FrameLayout
Spezielle Attribute des FrameLayout
Spezielle Layout-Parameter für Kind-Views im FrameLayout
ScrollView
Spezielle Attribute der ScrollView
Elementare Views
TextView
Spezielle Attribute der TextView
ImageView
Spezielle Attribute der ImageView
Space
Button-Views
Button
ImageButton
Checkbox, ToggleButton, Switch
RadioButton
Texteingabe-Views
Eingabemethode
Eingabearten
Eingabeaktionen
EditText
Spezielle Parameter des EditText
Auswahl-Views
Spinner
DatePicker
Spezielle Attribute des DatePicker
TimePicker
Adapter-Views
Datenadapter
ListView
Spezielle Parameter der ListView
GridView
Spezielle Parameter der GridView
8. Desktop-Funktionen
Menüs
Menü-Ressourcen
Optionsmenüs
Kontextmenüs
Dialoge
Einen Dialog starten
AlertDialog
ProgressDialog
Mitteilungen
Toasts
Statusmeldungen
9. Datenhaltung
Dateien im internen Speicher
Dateien im externem Speicher
Status des Mediums prüfen
Verzeichnisse auf dem externen Medium
Anwendungsspezifische Daten
Anwendungsübergreifende Dateien
Shared Preferences
Auf die Präferenzdaten zugreifen
Präferenzdaten lesen
Präferenzdaten schreiben
Auf Änderungen in Präferenzdaten reagieren
SQLite-Datenbanken
Der SQLite-Helper
Das Datenbankobjekt
Datenbankabfragen
Der Cursor
10. Referenz
Android-Tools
SDK-Tools
Plattform-Tools
API-Übersichten
Java-Packages
Android-eigene Packages
Unterstützungsbibliothek
Google-spezifische Bibliotheken
Google Play Services
Fremdbibliotheken
Systemdienste
Standard-Aktionen
Activity-Aktionen
Broadcast-Aktionen
Manifest
Standard-Berechtigungen
Geräteeigenschaften
Stichwortverzeichnis
Android ist eine Plattform für die Erstellung und den Betrieb von Anwendungen auf (mehr oder weniger) mobilen Geräten wie Smartphones, Tablet-Computern, E-Book-Readern, Fernsehern und vielen anderen Dingen, von denen wir heute vielleicht noch gar keine Vorstellung besitzen. Android wird als Open Source-Projekt von der Open Handset Alliance (http://www.openhandsetalliance.com/) betrieben, der neben dem Suchmaschinenbetreiber Google als treibender Kraft auch zahlreiche Mobilnetzbetreiber und Marketingfirmen sowie Software-, Chip- und Gerätehersteller angehören. Aufgrund des boomenden Marktes für die typischen Geräte, auf die Android zugeschnitten ist, bekommt diese Plattform eine immer größere Bedeutung, und dadurch wendet sich auch eine immer größer werdende Zahl von Entwicklern diesem spannenden und zukunftsträchtigen Thema zu.
Android-Programmierung – kurz & gut wendet sich an Programmierer, die sich das für die Entwicklung von Android-Apps erforderliche Grundlagenwissen schnell aneignen möchten, ohne Lehrbücher durchzuarbeiten, die Hunderte von Seiten stark sind. Das Büchlein führt Sie kurz und knapp in die wichtigsten technischen Zusammenhänge und Vorgehensweisen ein und bietet eine Kurzreferenz für die wichtigsten zur Android-Entwicklungsumgebung gehörenden Begriffe, Definitionen, APIs usw. Dünn, wie es ist, kann es keine umfassende Entwicklerdokumentation sein – um Einzelheiten und fortgeschrittene Anwendungsmöglichkeiten nachzuschlagen, werden Sie auch weiterhin auf die ausführliche Dokumentation auf der Android-Website (http://developer.android.com) zurückgreifen müssen. Aber dieses Buch kann Ihnen einen schnellen Einstieg in das Thema sowie einen Überblick über die Möglichkeiten bieten, die Ihnen beim Erstellen von Anwendungen für diese Plattform zur Verfügung stehen.
Darüber hinaus kann dieses Buch auch keine Einführung in elementare Grundlagen sein. Um es erfolgreich nutzen zu können, sollten Sie daher über gewisse Vorkenntnisse verfügen (die Sie sich natürlich anhand umfangreicher verfügbarer Literatur aneignen können). In erster Linie gehört dazu ein solides Grundwissen über die Java-Programmierung (Java SE) im Speziellen und die moderne Rechner-, Netzwerk- und Datenbanktechnik im Allgemeinen. Daneben sollten Sie sich aber auch schon etwas in der Benutzung von Android-Geräten auskennen (so ist beispielsweise der Besitz eines einfachen, aber halbwegs aktuellen Android-Telefons zum Ausprobieren durchaus zu empfehlen). Und schließlich können einige Erfahrungen mit der Java-Entwicklungsumgebung Eclipse nicht schaden.
Die Aktualität des Themas mobile computing bringt es mit sich, dass Android permanent um neue Fähigkeiten erweitert wird, was sich im regelmäßigen Erscheinen neuer Versionen des Betriebssystems äußert. Beim Verfassen der zweiten Auflage dieses Buchs ist die Android-Version 4.3 (»Jelly Bean«) aktuell, und auf diesen Stand beziehen wir uns auch. Dabei weisen wir aber auch auf Änderungen und Erweiterungen der Bibliotheken hin, die seit der relativ weit verbreiteten Version 2.2 (»Froyo«) eingeführt worden sind, damit Sie auch auf die Benutzer älterer Geräte Rücksicht nehmen können (siehe auch den Abschnitt „Versionsgeschichte“ in Kapitel 1).
Das Buch gliedert sich in drei Teile. Der erste Teil umfasst eine Einführung in die grundlegenden Techniken von Android: die Architektur, die zugehörige Entwicklungsumgebung, die prinzipielle Funktionsweise von Android-basierten Anwendungen und den Entwicklungsprozess. Im zweiten Teil beschäftigen wir uns mit dem Android-Framework, den Möglichkeiten, die es uns zur Verfügung stellt, und damit, wie man mit diesen umgeht. Der dritte Teil enthält schließlich eine Reihe von Übersichten zu weiterführenden Möglichkeiten und zum Nachschlagen bei der täglichen Arbeit.
Wenn das Thema Android-Programmierung für Sie noch neu ist, lesen Sie am besten die beiden ersten Teile komplett, um sich das nötige Hintergrundwissen für die Arbeit mit Android zu erarbeiten. Andernfalls können Sie auf den gesamten Inhalt des Buchs entsprechend Ihren Vorkenntnissen und den Anforderungen Ihres aktuellen Projekts zugreifen.
Wenn man beginnt, sich mit der Anwendungsentwicklung unter Android zu beschäftigen, trifft man auf eine Menge Begriffe, die entweder Android-spezifisch sind oder die im Android-Umfeld abweichend von anderen Zusammenhängen verwendet werden. Um Ihnen den Einstieg zu erleichtern, finden Sie unter http://www.oreilly.de/catalog/androidprogpr2ger/chapter ein Glossar, in dem die wichtigsten Begriffe aufgelistet und kurz erläutert werden.