API-Level:5
Android 2.0 ist eine wichtige Plattformversion, die ab November 2009 auf Android-Handys bereitgestellt werden kann. Die Version enthält neue Funktionen für Nutzer und Entwickler sowie Änderungen an der Android Framework API.
Für Entwickler ist die Android 2.0-Plattform als Komponente zum Herunterladen für das Android SDK verfügbar. Die herunterladbare Plattform enthält 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.
Um mit der Entwicklung oder Tests auf der Android 2.0-Plattform zu beginnen, verwenden Sie das Android SDK und das AVD Manager-Tool, um die Plattform in Ihr SDK herunterzuladen.
Highlights der Plattform
Eine Liste der neuen Funktionen für Nutzer und der wichtigsten Plattformfunktionen finden Sie im Dokument Android 2.0 Platform Highlights.
Integrierte Anwendungen
Das in der herunterladbaren Plattform enthaltene System-Image bietet folgende vorinstallierten Anwendungen:
|
|
Locales
Das auf der herunterladbare Plattform enthaltene System-Image bietet eine Vielzahl von integrierten 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 Android 2.0-System-Image verfügbaren Sprachen sind unten aufgeführt (mit dem Sprachdeskriptor language_country/region).
|
|
Lokalisierte UI-Strings entsprechen den Sprachen, auf die über die Einstellungen zugegriffen werden kann.
Emulator-Skins
Die herunterladbare Plattform enthält eine Reihe von Emulator-Skins, die Sie zur Modellierung Ihrer App für verschiedene Bildschirmgrößen und -auflösungen verwenden können. Die Emulator-Skins sind:
- QVGA (240 x 320, niedrige Dichte, kleiner Bildschirm)
- WQVGA (240 × 400, geringe Pixeldichte, normales Display)
- FWQVGA (240 x 432, niedrige Punktdichte, normaler Bildschirm)
- HVGA (320 x 480, mittlere Dichte, normaler Bildschirm)
- WVGA800 (480 x 800, hohe Dichte, normaler Bildschirm)
- WVGA854 (480 x 854, hohe Dichte, normaler Bildschirm)
Weitere Informationen zum Entwickeln einer Anwendung, die auf allen Android-Geräten richtig angezeigt und funktioniert, finden Sie unter Unterstützung mehrerer Bildschirme.
Entwicklerfunktionen
In den folgenden Abschnitten finden Sie Informationen zu neuen Entwicklerfunktionen, die von der herunterladbaren Android 2.0-Plattformkomponente angeboten werden.
Ameisenstütze
- Anwendungssignatur im Debug- und Release-Modus Das Signieren im Releasemodus umfasst integrierte Unterstützung für die
zipalign
-Optimierung. Weitere Informationen finden Sie unter Anwendungen signieren. - Neues Ant-Buildsystem mit Unterstützung für Emma-Instrumentierungsprojekte (Codeabdeckung)
Framework API
Die folgenden Abschnitte enthalten Informationen über die Application Framework API, die von der Android 2.0-Plattform bereitgestellt wird.
API-Ebene
Die Android 2.0-Plattform stellt eine aktualisierte Version der Framework-API bereit. Wie bei früheren Versionen wird der Android 2.0 API eine Ganzzahl-ID zugewiesen – 5 –, die im System selbst gespeichert wird. Mit dieser Kennung, die als „API-Ebene“ bezeichnet wird, kann das System vor der Installation der Anwendung korrekt feststellen, ob eine Anwendung mit dem System kompatibel ist.
Wenn Sie APIs, die in Android 2.0 eingeführt wurden, in Ihrer App verwenden möchten, müssen Sie in den Attributen des Elements <uses-sdk>
im Manifest Ihrer App den richtigen 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-Verbindung warten
Adapter für die Synchronisierung
- Neue APIs für Synchronadapter, um eine Verbindung zu einem beliebigen Backend herzustellen
Account Manager
- Zentralisierte Account Manager API zum sicheren Speichern und Abrufen von Authentifizierungs-Tokens/-Passwörtern
Kontakte
- Neue Kontakt-APIs, die Daten aus mehreren Konten ermöglichen
- Mit den neuen APIs des Quick Contact-Frameworks können Entwickler in ihren Apps Kontaktlogos erstellen. Wenn Nutzer auf das Logo klicken, wird ein Fenster mit einer Liste von Möglichkeiten geöffnet, wie sie die Person mit nur einem Klick kontaktieren können.
WebView
- Veraltete Klassen: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.
Kamera
- Neue Parameter für Farbeffekt, Motivmodus, Blitzmodus, Fokusmodus, Weißabgleich, Drehung und andere Einstellungen
- Neue ZoomCallback-Oberfläche zum Ausführen von Aktionen, wenn sich die Zoomstufe geändert hat.
Medien
- MediaScanner erstellt jetzt Miniaturansichten für alle Bilder, wenn sie in MediaStore eingefügt werden.
- Neue Thumbnail API zum Abrufen von Bild- und Video-Thumbnails auf Anfrage.
Anderes Framework
- Neue Systemthemen 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.
- Das neue BackgroundManager-API ersetzt und erweitert die Hintergrund-APIs, die zuvor im Kontext waren, damit Anwendungen den Systemhintergrund anfordern und festlegen können.
- Neue Dienst-APIs, die Anwendungen dabei helfen, den Dienstlebenszyklus richtig zu verwalten, insbesondere bei wenig Arbeitsspeicher, wenn ein Dienst während der Ausführung beendet werden kann.
- Service.setForeground() wurde eingestellt und führt jetzt keinen Vorgang aus. Diese wird durch die neue API „startForeground()“ ersetzt, mit der eine laufende Benachrichtigung mit dem Vordergrundstatus verknüpft werden kann (und muss).
- MotionEvent kann jetzt Informationen zu gleichzeitigen Berührungen für Geräte melden, die dies unterstützen. Es können bis zu drei Zeiger gleichzeitig verfolgt werden.
- KeyEvent verfügt über neue APIs für die Schlüsselübermittlung, mit denen ein Verhalten bei Aktion bei und langes Drücken implementiert werden kann. Außerdem gibt es einen neuen Mechanismus, um das Drücken von Tasten (für virtuelle Schlüssel) abzubrechen.
- WindowManager.LayoutParams hat neue Konstanten, mit denen ein Fenster das Display aktivieren kann, wenn es angezeigt wird, und das Fenster auch dann anzeigen, wenn das Display gesperrt ist. So können Apps Dinge wie Wecker, die das Gerät aufwecken sollen, einfacher implementieren.
- Neue Intent APIs, die den Andocken-Status des Geräts übertragen und es Apps ermöglichen, spezielle Aktivitäten zu starten, wenn das Gerät in ein Desktop- oder Autodock gelegt wird.
Schlüsselereignisse, die bei Tastendruck ausgeführt werden
Android 2.0 wurde für die Ausführung auf Geräten entwickelt, die statt physischen Tasten virtuelle Tasten für die START-, MENÜ-, ZURÜCK- und SUCHTASTE verwenden. Um die Nutzerfreundlichkeit auf diesen Geräten zu verbessern, führt die Android-Plattform diese Schaltflächen jetzt bei „Tasten loslassen“ für ein Tasten-nach-unten/Tasten-loslassen-Paar aus, anstatt bei „Tasten nach unten drücken“. Dadurch werden versehentliche Schaltflächenereignisse verhindert und der Nutzer kann auf den Schaltflächenbereich drücken und ihn dann herausziehen, ohne ein Ereignis zu generieren.
Diese Änderung des Verhaltens sollte sich nur auf Ihre Anwendung auswirken, wenn sie Schaltflächenereignisse abfängt und eine Aktion beim Drücken der Taste ausführt, anstatt beim Loslassen. Insbesondere, wenn Ihre Anwendung die BACK-Taste abfängt, sollten Sie darauf achten, dass die Schlüsselereignisse ordnungsgemäß verarbeitet werden.
Im Allgemeinen wird das Abfangen der BACK-Taste in einer Anwendung nicht empfohlen. Wenn Ihre Anwendung dies jedoch tut und eine Aktion beim Drücken der Taste statt beim Loslassen auslöst, sollten Sie Ihren Code ändern.
Wenn in Ihrer App APIs verwendet werden, die in Android 2.0 (API-Level 5) eingeführt wurden, können Sie die neuen APIs für die Verwaltung von Schlüsselereignis-Paaren nutzen:
- Wenn Sie die BACK-Taste in einer Aktivität oder einem Dialog abfangen, implementieren Sie einfach die neue Methode
onBackPressed()
. - Wenn Sie die BACK-Taste in einer Ansicht abfangen, sollten Sie das Tastenereignis beim Drücken der Taste (über die neue
startTracking()
-Methode) erfassen und dann die Aktion beim Loslassen der Taste ausführen. 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 ältere Anwendung so aktualisieren möchten, dass die Verarbeitung der BACK-Taste sowohl für Android 2.0 als auch für ältere Plattformversionen ordnungsgemäß funktioniert, können Sie einen ähnlichen Ansatz wie oben beschrieben verwenden. Ihr Code kann das Zielschaltflächenereignis bei Tastendruck erfassen, ein Flag zum Erfassen des Schlüsselereignisses festlegen und dann das Ereignis beim Tastendruck erfassen. Wenn das Tracking-Flag gesetzt ist, wird die gewünschte Aktion ausgeführt. Achten Sie auch auf Fokusänderungen und löschen Sie die Tracking-Markierung, wenn Sie den Fokus zu- oder abnehmen.
Bericht zu API-Unterschieden
Eine detaillierte Übersicht über die API-Änderungen in Android 2.0 (API-Level 5) im Vergleich zur vorherigen Version finden Sie im API-Unterschiedsbericht.