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 5

Book Description

Java-erfahrene Leser lernen in diesem Buch, professionelle und sichere Apps für Android-Smartphones und -Tablets zu entwickeln.Nach einer Einführung in die grundlegenden Konzepte und Elemente von Android lernt der Leser anhand eines durchgängigen Beispiels Schritt für Schritt, eine mobile Anwendung zu entwickeln. Ein eigener Teil des Buches beschäftigt sich speziell mit der Programmierung für Tablets.Die 4. Auflage wurde komplett auf Android 5 aktualisiert und um neue Themen erweitert, u.a. ART - Android Runtime, Projekt Volta, Material Theme, Android-5-Notifications und das Gradle-Buildsystem.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort
  5. I Einführung
    1. 1 Ein erstes Beispiel
      1. 1.1 Projekt anlegen
      2. 1.2 Die erste Activity
      3. 1.3 Layout definieren
      4. 1.4 Activities aufrufen
      5. 1.5 Das Android-Manifest
      6. 1.6 Fazit
    2. 2 Systemaufbau
      1. 2.1 Architekturübersicht
      2. 2.2 Die Android Runtime
      3. 2.3 Standardbibliotheken
      4. 2.4 Der Anwendungsrahmen
      5. 2.5 Android-Komponenten
      6. 2.6 Die Klasse Context
    3. 3 Sicherheit
      1. 3.1 Das Sandbox-Prinzip
      2. 3.2 Signieren von Anwendungen
      3. 3.3 Berechtigungen
      4. 3.4 Anwendungsübergreifende Berechtigungen
  6. II Android in der Praxis
    1. 4 Beispielanwendung »Amando«
      1. 4.1 Aus Sicht des Anwenders
      2. 4.2 Kapitelübersicht
    2. 5 Oberflächengestaltung
      1. 5.1 Ziel
      2. 5.2 Schnelleinstieg: Activities, Layouts und Views
        1. 5.2.1 Grundbausteine der Oberflächengestaltung
        2. 5.2.2 Oberflächen implementieren
      3. 5.3 Ressourcen
        1. 5.3.1 Definition von Ressourcen
        2. 5.3.2 Zugriff auf Ressourcen
        3. 5.3.3 Textressourcen
        4. 5.3.4 Farbressourcen
        5. 5.3.5 Größendefinitionen
        6. 5.3.6 Bilder
        7. 5.3.7 Animationen
        8. 5.3.8 Multimediadateien
        9. 5.3.9 Der raw-Ordner
        10. 5.3.10 XML-Dateien
        11. 5.3.11 Der Asset-Ordner
      4. 5.4 Layouts und Views
        1. 5.4.1 Definition von Layouts
        2. 5.4.2 Übersicht vorhandener Layouts
        3. 5.4.3 Übersicht vorhandener Views
        4. 5.4.4 Views verwenden
      5. 5.5 Schaltflächen und Menüs
        1. 5.5.1 Schaltflächen
        2. 5.5.2 Oberflächenereignisse
        3. 5.5.3 Menüs im Allgemeinen
        4. 5.5.4 Menüdefinition
        5. 5.5.5 Optionsmenüs
        6. 5.5.6 Kontextmenüs
        7. 5.5.7 Dynamische Menügestaltung
      6. 5.6 Formularverarbeitung
        1. 5.6.1 Zielsetzung
        2. 5.6.2 Arbeiten mit Views
      7. 5.7 Das Android-Manifest
      8. 5.8 Formatvorlagen: Styles und Themes
        1. 5.8.1 Styles
        2. 5.8.2 Themes
      9. 5.9 Implementierung einer Bildschirmseite
        1. 5.9.1 Checkliste: Bildschirmseite implementieren
        2. 5.9.2 Texte für Bildschirmseiten definieren
        3. 5.9.3 Styles und Themes definieren
        4. 5.9.4 Weitere Ressourcen definieren
        5. 5.9.5 Layouts definieren
        6. 5.9.6 Menüs definieren
        7. 5.9.7 Activity implementieren
        8. 5.9.8 Auf Schaltflächen-Ereignisse reagieren
        9. 5.9.9 Android-Manifest anpassen
        10. 5.9.10 Bildschirmseite im Emulator testen
      10. 5.10 Tipps und Tricks
        1. 5.10.1 Scrolling
        2. 5.10.2 Umgebungsabhängige Ressourcen
        3. 5.10.3 Hilfeseiten mit WebView darstellen
        4. 5.10.4 Der Hierarchy Viewer
      11. 5.11 Fazit
    3. 6 Oberflächen und Daten
      1. 6.1 Zielsetzung
      2. 6.2 AdapterViews und Ressourcen
      3. 6.3 AdapterViews und Adapter
        1. 6.3.1 ArrayAdapter
        2. 6.3.2 Auf Ereignisse reagieren
      4. 6.4 Anwendungseinstellungen
        1. 6.4.1 Begriffsdefinitionen
        2. 6.4.2 Einstellungen definieren
        3. 6.4.3 Einstellungsseite implementieren
        4. 6.4.4 Auf Einstellungen zugreifen
        5. 6.4.5 Einstellungen bearbeiten
      5. 6.5 Fortschrittsanzeige
      6. 6.6 Fazit
    4. 7 Intents
      1. 7.1 Warum gibt es Intents?
      2. 7.2 Explizite Intents
      3. 7.3 Implizite Intents
        1. 7.3.1 Intent-Filter für implizite Intents
        2. 7.3.2 Ein Beispiel
        3. 7.3.3 Intent-Resolution
        4. 7.3.4 Beispiele für implizite Intents
        5. 7.3.5 Fehlerbehandlung
      4. 7.4 Sub-Activities
        1. 7.4.1 Sub-Activities aufrufen
        2. 7.4.2 Sub-Activities verwenden
      5. 7.5 Fazit
    5. 8 Hintergrundoperationen
      1. 8.1 Ziel
      2. 8.2 Theorie: Prozesse, Threads, Services
        1. 8.2.1 Allgemeines
        2. 8.2.2 Main Thread
        3. 8.2.3 ANR
        4. 8.2.4 Prozesse vs. Threads
        5. 8.2.5 Services
        6. 8.2.6 Services vs. Threads
        7. 8.2.7 Service-Connections
        8. 8.2.8 Binder
      3. 8.3 Implementierung eines Local Service
        1. 8.3.1 Local Service
        2. 8.3.2 Mit einem Service verbinden
        3. 8.3.3 Services starten und stoppen
      4. 8.4 Callback-Mechanismen
        1. 8.4.1 Handler
        2. 8.4.2 Implementierung
        3. 8.4.3 Threads mit Schleifen
      5. 8.5 Single Action Service
      6. 8.6 Intent Service
      7. 8.7 Projekt Volta
      8. 8.8 Fazit
    6. 9 IPC – Inter Process Communication
      1. 9.1 AIDL
      2. 9.2 Implementierung
      3. 9.3 Eigene Datenobjekte per IPC übertragen
        1. 9.3.1 Eigene Datenobjekte erstellen
        2. 9.3.2 Parameterübergabe optimieren
      4. 9.4 Asynchrone Methodenaufrufe
        1. 9.4.1 Asynchrone Methodenaufrufe mit Rückgabewert
        2. 9.4.2 Asynchrone Methodenaufrufe verwenden
      5. 9.5 Fazit
    7. 10 Broadcast Receiver
      1. 10.1 Broadcast Intents
      2. 10.2 Broadcast Receiver
        1. 10.2.1 Dynamische Broadcast Receiver
        2. 10.2.2 Statische Broadcast Receiver
      3. 10.3 Notifications
      4. 10.4 Fazit
    8. 11 Datenbanken
      1. 11.1 Zielsetzung
      2. 11.2 Android: Wozu Datenbanken?
      3. 11.3 Das Datenbanksystem SQLite
      4. 11.4 Eine Datenbank erstellen
        1. 11.4.1 Berechtigungen
        2. 11.4.2 Schemaverwaltung
      5. 11.5 Datenzugriffe programmieren
        1. 11.5.1 SQLiteDatabase – Verbindung zur Datenbank
        2. 11.5.2 Datenbankanfragen
        3. 11.5.3 Ergebnistyp Cursor
        4. 11.5.4 Änderungsoperationen
      6. 11.6 Datenzugriff per Kommandozeile
      7. 11.7 Implementierung
        1. 11.7.1 Ein Architekturvorschlag
        2. 11.7.2 Das Schema erstellen
        3. 11.7.3 Anfrageergebnisse an der Oberfläche darstellen
    9. 12 Dateisystem
      1. 12.1 Aufbau des Dateisystems
        1. 12.1.1 Das Anwendungsverzeichnis
        2. 12.1.2 SD-Karten
      2. 12.2 Verwaltung
      3. 12.3 Programmierung
        1. 12.3.1 Zugriff auf das Anwendungsverzeichnis
        2. 12.3.2 Zugriff auf den »öffentlichen« Speicher
      4. 12.4 Zusammenfassung
    10. 13 Content Provider
      1. 13.1 Zielsetzung
      2. 13.2 Übersicht/Grundbegriffe
      3. 13.3 Content-URIs
      4. 13.4 Content Provider
        1. 13.4.1 Stammdaten
        2. 13.4.2 Operationen
        3. 13.4.3 Lebenszyklus
        4. 13.4.4 Berechtigungen
        5. 13.4.5 Deployment
      5. 13.5 Content Consumer
        1. 13.5.1 Content Resolver
        2. 13.5.2 Zugriff auf Datenbankinhalte
        3. 13.5.3 Zugriff auf Dateien
      6. 13.6 Implementierung
        1. 13.6.1 Zugriff auf das Android-Adressbuch
        2. 13.6.2 Der FotoProvider
        3. 13.6.3 Der FotoProviderContract
        4. 13.6.4 Die Content-Provider-Klasse
        5. 13.6.5 FotoSpeicher als Content Consumer
    11. 14 Asynchrone Datenzugriffe, Loader
      1. 14.1 Einleitung
      2. 14.2 Datenzugriffe über Loader
        1. 14.2.1 Der CursorLoader
        2. 14.2.2 Loader für Datenbankanfragen
      3. 14.3 Änderungen am Datenbestand
    12. 15 Lebenszyklen
      1. 15.1 Prozessverwaltung
      2. 15.2 Lebenszyklus einer Activity
      3. 15.3 Lebenszyklus eines Service
      4. 15.4 Lebenszyklus eines Broadcast Receivers
      5. 15.5 Activities: Unterbrechungen und Ereignisse
      6. 15.6 onPause() vs. onSaveInstanceState(Bundle outState)
      7. 15.7 Beispiele aus der Praxis
        1. 15.7.1 Beispiel: Kalender-Activity
        2. 15.7.2 Beispiel: E-Mail-Programm
        3. 15.7.3 Beispiel: Quick-and-dirty-Alternative
    13. 16 Datenübertragung
      1. 16.1 Ziel
      2. 16.2 Theoretische Grundlagen
        1. 16.2.1 Das Emulator-Netzwerk
        2. 16.2.2 Die Internet-Einbahnstraße
        3. 16.2.3 Netzwerkunterstützung bei Android
        4. 16.2.4 Arten der Netzwerkübertragung
      3. 16.3 Netzwerken in der Praxis
        1. 16.3.1 Verfahren 1: Geoposition senden
        2. 16.3.2 Verfahren 2: dauerhafte Verbindung
        3. 16.3.3 Auf Funklöcher reagieren
      4. 16.4 Fazit
    14. 17 Standortbezogene Dienste
      1. 17.1 Ziel
      2. 17.2 Theoretische Grundlagen
        1. 17.2.1 Ortungsverfahren
        2. 17.2.2 GPS, KML und GPX
        3. 17.2.3 Entwickeln im Emulator
        4. 17.2.4 Debug Maps API Key erstellen
        5. 17.2.5 Testgerät einrichten
      3. 17.3 Praxisteil
        1. 17.3.1 Google APIs installieren
        2. 17.3.2 Google-Play-Services-Bibliothek einbinden
        3. 17.3.3 Android-Manifest anpassen
        4. 17.3.4 Der Location Manager
        5. 17.3.5 Location API v1
        6. 17.3.6 Location API v2 – Fuse Location Provider
        7. 17.3.7 Google Maps API v2
        8. 17.3.8 Fortgeschrittene Techniken
      4. 17.4 Fazit
    15. 18 Fragments
      1. 18.1 Ziel
      2. 18.2 Fragments
        1. 18.2.1 Lebenszyklus von Fragments
      3. 18.3 Praxisbeispiel
        1. 18.3.1 Projektaufbau
        2. 18.3.2 Activity-Layout
        3. 18.3.3 Action Bar, Tabs und Optionsmenü
        4. 18.3.4 Fragments für Listendarstellung
        5. 18.3.5 Drag and Drop
        6. 18.3.6 Artikel anzeigen
        7. 18.3.7 Auswahliste mit Drop-Funktion
        8. 18.3.8 Animationen
      4. 18.4 Fazit
  7. III Weiterführende Themen
    1. 19 Debugging und DDMS
      1. 19.1 Anschluss eines Android-Geräts
      2. 19.2 Systemausgaben mit der LogCat
      3. 19.3 DDMS: Dalvik Debug Monitor Service
        1. 19.3.1 Emulator Control
        2. 19.3.2 Debugging
      4. 19.4 Traceview
    2. 20 Sicherheit und Verschlüsselung
      1. 20.1 Motivation
      2. 20.2 Grundbegriffe der Verschlüsselung
        1. 20.2.1 Verschlüsselte Datenübertragung
        2. 20.2.2 Daten oder Objekte verschlüsseln
        3. 20.2.3 Verschlüsselung anwenden
    3. 21 Automatisiertes Testen
      1. 21.1 Was testen wir?
      2. 21.2 Oberflächentests
        1. 21.2.1 Instrumentierung und Robotium
        2. 21.2.2 Ein Beispiel
        3. 21.2.3 Den Test starten
        4. 21.2.4 Konflikte vermeiden
      3. 21.3 Modultests
        1. 21.3.1 Androidfreie Klassen
        2. 21.3.2 Androidabhängige Klassen
        3. 21.3.3 Beispiel für einen Modultest
      4. 21.4 Eine Teststrategie
    4. 22 Anwendungen marktreif machen
      1. 22.1 Hintergrundwissen
      2. 22.2 Zertifikate selbst erstellen
      3. 22.3 Anwendungen mittels Kommandozeile marktreif machen
        1. 22.3.1 Ein eigenes Zertifikat erstellen
        2. 22.3.2 Eine Android-Anwendung signieren
    5. 23 Storage Access Framework
      1. 23.1 Überblick
      2. 23.2 Beispiel 1: Bilder-Client
      3. 23.3 Beispiel 2: Dokumenten-Client
      4. 23.4 Fazit
    6. 24 Optimierung und Performance
      1. 24.1 Erste Optimierungsregeln
      2. 24.2 Datenobjekte
      3. 24.3 Cursor oder Liste?
      4. 24.4 Time is Akku!
    7. 25 Buildsystem Gradle
      1. 25.1 Warum Gradle?
      2. 25.2 Gradle in der Praxis
        1. 25.2.1 Import von Eclipse-Projekten
        2. 25.2.2 Der Gradle Wrapper
  8. Anhang
  9. Literaturverzeichnis
  10. Index
  11. Fußnoten