3. Auflage

Android-Apps programmieren

Android-Apps programmieren

Seit 2011 unterrichte ich Android-Programmierung an der Münchener Volkshochschule (MVHS) und privat. Die Idee dazu kam bereits 2009, als ich bei MVHS den ersten Kurs zu OS X gab. Die Umsetzung musste zwei Jahre auf sich warten, um sowohl das notwendige Wissen, als auch die Unterlagen zum Kurs auszuarbeiten (damals noch für Eclipse und Android 1.6/2.0).

Zu den Stoßzeiten des Android-Booms liefen zwei Kurse parallel mit jeweils max. möglichen 10 Teilnehmern. Diese Zeiten sind zwar vorbei, die Android-Entwicklung erfreut sich aber weiterhin großer Beliebtheit.

Nun ist die dritte, überarbeitete, Auflage erschienen. Viele Themen wurden aktualisiert und erweitert. Die neu Auflage bezieht sich auf Android Studio 4.x.

Sie können das Buch sowohl direkt bei mitp-Verlag, aber auch bei Amazon bestellen (analog auf Papier, oder digital als E-Book). Als Vorgeschmack können Sie die Leseprobe unten herunterladen und lesen.

Themen im Buch

  • Entwicklungsumgebung Android Studio
  • Layouterstellung mit XML
  • ROOM und SQLite Datenbank unter Android
  • Hintergrundoperationen
  • Benachrichtigungen
  • Berechtigungen
  • Navigation und ActionBar
  • Storage Access Framework (SAF)
  • Dialoge
  • Internetzugriff und REST-Dienste
  • Unit Testing und UI Testing
  • Emulatoren

Korrekturen / Ergänzungen

S. 43 Neues Projekt anlegen

In Android Studio Version 2022.3 (Giraffe) wurden einige der Vorlagen entfernt und einige aktualisiert.

Die in dem Buch verwendete Vorlage "Empty Activity" ist nun nur in der Kotlin Version verfügbar. Um mit dem Buch fortzufahren und Java zu nutzen, wählen Sie die Vorlage "Empty View Activity" und die Sprache Java. Im Video unten sind die Schritte gezeigt.

Java Projekt unter AndroidStudio Giraffe anlegen
S. 139 Tabelle 5.2

Das Julian Day ist in der Tabelle fälschlicherweise als Tage seit dem 24.09.4714 v.Chr. abgedruckt. Korrekt ist der 24.11.4714 v.Chr. (wie auf Seite 138 korrekt definiert).

Nachzulesen unter:

S. 147 Room Abhängigkeit
Autovervollständigung für Konfiguration
Autovervollständigung für Konfiguration

Konfiguration annotationProcessor hinzufügen

In dem Dialog zum Hinzufügen von Abhängigkeiten (Dependencies) erscheint in der Auswahlbox für Configuration nur eine kleine Auswahl an Möglichkeiten. Der geforderte Wert annotationProcessor ist zum Beispiele nicht in der Liste.

Trotzdem ist die Eingabe möglich. Entweder man gibt den kompletten Wert manuell ein (in der Auswahlbox können die Werte manuell eingegeben werden), oder man lässt die Autovervollständigung für sich arbeiten (siehe Screenshot).

Aktivierung der Java 8 Features für Android
Aktivierung der Java 8 Features für Android

Room 2.3 Java 8 Abhängigkeit

Die Version 2.3.0 von Room bringt eine neue Abhängigkeit herein, die explizit Features von Java 1.8 erfordern. Zu diesem Zeitpunkt ist unser Projekt dafür noch nicht konfiguriert. Das machen wir erst auf der Seite 161. Führen Sie diese Änderungen durch, um mit der Version 2.3 arbeiten zu können (siehe auch Screenshot).

S. 236

Die Methode Calendar getTime(DataType dataType); kann aus dem Interface und Implementierung entfernt werden, da diese nirgendwo genutzt wird.

S. 239

In der Methode updateDate muss der Aufruf updateUi() außerhalb der if Anweisung passieren. Es sollte also statt:


@Override
public void updateDate(DateType dateType, int year, int month, int day) {
  if (dateType == DateType.START) {
    _workTime.startTime.set(year, month, day);
  } else {
    if (_workTime.endTime == null) {
      _workTime.endTime = Calendar.getInstance();
    }

    _workTime.endTime.set(year, month, day);
    updateUi();
  }
}

dann folgendes stehen:


@Override
public void updateDate(DateType dateType, int year, int month, int day) {
  if (dateType == DateType.START) {
    _workTime.startTime.set(year, month, day);
  } else {
    if (_workTime.endTime == null) {
      _workTime.endTime = Calendar.getInstance();
    }

    _workTime.endTime.set(year, month, day);
  }
  updateUi();
}
S.260

Es fehlt der Hinweis zu dem Ordner mit dem Quellcode: