API-Level: 15
Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
) ist ein inkrementeller Release der Plattformfamilie von 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 steht die Plattform Android 4.0.3 als herunterladbare Komponente für das Android SDK zur Verfügung. Die herunterladbare Plattform umfasst eine Android-Bibliothek, ein System-Image, eine Reihe von Emulator-Skins und mehr. Wenn du mit der Entwicklung oder Tests für Android 4.0.3 beginnen möchtest, lade die Plattform mit dem Android SDK Manager in dein SDK herunter.
API-Übersicht
Die folgenden Abschnitte bieten einen technischen Überblick über die neuen APIs in Android 4.0.3.
Social Stream API im Contacts Provider
Anwendungen, die Daten aus sozialen Streams wie Statusaktualisierungen und Check-ins verwenden, können diese Daten jetzt mit den einzelnen Kontakten des Nutzers synchronisieren und Elemente in einem Stream mit Fotos für die einzelnen Kontakte bereitstellen.
Die Datenbanktabelle, die den sozialen Stream eines einzelnen Kontakts enthält, wird durch android.provider.ContactsContract.StreamItems definiert, den URI, für den der URI im Verzeichnis ContactsContract.RawContacts
verschachtelt ist, zu dem die Streamelemente gehören. Jede Tabelle für soziale Streams enthält mehrere Spalten für Metadaten zu jedem Streamelement, z. B. ein Symbol für die Quelle (einen Avatar), ein Label für das Element, den primären Textinhalt, Kommentare zum Element (z. B. Antworten von anderen Personen) und mehr. Mit einem Stream verknüpfte Fotos werden in einer anderen Tabelle gespeichert, die durch android.provider.ContactsContract.StreamItemPhotos definiert wird. Diese ist als Unterverzeichnis von android.provider.ContactsContract.StreamItems Uri verfügbar.
Weitere Informationen finden Sie unter android.provider.ContactsContract.StreamItems und android.provider.ContactsContract.StreamItemPhotos.
Um Elemente aus sozialen Streams für einen Kontakt zu lesen oder zu schreiben, muss eine Anwendung eine Berechtigung vom Nutzer anfordern, indem <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
und/oder <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
in ihren Manifestdateien deklariert werden.
Kalenderanbieter
- Fügt die Klasse
CalendarContract.Colors
hinzu, um eine Farbtabelle im Kalenderanbieter darzustellen. Die Klasse bietet Felder für den Zugriff auf die Farben, die für ein bestimmtes Konto verfügbar sind. Auf Farben wird COLOR_KEY
verwiesen, das 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 für die Exchange-/Synchronisierungsunterstützung hinzugefügt.
- Fügt
TYPE_RESOURCE
(z. B. Konferenzräume) für Teilnehmer und AVAILABILITY_TENTATIVE
sowie EVENT_COLOR_KEY
für Termine hinzu.
CalendarContract.Colors
hinzu, um eine Farbtabelle im Kalenderanbieter darzustellen. Die Klasse bietet Felder für den Zugriff auf die Farben, die für ein bestimmtes Konto verfügbar sind. Auf Farben wird COLOR_KEY
verwiesen, das 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 für die Exchange-/Synchronisierungsunterstützung hinzugefügt.TYPE_RESOURCE
(z. B. Konferenzräume) für Teilnehmer und AVAILABILITY_TENTATIVE
sowie EVENT_COLOR_KEY
für Termine hinzu.Startbildschirm-Widgets
Ab Android 4.0 sollten Startbildschirm-Widgets keinen eigenen Abstand mehr enthalten. Stattdessen fügt das System jetzt automatisch für jedes Widget einen Innenrand hinzu, der auf den Eigenschaften des aktuellen Bildschirms basiert. Dies führt zu einer einheitlicheren,
einheitlichen Darstellung der Widgets in einem Raster. Zur Unterstützung von Anwendungen, die Startbildschirm-Widgets hosten, bietet die Plattform die neue Methode getDefaultPaddingForWidget()
. Anwendungen können diese Methode aufrufen, um den systemdefinierten Abstand abzurufen und bei der Berechnung der Anzahl der Zellen zu berücksichtigen, die dem Widget zugewiesen werden sollen.
Rechtschreibprüfung
- Bei Anwendungen, die auf Dienste für die Rechtschreibprüfung zugreifen, werden mit der neuen Methode
cancel()
alle ausstehenden und laufenden Rechtschreibprüfungsaufgaben in einer Sitzung abgebrochen. - Für die Rechtschreibprüfung können die Dienste mit dem neuen Vorschlags-Flag
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
Vorschläge mit höherer Zuverlässigkeit von Vorschlägen mit niedrigerer Zuverlässigkeit unterscheiden. Eine Rechtschreibprüfung könnte beispielsweise das Flag setzen, wenn ein Eingabewort nicht im Nutzerwörterbuch enthalten ist, aber wahrscheinlich Vorschläge enthält, oder das Flag nicht setzen, wenn ein Eingabewort nicht im Wörterbuch enthalten ist und Vorschläge enthält, die wahrscheinlich weniger nützlich sind.Apps, die mit der Rechtschreibprüfung verbunden sind, können 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 markiert und Vorschläge angezeigt werden sollen. - Der neue
FLAG_AUTO_CORRECTION
-Stil für Text-Spans zeigt an, dass eine automatische Korrektur auf ein Wort / einen Text angewendet wird, den der Nutzer gerade eingibt oder verfasst. Diese Art von Vorschlag wird anders gerendert, um anzuzeigen, dass die automatische Korrektur stattfindet.
Bluetooth
Mit den neuen öffentlichen Methoden fetchUuidsWithSdp()
und getUuids()
können Apps die von einem Remote-Gerät unterstützten Features (UUIDs) ermitteln. Im Fall von fetchUuidsWithSdp()
führt das System eine Diensterkennung auf dem Remote-Gerät aus, um die unterstützten UUIDs zu erhalten. Anschließend sendet das Ergebnis das Ergebnis in einem ACTION_UUID
-Intent.
UI-Toolkit
Mit den neuen Methoden setUserVisibleHint()
und getUserVisibleHint()
kann ein Fragment darauf hinweisen, ob es derzeit für den Nutzer sichtbar ist oder nicht. Das System verzögert den Start von Fragmenten, die für den Nutzer nicht sichtbar sind, bis die Loader für sichtbare Fragmente ausgeführt wurden. Der Sichtbarkeitshinweis ist standardmäßig auf „true“ gesetzt.
Grafik
- Mit der neuen Methode
setDefaultBufferSize(int, int)
inSurfaceTexture
wird die Standardgröße der Bildzwischenspeicher festgelegt. Mit dieser Methode kann die Bildgröße festgelegt werden, wenn Bilder mitCanvas
(überlockCanvas(Rect)
) oder OpenGL ES (über eine EGLSurface) erstellt werden. - Fügt Definitionen für die Enums der GL_OES_EGL_image_external OpenGL ES-Erweiterung hinzu:
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
undGL_TEXTURE_EXTERNAL_OES
.
Bedienungshilfen
- Clients von
RemoteViews
können jetzt die MethodesetContentDescription()
verwenden, um die Inhaltsbeschreibung jeder Ansicht im erhöhten Layout festzulegen und abzurufen. - Mit den Methoden
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
undsetMaxScrollY()
können Apps den maximalen Scrollversatz für einAccessibilityRecord
-Objekt abrufen und festlegen. - Wenn der Touchscreen-Erkundungsmodus aktiviert ist, gibt die neue sichere Einstellung
ACCESSIBILITY_SPEAK_PASSWORD
an, ob der Nutzer den IME anfordert, in Passwortfeldern eingegebener Text vorlesen zu lassen, auch wenn kein Headset verwendet wird. Standardmäßig wird nur dann ein Passworttext gesprochen, wenn ein Headset verwendet wird.
Sprachausgabe
- Die neue Methode
getFeatures()
zum Abfragen und Aktivieren der Netzwerk-TTS-Unterstützung wurde hinzugefügt. - Fügt die neue Listener-Klasse
UtteranceProgressListener
hinzu, die Suchmaschinen registrieren können, um Benachrichtigungen über Sprachsynthesefehler zu erhalten.
Datenbank
- Mit der neuen Klasse
CrossProcessCursorWrapper
können Contentanbieter Ergebnisse für prozessübergreifende Abfragen effizienter zurückgeben. Die neue Klasse ist ein nützlicher Baustein für das Einfügen von Cursors, die remote an Prozesse gesendet werden. Sie kann auch normaleCursor
-Objekte transparent inCrossProcessCursor
-Objekte umwandeln.Die Klasse
CrossProcessCursorWrapper
behebt häufige Leistungsprobleme und Programmfehler, die bei Anwendungen bei der Implementierung von Contentanbietern aufgetreten sind. - Der Konstruktor
CursorWindow(java.lang.String)
verwendet jetzt einen Namensstring als Eingabe. Das System unterscheidet nicht mehr zwischen lokalen und Remote-Cursor-Fenstern. Daher wurdeCursorWindow(boolean)
verworfen.
Intents
Es wurden neue Kategorien für die Ausrichtung auf gängige App-Typen auf dem Gerät hinzugefügt, z. B. CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
oder CATEGORY_APP_MAPS
.
Kamera
MediaMetadataRetriever
fügt die neue KonstanteMETADATA_KEY_LOCATION
hinzu, damit Apps Standortinformationen für ein Bild oder Video abrufen können.CamcorderProfile
fügt die Profile mit QVGA-Auflösung (320 × 240) hinzu. Die Qualitätsstufe wird durch die KonstantenQUALITY_QVGA
undQUALITY_TIME_LAPSE_QVGA
dargestellt.- Mit den neuen Methoden
setVideoStabilization()
,getVideoStabilization()
undisVideoStabilizationSupported()
kannst du die Videostabilisierung fürCamera
prüfen und verwalten.
Berechtigungen
Dies sind neue Berechtigungen:
- android.Manifest.permission#READ_SOCIAL_STREAM und android.Manifest.permission#WRITE_SOCIAL_STREAM: Ermöglicht einem Synchronisierungsadapter, Daten aus sozialen Streams in einem Kontakt im freigegebenen Contacts Provider zu lesen und zu schreiben.
Eine detaillierte Ansicht aller API-Änderungen in Android 4.0.3 (API-Level 15) finden Sie im Bericht zu API-Unterschieden.
API-Ebene
Der Android 4.0.3 API wird eine Ganzzahl-ID (15) zugewiesen, die im System selbst gespeichert wird. Diese Kennung, die als „API-Ebene“ bezeichnet wird, ermöglicht dem System, vor der Installation der Anwendung korrekt zu bestimmen, ob eine Anwendung mit dem System kompatibel ist.
Wenn Sie in Android 4.0.3 eingeführte APIs in Ihrer App verwenden möchten, müssen Sie die App mithilfe einer Android-Plattform kompilieren, die API-Level 15 oder höher unterstützt. Je nach Ihren Anforderungen 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.