Android 2.0, Version 1

API-Level: 5

Android 2.0 ist eine wichtige Plattformversion, die ab November 2009 auf Android-Mobilgeräten bereitgestellt werden kann. Der Release enthält neue Funktionen für Nutzer und Entwickler sowie Änderungen an der Android Framework API.

Für Entwickler steht die Android 2.0-Plattform als herunterladbare Komponente für das Android SDK zur Verfügung. Die herunterladbare Plattform umfasst eine vollständig konforme Android-Bibliothek und ein System-Image sowie eine Reihe von Emulator-Skins, Beispielanwendungen und mehr. Die herunterladbare Plattform ist vollständig konform und enthält keine externen Bibliotheken.

Wenn Sie mit der Entwicklung oder dem Testen auf der Android 2.0-Plattform beginnen möchten, laden Sie die Plattform mit dem Android SDK und dem AVD Manager-Tool in Ihr SDK herunter.

Plattform-Highlights

Eine Liste der neuen Nutzerfunktionen und Plattform-Highlights finden Sie im Dokument Android 2.0 Platform Highlights.

Integrierte Anwendungen

Das System-Image, das in der herunterladbaren Plattform enthalten ist, umfasst die folgenden integrierten Anwendungen:

  • Wecker
  • Browser
  • Rechner
  • Videokamera
  • Kamera
  • Kontakte
  • Benutzerdefinierte Sprache (Entwickler-App)
  • Entwicklertools (Entwickler-App)
  • Telefon
  • E-Mail
  • Galerie
  • Gesten-Builder
  • IME für japanische Texteingabe
  • Werbebotschaften
  • Musik
  • Einstellungen
  • Ersatzteile (Entwickler-App)

Locales

