Android-Programmierung: Kurz & Gut

Inhaltsverzeichnis
Android-Programmierung: Kurz & Gut

Android-Programmierung: Kurz & Gut

Jörg Staudemeyer

Inhaltsverzeichnis

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

Vorwort

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.

Teil I. Android-Grundlagen