O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Android Programmierung, 2nd Edition

Book Description

Android hat hierzulande die einstige Vorreiterstellung von Apple längst geknackt. Bei den Smartphones liegt das Betriebssystem von Google weit vorn, und auch bei den Tablets holt Android zügig auf. Zeit also, sich mit der App-Entwicklung für Android zu beschäftigen! Dieses Buch wendet sich an Leser, die die Programmierung von Android-Apps von Grund auf lernen und auf professionellem Niveau betreiben möchten. Es richtet sich an Java-Entwickler und Leser mit Kenntnissen in einer anderen objektorientierten Sprache.

Table of Contents

  1. Vorwort
    1. Wie dieses Buch aufgebaut ist
    2. Typografische Konventionen
    3. Codebeispiele
    4. Verwendung der Codebeispiele
    5. Danksagungen
  2. I. Werkzeuge und Grundlagen
    1. 1. Das Android-SDK
      1. Das Android-SDK und die Voraussetzungen installieren
        1. Das Java Development Kit (JDK)
        2. Das ADT-Bundle installieren
        3. Die Eclipse-IDE
        4. Das Android-SDK
        5. Dem SDK Build Targets hinzufügen
        6. Das Android Developer Tools-Plugin für Eclipse (ADT)
          1. Mit dem »Install New Software«-Assistenten das ADT-Plugin herunterladen und installieren
          2. Das ADT-Plugin konfigurieren
      2. Testlauf: Prüfen, ob die Installation funktioniert
        1. Ein Android-Projekt erstellen
        2. Ein Android Virtual Device (AVD) erstellen
        3. Ein Android-Programm auf einem AVD ausführen
        4. Ein Programm auf einem Android-Gerät ausführen
        5. SDK-Probleme lösen: Keine Build-Ziele
      3. Komponenten des SDKs
        1. Die Android Debug Bridge (adb)
        2. Der Dalvik Debug Monitor Server (DDMS)
        3. Komponenten des ADT Eclipse-Plugins
          1. Der Android Layout Editor
          2. Der Android Manifest Editor
          3. XML-Editoren für andere Android XML-Dateien
          4. Android-Apps erstellen
          5. Android-Apps ausführen und debuggen
          6. Das DDMS
        4. Android Virtual Devices (AVDs)
          1. QEMU
          2. Der Android Virtual Device Manager
        5. Andere SDK-Werkzeuge
          1. Hierarchy Viewer
          2. Layoutopt
          3. Monkey
          4. sqlite3
          5. keytool
          6. Zipalign
          7. Draw 9-Patch
          8. android
      4. Aktualisierungen
        1. Das Android-SDK aktuell halten
        2. Eclipse und das ADT-Plugin aktuell halten
        3. Das JDK aktuell halten
      5. Beispielcode
        1. SDK-Beispielcode
        2. Beispielcode aus diesem Buch
      6. Über das Lesen von Code
    2. 2. Java für Android
      1. Android verändert das clientseitige Java
      2. Das Java-Typsystem
        1. Elementare Typen
        2. Objekte und Klassen
        3. Objekterstellung
        4. Die Klasse Object und ihre Methoden
        5. Objekte, Vererbung und Polymorphie
        6. Finale und statische Deklarationen
        7. Abstrakte Klassen
        8. Interfaces
        9. Ausnahmen
        10. Das Java-Collections-Framework
          1. Collection-Interface-Typen
          2. Collection-Implementierungstypen
          3. Java-Generics
        11. Garbage-Collection
      3. Geltungsbereiche
        1. Java-Packages
        2. Zugriffsmodifizierer und Kapselung
      4. Idiome der Java-Programmierung
        1. Typsicherheit in Java
          1. Kapselung
          2. Getter und Setter
        2. Anonyme Klassen nutzen
        3. Modulare Programmierung in Java
        4. Elementare Nebenläufigkeit mit mehreren Threads in Java
        5. Synchronisierung und Thread-Sicherheit
        6. Thread-Steuerung mit den Methoden wait() und notify()
        7. Synchronisierung und Datenstrukturen
    3. 3. Die Zutaten einer Android-Anwendung
      1. Traditionelle Programmiermodelle im Vergleich zur Android-Programmierung
      2. Activities, Intents und Tasks
      3. Weitere Android-Komponenten
        1. Service
        2. Content-Provider
          1. Einen Content-Provider nutzen
          2. Content-Provider und das Internet
        3. BroadcastReceiver
      4. Der Lebenszyklus von Komponenten
        1. Der Activity-Lebenszyklus
        2. Software auf Android portieren
      5. Statische Anwendungsressourcen und Kontext
        1. Java-Quellen organisieren
        2. Ressourcen
        3. Das Anwendungsmanifest
        4. Initialisierungsparameter in »AndroidManifest.xml«
        5. Eine Android-Anwendung verpacken: die .apk-Datei
      6. Die Android-Laufzeitumgebung für Anwendungen
        1. Die Dalvik-VM
        2. Zygote: Einen neuen Prozess abspalten
        3. Sandboxing: Prozess und Benutzer
        4. Die Android-Bibliotheken
      7. Android erweitern
        1. Das Android Application Template
        2. Überschreiben und Callbacks
        3. Polymorphie und Komposition
        4. Android-Klassen erweitern
      8. Nebenläufigkeit in Android
        1. AsyncTask und der UI-Thread
        2. Threads in einem Android-Prozess
      9. Serialisierung
        1. Java-Serialisierung
        2. Parcelable
        3. Klassen, die Serialisierung unterstützen
        4. Serialisierung und der Anwendungslebenszyklus
    4. 4. Ihre Anwendung in die Hände des Benutzers bringen
      1. Anwendungssignierung
        1. Asymmetrische Verschlüsselung und Signierung
        2. Wie Signaturen Softwarenutzer, Hersteller und sichere Verbindungen schützen
          1. Selbst signierte Zertifikate für Android-Software
        3. Eine Anwendung signieren
          1. Debugging-Zertifikate
          2. Ein selbst signiertes Zertifikat erstellen
          3. Bewahren Sie Ihr Signierzertifikat gut auf
          4. Eine Anwendung mit einem selbst signierten Zertifikat signieren
      2. Eine App auf Google Play bringen
        1. Ein offizieller Android-Entwickler werden
        2. Anwendungen auf Google Play hochladen
        3. Zahlungen erhalten
      3. Alternativen für den Vertrieb
        1. Amazons App-Shop für Android
      4. Google Maps-API-Schlüssel
      5. Die API-Level-Kompatibilität angeben
      6. Kompatibilität mit vielen Displays
        1. Die Kompatibilität für Bildschirmgrößen testen
        2. Resource Qualifier und Bildschirmgrößen
    5. 5. Eclipse bei der Android-Softwareentwicklung
      1. Eclipse-Konzepte und Terminologie
        1. Plugins
        2. Workspaces
        3. Java-Umgebungen
          1. Das Java Runtime Environment von Eclipse
          2. Der Java-Compiler
          3. Die Application Runtime
        4. Projekte
        5. Builder und Artefakte
        6. Erweiterungen
        7. Verknüpfungen
      2. Eclipse-Views und Perspektiven
        1. Der »Package Explorer«-View
        2. Der »Task List«-View
        3. Der »Outline«-View
        4. Der »Problems«-View
      3. Java-Programmierung in Eclipse
        1. Java-Code bearbeiten und Codevervollständigung
        2. Refactoring
      4. Eclipse und Android
      5. Bugs verhindern und den Code sauber halten
        1. Statische Analysierer
          1. FindBugs
        2. Android-Code einer statischen Analyse unterziehen
        3. Die Grenzen der statischen Analyse
      6. Eclipse-Eigenarten und Alternativen
  3. II. Das Android-Framework
    1. 6. Einen View aufbauen
      1. Die Android-GUI-Architektur
        1. Das Modell
        2. Der View
        3. Der Controller
        4. Die Bausteine zusammensetzen
      2. Eine grafische Benutzerschnittstelle zusammenbauen
      3. Den Controller einbinden
        1. Das Modell überwachen
        2. Touch-Events überwachen
        3. Mehrere Zeiger und Gesten
        4. Tasten-Events überwachen
        5. Einen Event-Handler wählen
        6. Fortgeschrittene Verknüpfungen: Focus und Threading
      4. Das Menü und die Aktionsleiste
      5. View-Debugging und -Optimierung
    2. 7. Fragmente und die Unterstützung unterschiedlicher Plattformen
      1. Ein Fragment erstellen
      2. Fragment-Lebenszyklus
      3. Der Fragment-Manager
      4. Fragmenttransaktionen
      5. Die Support Library
      6. Fragmente und Layout
    3. 8. 2D- und 3D-Grafiken zeichnen
      1. Eigene Widgets gestalten
        1. Layout
          1. Vermessung
          2. Anordnung
        2. Canvas-Zeichnung
          1. Text zeichnen
          2. Matrix-Transformationen
        3. Drawables
        4. Bitmaps
      2. Augenschmaus
        1. Schatten, Gradienten, Filter und Hardware-Beschleunigung
        2. Animation
          1. Übergangsanimation
          2. Hintergrundanimation
          3. Surface-View-Animation
        3. OpenGL-Grafik
    4. 9. Datenverarbeitung und -speicherung
      1. Einführung in relationale Datenbanken
      2. SQLite
      3. Die Sprache SQL
        1. SQL-Befehle zur Datendefinition
          1. SQLite-Typen
          2. Datenbank-Constraints
        2. SQL-Datenmanipulationsbefehle
        3. Weitere Datenbankkonzepte
        4. Datenbanktransaktionen
        5. Beispiele für Datenbankmanipulationen mit sqlite3
      4. SQL und das datenbankzentrierte Datenmodell für Android-Anwendungen
      5. Die Android-Datenbankklassen
      6. Datenbankdesign für Android-Anwendungen
        1. Grundlegende Strukturen der SimpleVideoDbHelper-Klasse
      7. Die Datenbank-API nutzen: MJAndroid
        1. Android und Social Networking
        2. Der Quellordner (src)
        3. Die Anwendung laden und starten
        4. Datenbankabfragen und Daten aus der Datenbank lesen
          1. Die query-Methode nutzen
        5. Die Datenbank verändern
          1. Daten in die Datenbank einfügen
            1. Einfügen mit der insert-Methode
            2. Einfügen mit der execSQL-Methode
          2. Daten aktualisieren, die sich bereits in der Datenbank befinden
            1. Die update-Methode
            2. Die execSQL-Methode
          3. Daten aus der Datenbank löschen
            1. Die delete-Methode
            2. Die execSQL-Methode
  4. III. Ein Anwendungsgerüst für Android
    1. 10. Ein Framework für ordentliche Anwendungen
      1. Den Lebenszyklus visualisieren
        1. Den Activity-Lebenszyklus visualisieren
          1. Speicherrückgewinnung und Lebenszyklen
          2. Lebenszyklusmethoden der Klasse Activity
          3. Instanzzustände speichern und wiederherstellen
          4. Konfigurationsänderungen und der Activity-Lebenszyklus
          5. Untergeordnete Lebenszyklusmethoden der Activity-Klasse
      2. Der Fragment-Lebenszyklus
      3. Die Activity-Klasse und ordentliche Anwendungen
        1. Der Activity-Lebenszyklus und die User Experience
      4. Lebenszyklusmethoden der Klasse Application
    2. 11. Eine Benutzerschnittstelle aufbauen
      1. Übergeordnetes Design
        1. Fragment, Activity und ein skalierbares Design
      2. Grafische Bearbeitung der Benutzerschnittstelle
      3. Mit einem leeren Blatt beginnen
      4. Das Layout der Fragmente
        1. Die Fragmente mit dem grafischen Editor gestalten
        2. Mehrere Layouts
      5. Ein skalierbares UI in Komponenten zerlegen
        1. Entscheidungen zur Bildschirmgröße und -auflösung
        2. An Fragment-Klassen delegieren
      6. Activity, Fragment, Aktionsleiste und mehrere Layouts zur Zusammenarbeit bringen
        1. Die Aktionsleiste
        2. Tabs und Fragmente
      7. Die andere Activity
    3. 12. Content-Provider nutzen
      1. Wie Content-Provider funktionieren
        1. Einen Content-Provider implementieren
        2. Video-Betrachtung mit Finch
          1. Die einfache Video-Datenbank
          2. Die Struktur der einfachen Version des Codes
      2. Die öffentliche Provider-API implementieren
        1. Den CONTENT_URI definieren
        2. Die Spaltennamen erstellen
        3. Die Strings für die Spaltenangabe deklarieren
      3. Einen Content-Provider schreiben und integrieren
        1. Allgemeine Content-Provider-Aufgaben
          1. ContentProvider erweitern
      4. Dateimanagement und Binärdaten
      5. Android-MVC und Content-Observation
      6. Ein vollständiger Content-Provider: Der SimpleFinchVideoContentProvider-Code
        1. Die Instanzvariablen der Klasse SimpleFinchVideoContentProvider
        2. Die Methode onCreate implementieren
        3. Die Methode getType implementieren
        4. Die Provider-API implementieren
          1. Die query-Methode
          2. Die insert-Methode
          3. Die update-Methode
          4. Die delete-Methode
        5. Ermitteln, wie oft Beobachter zu benachrichtigen sind
      7. Ihren Content-Provider deklarieren
    4. 13. Ein Content-Provider als Fassade für einen REST-basierten Webservice
      1. REST-basierte Android-Anwendungen entwickeln
      2. Ein »Netzwerk-MVC«
      3. Zusammenfassung der Vorteile
      4. Codebeispiel: YouTube-Videoinhalte dynamisch anzeigen und cachen
      5. Die Struktur des Quellcodes für das Finch-YouTube-Videobeispiel
      6. Die Videoanwendung Schritt für Schritt
      7. Schritt 1: Das UI nimmt Benutzereingaben entgegen
      8. Schritt 2: Unser Controller überwacht Events
      9. Schritt 3: Der Controller führt mit einer ManagedQuery einen Request auf Content-Provider bzw. Modell aus
      10. Schritt 4: Den REST-Request implementieren
        1. Konstanten und Initialisierung
        2. Die Datenbank erstellen
        3. Eine netzwerkbasierte query-Methode
          1. RESTfulContentProvider: Eine REST-Hilfsklasse
            1. UriRequestTask
            2. YouTubeHandler
        4. Die INSERT-Operation und ResponseHandler
        5. Dateiverwaltung: Thumbnails speichern
  5. IV. Fortgeschrittenere Themen
    1. 14. Suche
      1. Die Suchschnittstelle
        1. Grundlage der Suche
          1. Die Suchlogik
            1. Indexbasierte Suchlogik
            2. Datenbankbasierte Suchlogik
          2. Konfiguration für eine Anwendung mit Suchfunktion
          3. Such-Activity
        2. Suchdialog
        3. Such-Widget
      2. Suchvorschläge
        1. Verlaufsbasierte Suchvorschläge
        2. Eigene Suchvorschläge
    2. 15. Location und Mapping
      1. Positionsbasierte Dienste
      2. Mapping
      3. Die Google Maps-Activity
      4. MapView und MapActivity
      5. Mit MapViews arbeiten
      6. MapView- und MyLocationOverlay-Initialisierung
      7. Eine MapActivity aussetzen und wiederaufnehmen
      8. Die Karte mit Menübuttons steuern
      9. Die Karte mit dem Keypad steuern
      10. Positionsdaten ohne Karten
        1. Die Manifest- und Layoutdateien
        2. Eine Verbindung mit einem Location-Provider herstellen und Positionsdaten beziehen
        3. Die emulierte Position aktualisieren
          1. Die Position mit geo aktualisieren
          2. Die Position mit dem DDMS aktualisieren
      11. StreetView
    3. 16. Multimedia
      1. Audio und Video
      2. Audio- und Videowiedergabe
        1. Audiowiedergabe
          1. MediaPlayer-Audiowiedergabe
          2. AudioTrack-Audiowiedergabe
        2. Videowiedergabe
      3. Audio- und Videoaufzeichnung
        1. Audioaufzeichnung
          1. MediaRecorder-Audioaufzeichnung
          2. Intent-Audioaufzeichnung
          3. AudioRecorder-Audioaufzeichnung
        2. Videoaufzeichnung
          1. MediaRecorder-Videoaufzeichnung
          2. Intent-Videoaufzeichnung
      4. Gespeicherte Medieninhalte
    4. 17. Sensoren, NFC, Sprache, Gesten und Barrierefreiheit
      1. Sensoren
        1. Position
          1. Beschleunigungssensor
          2. Gyroskop
          3. Rotationsvektor
          4. Lineare Beschleunigung
          5. Gravitation
        2. Andere Sensoren
      2. Near Field Communication (NFC)
        1. Ein Tag lesen
        2. An ein Tag schreiben
        3. Der P2P-Modus und Beam
          1. API-Levels 10–13
          2. Beam: API-Level 14+
      3. Gesteneingabe
      4. Barrierefreiheit
    5. 18. Kommunikation, Identität, Synchronisierung und Social Media
      1. Kontaktkonten
      2. Authentifizierung und Synchronisierung
        1. Authentifizierung
        2. Synchronisierung
      3. Bluetooth
        1. Der Bluetooth-Protokoll-Stack
          1. Bluetooth-spezifische Protokolle und adoptierte Protokolle
        2. BlueZ: Die Linux Bluetooth-Implementierung
        3. Bluetooth in Android-Anwendungen nutzen
          1. Bluetooth und die erforderlichen I/O-Klassen
          2. Die DeviceListActivity-Klasse
          3. Die Klasse BtConsoleActivity
    6. 19. Das Android Native Development Kit (NDK)
      1. Native Methoden und JNI-Aufrufe
        1. Konventionen in Aufrufen nativer Methoden
        2. Konventionen auf der Java-Seite
      2. Das Android-NDK
        1. Die NDK-Umgebung einrichten
        2. C/C++-Code in Eclipse bearbeiten
        3. Mit dem NDK kompilieren
        4. JNI, NDK und SDK: Ein Beispiel
      3. Native Bibliotheken und Header aus dem NDK
      4. Eigene Bibliotheksmodule erstellen
      5. Native Activitys
  6. Stichwortverzeichnis
  7. Kolophon
  8. Copyright