Das System-Image, das in der herunterladbaren Plattform enthalten ist, bietet eine Vielzahl integrierter Sprachen. In einigen Fällen sind regionsspezifische Strings für die Sprachen verfügbar. In anderen Fällen wird eine Standardversion der Sprache verwendet. Die im System-Image von Android 2.0 verfügbaren Sprachen sind unten aufgeführt (mit dem Sprachdeskriptor language_country/region).

  • Chinesisch, Volksrepublik China (zh_CN)
  • Chinesisch, Taiwan (zh_TW)
  • Tschechisch (cs_CZ)
  • Niederländisch, Niederlande (nl_NL)
  • Niederländisch, Belgien (nl_BE)
  • Englisch, USA (en_US)
  • Englisch, Vereinigtes Königreich (en_GB)
  • Englisch, Kanada (en_CA)
  • Englisch, Australien (en_AU)
  • Englisch, Neuseeland (en_NZ)
  • Englisch, Singapur(en_SG)
  • Französisch, Frankreich (fr_FR)
  • Französisch, Belgien (fr_BE)
  • Französisch, Kanada (fr_CA)
  • Französisch, Schweiz (fr_CH)
  • Deutsch, Deutschland (de_DE)
  • Deutsch, Österreich (de_AT)
  • Deutsch, Schweiz (de_CH)
  • Deutsch, Liechtenstein (de_LI)
  • Italienisch, Italien (it_IT)
  • Italienisch, Schweiz (it_CH)
  • Japanisch (ja_JP)
  • Koreanisch (ko_KR)
  • Polnisch (pl_PL)
  • Russisch (ru_RU)
  • Spanisch (es_ES)
  • Lokalisierte UI-Strings entsprechen den Sprachen, auf die über die Einstellungen zugegriffen werden kann.

    Emulator-Skins

    Die herunterladbare Plattform umfasst eine Reihe von Emulator-Skins, die Sie zum Modellieren Ihrer Anwendung in verschiedenen Bildschirmgrößen und -auflösungen verwenden können. Die Emulator-Skins sind:

    • QVGA (240 x 320, niedrige Dichte, kleiner Bildschirm)
    • WQVGA (240 x 400, niedrige Dichte, normaler Bildschirm)
    • FWQVGA (240 x 432, niedrige Dichte, normaler Bildschirm)
    • HVGA (320 x 480, mittlere Dichte, normaler Bildschirm)
    • WVGA800 (480 x 800, hohe Punktdichte, normaler Bildschirm)
    • WVGA854 (480 x 854 mit hoher Punktdichte, normaler Bildschirm)

    Weitere Informationen zur Entwicklung einer App, die auf allen Android-Geräten ordnungsgemäß angezeigt wird und funktioniert, findest du unter Unterstützung verschiedener Bildschirme.

    Entwicklerfunktionen

    Die folgenden Abschnitte enthalten Informationen zu neuen Entwicklerfunktionen, die über die herunterladbare Android 2.0-Plattformkomponente angeboten werden.

    Ameisenunterstützung

    • Anwendungssignatur im Debug- und Release-Modus Die Signatur im Release-Modus umfasst integrierte Unterstützung für die zipalign-Optimierung. Weitere Informationen finden Sie unter Anwendungen signieren.
    • Ein neues Ant-Build-System wird hinzugefügt, das Emma-Instrumentierungsprojekte unterstützt (Codeabdeckung).

    Framework-API

    Die folgenden Abschnitte enthalten Informationen zur App Framework API, die von der Android 2.0-Plattform bereitgestellt wird.

    API-Ebene

    Die Plattform Android 2.0 stellt eine aktualisierte Version der Framework API bereit. Wie bei früheren Versionen wird der Android 2.0 API eine Ganzzahl-ID – 5 – zugewiesen, die im System selbst gespeichert ist. Mit dieser Kennung (API-Ebene) kann das System vor der Installation korrekt feststellen, ob eine App mit dem System kompatibel ist.

    Um in Android 2.0 eingeführte APIs in deiner App zu verwenden, musst du in den Attributen des Elements <uses-sdk> im Manifest deiner App den korrekten Wert "5" festlegen.

    Weitere Informationen zur Verwendung der API-Ebene finden Sie im Dokument API-Ebenen.

    Zusammenfassung der API-Änderungen

    Bluetooth

    • Bluetooth aktivieren/deaktivieren
    • Geräte- und Diensterkennung
    • Über RFCOMM eine Verbindung zu einem Remote-Gerät herstellen und Daten senden/empfangen
    • RFCOMM-Dienste bewerben und auf eingehende RFCOMM-Verbindungen warten

    Adapter synchronisieren

    • Neue APIs für die Synchronisierung von Adaptern zum Herstellen einer Verbindung zu einem beliebigen Backend

    Konto-Manager

    • Zentrales Account Manager-API zum sicheren Speichern und Abrufen von Authentifizierungstokens/Passwörtern

    Kontakte

    • Neue Kontakte-APIs, die Daten aus mehreren Konten ermöglichen
    • Mit den neuen Quick Contact-Framework-APIs können Entwickler Kontaktabzeichen in ihrer App erstellen. Durch Klicken auf das Badge wird ein Fenster mit einer Liste der Möglichkeiten geöffnet, wie die Person mit einem Klick kontaktiert werden kann.

    WebView

    • Verworfene Klassen: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    Kamera

    • Neue Parameter für Farbeffekt, Szenenmodus, Blitzmodus, Fokusmodus, Weißabgleich, Drehung und andere Einstellungen.
    • Neue ZoomCallback-Oberfläche, um Aktionen bei geänderter Zoomstufe auszuführen.

    Medien

    • MediaScanner erstellt jetzt Miniaturansichten für alle Bilder, wenn diese in MediaStore eingefügt werden.
    • Neue Thumbnail API zum Abrufen von Miniaturansichten von Bildern und Videos bei Bedarf

    Anderer Rahmen

    • Neue Systemdesigns in „android.R.style“, mit denen sich Aktivitäten ganz einfach über dem aktuellen Systemhintergrund anzeigen lassen oder die vorherige Aktivität im Hintergrund sichtbar bleibt
    • Die neue HintergründeManager API ersetzt und erweitert die Hintergrund-APIs, die zuvor im Kontext verfügbar waren, damit Anwendungen den Systemhintergrund anfordern und festlegen können.
    • Neue Dienst-APIs, damit Anwendungen den Dienstlebenszyklus korrekt verarbeiten können, insbesondere in Situationen mit geringem Arbeitsspeicher, in denen ein Dienst während der Ausführung beendet werden kann.
      • „Service.setForeground()“ wurde verworfen und führt jetzt effektiv keinen Vorgang aus. Es wird durch die neue API „startForeground()“ ersetzt, mit der (und auch) eine laufende Benachrichtigung mit dem Vordergrundstatus verknüpft werden kann.
    • MotionEvent kann jetzt Informationen zur gleichzeitigen Berührung für Geräte melden, die diese Funktion unterstützen. Es können bis zu drei Punkte gleichzeitig verfolgt werden.
    • KeyEvent verfügt über neue APIs für die Schlüsselzuweisung, die das Einsetzen von Aktionen bei gedrückter Taste und für langes Drücken vereinfachen, sowie einen neuen Mechanismus zum Abbrechen von Tastenbetätigungen (für virtuelle Tasten).
    • WindowManager.LayoutParams verfügt über neue Konstanten, die es einem Fenster ermöglichen, den Bildschirm zu aktivieren, wenn es angezeigt wird, und das Fenster auch bei gesperrtem Bildschirm anzuzeigen. Dies ermöglicht Apps, Dinge wie Wecker, die das Gerät wecken sollen, sauberer zu implementieren.
    • Neue Intent-APIs, die den Docking-Status des Geräts übertragen und es Anwendungen ermöglichen, spezielle Aktivitäten zu starten, wenn das Gerät in einem Desktop- oder Kfz-Dock platziert wird.

    Schlüsselereignisse, die bei der Schlüsselaktualisierung ausgeführt werden

    Android 2.0 ist für Geräte konzipiert, die statt physischer Tasten virtuelle Tasten für STARTSEITE, MENÜ, ZURÜCK und SUCHE verwenden. Um die bestmögliche Nutzererfahrung auf diesen Geräten zu ermöglichen, führt die Android-Plattform diese Schaltflächen jetzt bei Tastendruck und nicht bei Tastendruck-Kombination aus. So werden versehentliche Schaltflächenereignisse verhindert und der Nutzer kann auf den Schaltflächenbereich klicken und ihn dann herausziehen, ohne ein Ereignis zu generieren.

    Diese Verhaltensänderung sollte sich nur dann auf Ihre Anwendung auswirken, wenn sie Schaltflächenereignisse abfängt und eine Aktion bei Tastendruck statt bei der Tastenkombination ausführt. Besonders wenn Ihre Anwendung den Schlüssel BACK abfängt, sollten Sie darauf achten, dass die Schlüsselereignisse ordnungsgemäß verarbeitet werden.

    Im Allgemeinen ist es nicht zu empfehlen, den Zurück-Schlüssel in einer Anwendung abzufangen. Wenn Ihre Anwendung dies jedoch tut und eine Aktion bei gedrückter Taste und nicht bei Tasten oben auslöst, sollten Sie Ihren Code ändern.

    Wenn Ihre App APIs verwendet, die in Android 2.0 (API-Level 5) eingeführt wurden, können Sie die neuen APIs zur Verwaltung von Schlüsselpaaren nutzen:

    • Wenn Sie den Schlüssel „BACK“ in einer Aktivität oder einem Dialogfeld abfangen, implementieren Sie einfach die neue Methode onBackPressed().
    • Wenn Sie den Schlüssel „BACK“ in einer Ansicht abfangen, sollten Sie das Schlüsselereignis bei gedrückter Taste (über die neue Methode startTracking()) erfassen und dann die Aktion bei Taste oben aufrufen. Hier ist ein Muster, das Sie verwenden können:
    • Kotlin

      override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.repeatCount == 0) {
                      event.startTracking()
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyDown(keyCode, event)
          }
      }
      
      override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.isTracking && !event.isCanceled) {
                      // *** DO ACTION HERE ***
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyUp(keyCode, event)
          }
      }
      

      Java

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK
                      && event.getRepeatCount() == 0) {
                  event.startTracking();
                  return true;
              }
              return super.onKeyDown(keyCode, event);
          }
      
          public boolean onKeyUp(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                      && !event.isCanceled()) {
                  // *** DO ACTION HERE ***
                  return true;
              }
              return super.onKeyUp(keyCode, event);
          }
      

    Wenn Sie eine Legacy-Anwendung so aktualisieren möchten, dass der Schlüssel „BACK“ sowohl für Android 2.0 als auch für ältere Plattformversionen ordnungsgemäß funktioniert, können Sie einen ähnlichen Ansatz wie oben verwenden. Der Code kann das Zielschaltflächenereignis bei gedrückter Taste abfangen, ein Flag festlegen, um das Schlüsselereignis zu erfassen, und dann das Ereignis bei Tasten-Up-Taste abfangen und die gewünschte Aktion ausführen, sofern das Tracking-Flag gesetzt ist. Achten Sie auch auf Fokusänderungen und löschen Sie das Tracking-Flag, wenn Sie den Fokus gewinnen oder verlieren.

    Bericht zu API-Unterschieden

    Eine detaillierte Ansicht der API-Änderungen in Android 2.0 (API-Level 5) im Vergleich zur vorherigen Version finden Sie im Bericht zu API-Unterschieden.