API-Ebene: 15
Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
) ist eine inkrementelle Version der Plattformfamilie Android 4.0 (ICE_CREAM_SANDWICH
). Diese Version enthält neue Funktionen für Nutzer und Entwickler, API-Änderungen und verschiedene Fehlerkorrekturen.
Für Entwickler ist die Android 4.0.3-Plattform als herunterladbare Komponente für das Android SDK verfügbar. Die herunterladbare Plattform enthält unter anderem eine Android-Bibliothek und ein System-Image sowie eine Reihe von Emulator-Skins. Wenn Sie mit der Entwicklung oder dem Testen für Android 4.0.3 beginnen möchten, laden Sie die Plattform mit dem Android SDK Manager in Ihr SDK herunter.
API-Übersicht
In den folgenden Abschnitten erhalten Sie einen technischen Überblick über die neuen APIs in Android 4.0.3.
Social Stream API im Anbieter von Kontaktdaten
Apps, die Daten aus dem Social Stream wie Statusaktualisierungen und Check-ins verwenden, können diese Daten jetzt mit den Kontakten des Nutzers synchronisieren und so Elemente in einem Stream zusammen mit Fotos für jeden Nutzer bereitstellen.
Die Datenbanktabelle, die den Social Stream eines einzelnen Kontakts enthält, wird durch android.provider.ContactsContract.StreamItems definiert. Der URI dafür ist im Verzeichnis ContactsContract.RawContacts
verschachtelt, zu dem die Streamelemente gehören. Jede Tabelle für den Social Stream enthält mehrere Spalten für Metadaten zu jedem Streamelement, z. B. ein Symbol für die Quelle (ein Avatar), ein Label für das Element, den primären Textinhalt, Kommentare zum Element (z. B. Antworten anderer Personen) und mehr. Fotos, die mit einem Stream verknüpft sind, werden in einer anderen Tabelle gespeichert, die von android.provider.ContactsContract.StreamItemPhotos definiert wird. Diese Tabelle ist als Unterverzeichnis des URIs android.provider.ContactsContract.StreamItems verfügbar.
Weitere Informationen finden Sie unter android.provider.ContactsContract.StreamItems und android.provider.ContactsContract.StreamItemPhotos.
Wenn eine App Elemente aus dem Social Stream für einen Kontakt lesen oder schreiben möchte, muss sie die Berechtigung vom Nutzer anfordern, indem sie <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
und/oder <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
in ihren Manifestdateien deklariert.
Kalenderanbieter
- Die Klasse
CalendarContract.Colors
wird hinzugefügt, um eine Farbtabelle im Kalenderanbieter darzustellen. Die Klasse bietet Felder für den Zugriff auf Farben, die für ein bestimmtes Konto verfügbar sind. Farben werden durch COLOR_KEY
referenziert, die für einen bestimmten Kontonamen/-typ eindeutig sein muss. Diese Werte können nur vom Synchronisierungsadapter aktualisiert werden.
ALLOWED_AVAILABILITY
und ALLOWED_ATTENDEE_TYPES
werden hinzugefügt, um die Unterstützung für den Austausch/die Synchronisierung zu verbessern.
- Fügen Sie
TYPE_RESOURCE
(z. B. Konferenzräume) für Teilnehmer und AVAILABILITY_TENTATIVE
sowie EVENT_COLOR_KEY
für Veranstaltungen hinzu.
CalendarContract.Colors
wird hinzugefügt, um eine Farbtabelle im Kalenderanbieter darzustellen. Die Klasse bietet Felder für den Zugriff auf Farben, die für ein bestimmtes Konto verfügbar sind. Farben werden durch COLOR_KEY
referenziert, die für einen bestimmten Kontonamen/-typ eindeutig sein muss. Diese Werte können nur vom Synchronisierungsadapter aktualisiert werden.ALLOWED_AVAILABILITY
und ALLOWED_ATTENDEE_TYPES
werden hinzugefügt, um die Unterstützung für den Austausch/die Synchronisierung zu verbessern.TYPE_RESOURCE
(z. B. Konferenzräume) für Teilnehmer und AVAILABILITY_TENTATIVE
sowie EVENT_COLOR_KEY
für Veranstaltungen hinzu.Startbildschirm-Widgets
Ab Android 4.0 sollten Startbildschirm-Widgets kein eigenes Padding mehr enthalten. Stattdessen fügt das System jetzt automatisch Ränder für jedes Widget hinzu, basierend auf den Eigenschaften des aktuellen Bildschirms. Das führt zu einer einheitlicheren, konsistenteren Darstellung von Widgets in einem Raster. Für Anwendungen, die Startbildschirm-Widgets hosten, bietet die Plattform die neue Methode getDefaultPaddingForWidget()
. Anwendungen können diese Methode aufrufen, um das systemdefinierte Padding abzurufen und bei der Berechnung der Anzahl der Zellen zu berücksichtigen, die dem Widget zugewiesen werden sollen.
Rechtschreibprüfung
- Bei Apps, die auf Rechtschreibdienste zugreifen, werden mit einer neuen
cancel()
-Methode alle ausstehenden und laufenden Rechtschreibaufgaben in einer Sitzung abgebrochen. - Für Dienste zur Rechtschreibprüfung können mit dem neuen Vorschlagsflag
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
Vorschläge mit höherer Wahrscheinlichkeit von Vorschlägen mit geringerer Wahrscheinlichkeit unterschieden werden. Beispielsweise könnte ein Rechtschreibprüfprogramm die Markierung setzen, wenn ein eingegebenes Wort nicht im Nutzerwörterbuch enthalten ist, aber wahrscheinliche Vorschläge enthält. Andernfalls wird die Markierung nicht gesetzt.In Verbindung mit der Rechtschreibprüfung können Apps das Flag
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
in Kombination mit anderen Vorschlagsattributen sowie den MethodengetSuggestionsAttributes()
undgetSuggestionsCount()
verwenden, um zu bestimmen, ob eingegebene Wörter als Tippfehler gekennzeichnet und Vorschläge gemacht werden sollen. - Ein neuer
FLAG_AUTO_CORRECTION
-Stil für Textbereiche gibt an, dass die automatische Korrektur auf ein Wort/einen Text angewendet werden soll, das bzw. den der Nutzer gerade eingibt. Diese Art von Vorschlag wird anders dargestellt, um anzuzeigen, dass die automatische Korrektur aktiv ist.
Bluetooth
Mit den neuen öffentlichen Methoden fetchUuidsWithSdp()
und getUuids()
können Apps die Funktionen (UUIDs) ermitteln, die von einem Remotegerät unterstützt werden. Bei fetchUuidsWithSdp()
führt das System eine Diensterkennung auf dem Remotegerät durch, um die unterstützten UUIDs abzurufen, und sendet das Ergebnis dann in einer ACTION_UUID
-Intent.
UI-Toolkit
Mit den neuen Methoden setUserVisibleHint()
und getUserVisibleHint()
kann für ein Fragment angegeben werden, ob es derzeit für Nutzer sichtbar ist. Das System verschiebt den Start von Fragmenten, die für Nutzer nicht sichtbar sind, bis die Loader für sichtbare Fragmente ausgeführt wurden. Der Standardwert für den Sichtbarkeitshinweis ist „wahr“.
Grafik
- Mit der neuen Methode
setDefaultBufferSize(int, int)
inSurfaceTexture
wird die Standardgröße der Bildbuffer festgelegt. Mit dieser Methode kann die Bildgröße beim Erstellen von Bildern mitCanvas
(überlockCanvas(Rect)
) oder OpenGL ES (über eine EGLSurface) festgelegt werden. - Es werden Definitionen für die Enumerationen der OpenGL ES-Erweiterung GL_OES_EGL_image_external hinzugefügt:
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
undGL_TEXTURE_EXTERNAL_OES
.
Bedienungshilfen
- Kunden von
RemoteViews
können jetzt die MethodesetContentDescription()
verwenden, um die Inhaltsbeschreibung einer beliebigen Ansicht im maximierten Layout festzulegen und abzurufen. - Mit den Methoden
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
undsetMaxScrollY()
können Apps den maximalen Scroll-Offset für einAccessibilityRecord
-Objekt abrufen und festlegen. - Wenn der Touch-Exploration-Modus aktiviert ist, gibt eine neue sichere Einstellung
ACCESSIBILITY_SPEAK_PASSWORD
an, ob der Nutzer die IME auffordert, den in Passwortfeldern eingegebenen Text vorzulesen, auch wenn kein Headset verwendet wird. Standardmäßig wird kein Passworttext gesprochen, es sei denn, ein Headset wird verwendet.
Text-in-Sprache
- Die neue Methode
getFeatures()
zum Abfragen und Aktivieren der Netzwerk-TTS-Unterstützung wurde hinzugefügt. - Es wird eine neue Listener-Klasse
UtteranceProgressListener
hinzugefügt, die Engines registrieren können, um Benachrichtigungen über Sprachsynthesefehler zu erhalten.
Datenbank
- Mit einer neuen
CrossProcessCursorWrapper
-Klasse können Contentanbieter Ergebnisse für eine prozessübergreifende Abfrage effizienter zurückgeben. Die neue Klasse ist ein nützlicher Baustein für Cursor, die an Remote-Prozesse gesendet werden. Außerdem können damit normaleCursor
-Objekte transparent inCrossProcessCursor
-Objekte umgewandelt werden.Mit der
CrossProcessCursorWrapper
-Klasse werden häufige Leistungsprobleme und Fehler behoben, die bei der Implementierung von Contentanbietern in Anwendungen auftreten. - Der Konstruktor von
CursorWindow(java.lang.String)
nimmt jetzt einen Namensstring als Eingabe. Das System unterscheidet nicht mehr zwischen lokalen und Remote-Cursorfenstern.CursorWindow(boolean)
wird daher nicht mehr unterstützt.
Intents
Es werden neue Kategorien für das Targeting auf gängige Arten von Anwendungen auf dem Gerät hinzugefügt, z. B. CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
und CATEGORY_APP_MAPS
.
Kamera
- Mit
MediaMetadataRetriever
wird die neue KonstanteMETADATA_KEY_LOCATION
hinzugefügt, damit Apps Standortinformationen für ein Bild oder Video abrufen können. CamcorderProfile
fügt die Auflösungsprofile QVGA (320 × 240) hinzu. Das Qualitätsniveau wird durch die KonstantenQUALITY_QVGA
undQUALITY_TIME_LAPSE_QVGA
dargestellt.- Mit den neuen Methoden
setVideoStabilization()
,getVideoStabilization()
undisVideoStabilizationSupported()
können Sie die Videostabilisierung für eineCamera
prüfen und verwalten.
Berechtigungen
Folgende Berechtigungen sind neu:
- android.Manifest.permission#READ_SOCIAL_STREAM und android.Manifest.permission#WRITE_SOCIAL_STREAM: Ermöglicht es einem Synchronisierungsadapter, Social-Stream-Daten für einen Kontakt im freigegebenen Kontaktdatenanbieter zu lesen und zu schreiben.
Eine detaillierte Übersicht über alle API-Änderungen in Android 4.0.3 (API-Level 15) finden Sie im API-Unterschiedsbericht.
API-Level
Der Android 4.0.3 API wird eine Ganzzahl-ID zugewiesen – 15 –, die im System selbst gespeichert wird. Anhand dieser Kennung, der sogenannten API-Ebene, kann das System vor der Installation einer Anwendung korrekt feststellen, ob sie mit dem System kompatibel ist.
Wenn Sie in Ihrer App APIs verwenden möchten, die in Android 4.0.3 eingeführt wurden, müssen Sie die App für eine Android-Plattform kompilieren, die API-Ebene 15 oder höher unterstützt. Je nach Bedarf müssen Sie dem Element <uses-sdk>
möglicherweise auch ein android:minSdkVersion="15"
-Attribut hinzufügen.
Weitere Informationen finden Sie im Dokument API-Ebenen.