Mit Android 12 werden tolle neue Funktionen und APIs für Entwickler eingeführt. In den folgenden Abschnitten erhalten Sie Informationen zu Funktionen für Ihre Apps und zu den ersten Schritten mit den zugehörigen APIs.
Eine detaillierte Liste der neuen, geänderten und entfernten APIs finden Sie im Bericht zu API-Unterschieden. Ausführliche Informationen zu den neuen APIs findest du in der Android API-Referenz. Neue APIs sind hervorgehoben dargestellt. Wenn du wissen möchtest, in welchen Bereichen sich Plattformänderungen auf deine Apps auswirken können, sieh dir die Verhaltensänderungen bei Android 12 für Apps, die auf Android 12 ausgerichtet sind und für alle Apps, an.
Nutzererfahrung
Material You
Mit Android 12 wird eine neue Designsprache namens Material You eingeführt, mit der du personalisierte und ansprechende Apps erstellen kannst. Um alle aktuellen Updates von Material Design 3 in deine Apps zu integrieren, kannst du eine Alphaversion der Material Design-Komponenten ausprobieren.
Widgets-Verbesserungen
In Android 12 wird die bestehende Widgets API überarbeitet, um die Nutzer- und Entwicklererfahrung auf der Plattform und in Launchern zu verbessern. Wir haben einen Leitfaden erstellt, mit dem du prüfen kannst, ob dein Widget mit Android 12 kompatibel ist, und es mit neuen Funktionen aktualisieren.
Weitere Informationen finden Sie unter Verbesserungen bei Android 12-Widgets.
Einfügen von Rich Content
Mit Android 12 wird eine neue einheitliche API eingeführt, mit der Ihre App Rich Content aus jeder verfügbaren Quelle empfangen kann: Zwischenablage, Tastatur oder Drag-and-drop.
Weitere Informationen finden Sie unter Rich Media-Inhalte empfangen.
API für App-Ladebildschirme
Mit Android 12 wird eine neue App-Startanimation für alle Apps eingeführt. Sie enthält eine In-App-Bewegung vom Startpunkt, einen Ladebildschirm mit dem App-Symbol und einen Übergang zur App selbst. Weitere Informationen finden Sie im Entwicklerleitfaden für Ladebildschirme.
APIs mit abgerundeten Ecken
In Android 12 werden RoundedCorner
und WindowInsets.getRoundedCorner(int
position)
eingeführt, die den Radius und Mittelpunkt für abgerundete Ecken angeben.
Weitere Informationen finden Sie unter Abgerundete Ecken.
Umfassende haptische Funktionen
Android 12 bietet zusätzliche Tools zum Erstellen von informativem haptischem Feedback für UI-Ereignisse, immersiven und ansprechenden Effekten für Spiele und haptische Haptik für mehr Produktivität.
Bedienelemente
Android 12 bietet ausdrucksstarke Effekte wie Low Tick, die die höhere Frequenzbandbreite der neuesten Bedienelemente nutzen. Spieleentwickler können jetzt unabhängig in Gamecontrollern auf mehrere unterschiedliche Bedienelemente zugreifen, um denselben Effekt synchron oder unterschiedliche haptische Effekte auf mehrere Bedienelemente zu erzeugen. Entwicklern empfehlen wir die Verwendung der Konstanten und Primitive als Bausteine für umfassende haptische Effekte – Konstanten zur Optimierung von UI-Ereignissen und haptisches Composer zur Abfolge von Primitiven für komplexere Effekte. Diese APIs können auf Pixel 4-Geräten getestet werden. Wir arbeiten weiterhin mit unseren Geräteherstellern zusammen, um Nutzern auf der ganzen Welt die neueste haptische Unterstützung zu bieten.
Audiogekoppelte Haptikeffekte
Android 12-Apps können über den Vibrationsalarm des Smartphones haptisches Feedback generieren, das aus einer Audiositzung abgeleitet wird. Dies bietet die Möglichkeit für ein immersiveres Spiel- und Audioerlebnis. Beispielsweise können haptische Klingeltöne dabei helfen, Anrufer zu identifizieren, oder ein Fahrspiel könnte das Gefühl von unebenem Gelände simulieren.
Weitere Informationen finden Sie in der Referenzdokumentation zu HapticGenerator
.
App-Suche
Mit Android 12 wird AppSearch, eine leistungsstarke On-Device-Suchmaschine, als Systemdienst eingeführt. Mit AppSearch können Anwendungen strukturierte Daten indexieren und mit integrierten Volltextsuchfunktionen durchsuchen. Darüber hinaus unterstützt AppSearch native Suchfunktionen wie hocheffiziente Indexierung und Abrufe, mehrsprachige Unterstützung und Relevanzranking.
![Diagramm zur Indexierung und Suche in AppSearch](https://developer.android.com/static/images/about/versions/12/appsearch.png?authuser=6&hl=de)
AppSearch gibt es in zwei Varianten: einen lokalen Index, den Ihre App verwenden kann, der mit älteren Android-Versionen kompatibel ist, oder einen zentralen Index, der für das gesamte System in Android 12 verwaltet wird. Mit dem zentralen Index kann Ihre Anwendung zulassen, dass ihre Daten durch die vorinstallierte Informationskomponente des Systems auf Oberflächen der System-UI angezeigt werden. Welche Daten genau auf System-UI-Oberflächen angezeigt werden, hängt vom OEM ab. Darüber hinaus kann Ihre Anwendung Daten sicher mit anderen Anwendungen teilen, damit diese ebenfalls diese Daten durchsuchen können.
Weitere Informationen zu AppSearch finden Sie im Entwicklerleitfaden. Die AppSearch-Jetpack-Bibliothek bietet eine entwicklerfreundliche API-Oberfläche sowie Unterstützung für Annotationsprozessoren.
Spielmodus
Mit der Game Mode API und den Spielmodus-Eingriffen können Sie das Spiel optimieren, indem Eigenschaften wie Leistung oder Akkulaufzeit basierend auf Nutzereinstellungen oder spielspezifischen Konfigurationen priorisiert werden.
Weitere Informationen finden Sie unter Spielmodus.
Empfehlungen und Verbesserungen für Bild im Bild (BiB)
Mit Android 12 wurden die folgenden Verbesserungen für den BiB-Modus eingeführt:
Unterstützung neuer BiB-Gesten
Android 12 unterstützt jetzt Touch-Gesten zum Verpacken und Zoomen durch Auseinander- und Zusammenziehen der Finger für das BiB-Fenster:
Um das Fenster zu verstecken, kann der Nutzer es zum linken oder rechten Rand ziehen. Zum Aufheben der Verriegelung kann der Nutzer entweder auf den sichtbaren Teil des versteckten Fensters tippen oder ihn herausziehen.
Der Nutzer kann jetzt durch Auseinander- und Zusammenziehen der Finger die Größe des BiB-Fensters anpassen.
Empfohlene neue Funktionen für eine optimierte BiB-Umstellung
Unter Android 12 wurden die animierten Übergänge zwischen Vollbild- und BiB-Fenstern erheblich kosmetisch verbessert. Wir empfehlen dringend, alle relevanten Änderungen zu implementieren. Danach werden diese Änderungen automatisch auf große Bildschirme wie faltbare Smartphones und Tablets skaliert, ohne dass zusätzlicher Aufwand erforderlich ist.
Zu diesen Funktionen gehören:
Neues API-Flag für einen reibungsloseren Wechsel in den BiB-Modus bei der Bedienung über Gesten
Verwende das Flag
setAutoEnterEnabled
, um reibungslosere Übergänge in den BiB-Modus zu ermöglichen, wenn im Navigationsmodus mit Touch-Gesten nach oben zum Startbildschirm wischst. Bisher wartete Android darauf, dass die Animation zum Wischen nach oben abgeschlossen war, bevor das BiB-Fenster ausgeblendet wurde.Flüssigere Animationen beim Aufrufen und Verlassen des BiB-Modus
Das Flag
SourceRectHint
wird jetzt wiederverwendet, um beim Aufrufen und Beenden des BiB-Modus eine flüssigere Animation zu implementieren.Neues API-Flag zum Deaktivieren der nahtlosen Größenanpassung für Nicht-Video-Inhalte
Das Flag
SeamlessResizeEnabled
sorgt für eine viel flüssigere Überblendungsanimation, wenn die Größe von Inhalten ohne Videos im BiB-Fenster geändert wird. Bisher konnten durch die Größenanpassung von Inhalten ohne Videos in einem BiB-Fenster verwirrende visuelle Artefakte entstehen.
Neue Anrufbenachrichtigungen, mit denen die Wichtigkeit eingehender Anrufe bewertet werden kann
In Android 12 wird der neue Benachrichtigungsstil Notification.CallStyle
für Anrufe hinzugefügt. Wenn Sie diese Vorlage verwenden, kann Ihre App die Wichtigkeit aktiver Anrufe erkennen. Dazu wird ein gut sichtbarer Chip in der Statusleiste angezeigt, der die Uhrzeit des Anrufs anzeigt. Der Nutzer kann auf diesen Chip tippen, um zum Anruf zurückzukehren.
Da eingehende und laufende Anrufe für Nutzer am wichtigsten sind, werden diese Benachrichtigungen in der Schattierung ganz oben angezeigt. Durch diese Einstufung kann das System diese priorisierten Aufrufe möglicherweise an andere Geräte weiterleiten.
Implementieren Sie den folgenden Code für alle Arten von Aufrufen.
Kotlin
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
Mit forIncomingCall()
kannst du eine Benachrichtigung im Stil eines Anrufs für einen eingehenden Anruf erstellen.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
Mit forOngoingCall()
kannst du eine Benachrichtigung im Stil eines Anrufs für einen laufenden Anruf erstellen.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
Mit forScreeningCall()
können Sie eine Anrufbenachrichtigung zum Filtern von Anrufen erstellen.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
Erweiterte Bildunterstützung für Benachrichtigungen
In Android 12 kannst du die Benachrichtigungsfunktion deiner App jetzt durch animierte Bilder in MessagingStyle()
- und BigPictureStyle()
-Benachrichtigungen verbessern. Außerdem können Nutzer in Ihrer Anwendung jetzt Bildnachrichten senden, wenn sie über die Benachrichtigungsleiste auf Nachrichten antworten.
Verbesserungen im immersiven Modus für die Bedienung über Gesten
In Android 12 wird das vorhandene Verhalten konsolidiert, damit Nutzer im immersiven Modus Befehle zur Bedienung über Gesten ausführen können. Außerdem bietet Android 12 Abwärtskompatibilität für den fixierten Modus.
Freigabe der letzten URL (nur Pixel)
Auf Pixel-Geräten können Nutzer jetzt Links zu zuletzt angesehenen Webinhalten direkt über den Bildschirm „Zuletzt verwendet“ teilen. Nachdem sie die Inhalte in einer App aufgerufen haben, können sie zum Bildschirm „Recents“ (Zuletzt verwendet) wischen, die App finden, in der sie sich die Inhalte angesehen haben, und dann auf die Link-Schaltfläche tippen, um die URL zu kopieren oder zu teilen.
Weitere Informationen finden Sie unter Freigabe der zuletzt verwendeten URL aktivieren.
Sicherheit & Datenschutz
Privatsphäredashboard
Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen ein Privatsphäredashboard angezeigt. Auf diesem Bildschirm können Nutzer auf separate Bildschirme zugreifen, die anzeigen, wenn Apps auf Standort-, Kamera- und Mikrofoninformationen zugreifen. Jeder Bildschirm zeigt eine Zeitachse, wann verschiedene Anwendungen auf einen bestimmten Datentyp zugegriffen haben. Abbildung 1 zeigt die Zeitachse des Datenzugriffs für Standortinformationen.
Deine App kann Nutzern eine Begründung liefern, damit sie nachvollziehen können, warum sie auf Standort-, Kamera- oder Mikrofondaten zugreift. Diese Begründung kann auf dem neuen Privatsphäredashboard, auf dem Berechtigungsbildschirm Ihrer App oder in beiden angezeigt werden.
Bluetooth-Berechtigungen
In Android 12 werden die Berechtigungen BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
und BLUETOOTH_CONNECT
eingeführt. Diese Berechtigungen erleichtern es Apps, die auf Android 12 ausgerichtet sind, mit Bluetooth-Geräten zu interagieren. Dies gilt insbesondere für Apps, die keinen Zugriff auf den Gerätestandort benötigen.
Erklärungen zu Bluetooth-Berechtigungen deiner App aktualisieren
Aktualisiere die App-Logik, um dein Gerät für die Ausrichtung auf Android 12 oder höher vorzubereiten. Deklarieren Sie statt eines Legacy-Satzes von Bluetooth-Berechtigungen einen moderneren Satz von Bluetooth-Berechtigungen.
Berechtigungsgruppen suchen
Unter Android 12 oder höher können Sie abfragen, wie das System von der Plattform bereitgestellte Berechtigungen in Berechtigungsgruppen einordnet:
- Rufen Sie
getGroupOfPlatformPermission()
auf, um die Berechtigungsgruppe zu ermitteln, der das System eine plattformdefinierte Berechtigung erteilt hat. - Rufen Sie
getPlatformPermissionsForGroup()
auf, um die plattformdefinierten Berechtigungen zu ermitteln, die das System einer bestimmten Berechtigungsgruppe zugewiesen hat.
App-Overlay-Fenster ausblenden
Damit Entwickler besser steuern können, was Nutzer sehen, wenn sie mit der App des Entwicklers interagieren, bietet Android 12 die Möglichkeit, Overlay-Fenster auszublenden, die von Apps mit der Berechtigung SYSTEM_ALERT_WINDOW
gezeichnet werden.
Nachdem die Berechtigung HIDE_OVERLAY_WINDOWS
deklariert wurde, kann eine App setHideOverlayWindows()
aufrufen, um anzugeben, dass alle Fenster vom Typ TYPE_APPLICATION_OVERLAY
ausgeblendet werden sollen, wenn das eigene Fenster der App sichtbar ist. Apps können dies tun, wenn sensible Bildschirme, wie z. B. Transaktionsbestätigungsabläufe, angezeigt werden.
Für Apps, die Fenster vom Typ TYPE_APPLICATION_OVERLAY
anzeigen, sollten Alternativen in Betracht gezogen werden, die für den jeweiligen Anwendungsfall besser geeignet sind, wie Bild im Bild oder Bubbles.
Schutz-Flag für Berechtigungen für bekannte Unterzeichner
Ab Android 12 können Sie mit dem Attribut knownCerts
für Berechtigungen auf Signaturebene zum Zeitpunkt der Deklaration auf die Digests bekannter Signaturzertifikate verweisen.
Deine App kann dieses Attribut deklarieren und das Flag knownSigner
verwenden, damit Geräte und Apps anderen Apps Signaturberechtigungen erteilen können, ohne sie bei der Herstellung und Lieferung des Geräts signieren zu müssen.
Attestierung von Geräteeigenschaften
Android 12 erweitert die Gruppe von Apps, die die in einem Attestierungszertifikat enthaltenen Geräteeigenschaften prüfen können, wenn diese Anwendungen einen neuen Schlüssel generieren.
Ab Android 9 (API-Level 28) können Inhaber von Geräterichtlinien, die Keymaster 4.0 oder höher verwenden, die Geräteeigenschaften in diesen Attestierungszertifikaten überprüfen. Ab Android 12 kann jede App, die auf Android 12 (API-Level 31) oder höher ausgerichtet ist, diese Überprüfung mit der Methode setDevicePropertiesAttestationIncluded()
durchführen.
Die generierten Geräteattribute umfassen die folgenden Build
-Felder:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Aktionen für sichere Sperrbildschirmbenachrichtigungen
Ab Android 12 unterstützt die Klasse Notification.Action.Builder
die Methode setAuthenticationRequired()
, mit der Ihre App fordert, dass ein Gerät entsperrt sein muss, bevor Ihre App eine bestimmte Benachrichtigungsaktion aufruft. Diese Methode erhöht die Sicherheit von Benachrichtigungen auf gesperrten Geräten.
Lokalisierbare Strings für BiometricPrompt
Mit Android 12 werden neue APIs eingeführt, mit denen du die biometrische Authentifizierung deiner App verbessern kannst. Die neue verschachtelte Klasse BiometricManager.Strings
enthält die Methoden getButtonLabel()
, getPromptMessage()
und getSettingName()
, mit denen Ihre App ein für Nutzer lesbares und lokalisiertes Schaltflächenlabel, eine Prompt-Nachricht oder den Namen der App-Einstellung abrufen kann. Mit diesen Labels kannst du präzisere Anweisungen für den Nutzer erstellen, die sich speziell auf die verwendeten biometrischen Authentifizierungsmethoden beziehen, z. B. „Entsperrung per Gesichtserkennung verwenden“ oder „Fingerabdruck zum Fortfahren verwenden“.
Phishing-Erkennung in Messaging-Apps (nur Pixel)
![](https://developer.android.com/static/images/about/versions/12/phishing-detection.png?authuser=6&hl=de)
Auf unterstützten Pixel-Geräten führt Android 12 eine Phishing-Erkennung für Nachrichten aus, die in gängigen Messaging-Apps empfangen werden. Das System nutzt maschinelles Lernen auf dem Gerät, um verdächtige Aktivitäten zu erkennen. Wenn das System erkannt wird, zeigt es ein Sicherheits-Overlay über der Benutzeroberfläche der Messaging-App an, um die Nutzer zu warnen. Beispielsweise kann die Phishing-Erkennung Nutzer vor den folgenden potenziellen Risiken warnen:
- Verdächtige Anfragen, z. B. um einen Code oder Geld zu senden
- Nicht vertrauenswürdige URLs
- Schädliche Anhänge
- Links zu schädlichen Apps
Mit dem Overlay wird nicht nur der Nutzer gewarnt, sondern es kann auch eine verdächtige Nachricht melden und Feedback zu Warnungen des Systems geben.
Entwickler können diese Funktion deaktivieren, indem sie ein neues Metadaten-Tag mit dem String com.google.android.ALLOW_PHISHING_DETECTION
in ihre App-Manifestdateien einfügen. Beispiel:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Medien
Kompatible Medientranscodierung
Ab Android 12 (API-Level 31) kann das System auf dem Gerät aufgezeichnete HEVC(H.265)- und HDR-Videos (HDR10 und HDR10+) automatisch in AVC (H.264) transcodieren. Dieses Format ist weitgehend mit Standardplayern kompatibel. Dabei werden moderne Codecs genutzt, sofern sie verfügbar sind, ohne Abstriche bei der Kompatibilität mit älteren Anwendungen.
Weitere Informationen finden Sie unter Transcodierung von kompatiblen Medien.
Performance-Klasse
Mit Android 12 wird ein Standard mit der Bezeichnung Leistungsklasse eingeführt. Eine Leistungsklasse gibt Hardwarefunktionen an, die über die grundlegenden Anforderungen von Android hinausgehen. Für jedes Android-Gerät wird die von ihm unterstützte Leistungsklasse deklariert. Entwickler können die Leistungsklasse des Geräts zur Laufzeit prüfen und aktualisierte Funktionen anbieten, bei denen die Funktionen des Geräts optimal genutzt werden.
Weitere Informationen finden Sie unter Leistungsklasse.
Verbesserungen bei der Videocodierung
In Android 12 wird ein Standardsatz von Schlüsseln zum Steuern des QP-Werts (Quantisierungsparameters) für die Videocodierung definiert, wodurch Entwickler anbieterspezifischen Code vermeiden können.
Die neuen Schlüssel sind in der MediaFormat
API und in der NDK-Media-Bibliothek verfügbar.
Ab Android 12 gelten für Videoencoder bestimmte Mindestqualitätsanforderungen. Dadurch wird sichergestellt, dass die Qualität der Codierung von Videos mit hoher Szenenkomplexität nicht besonders schlecht ist.
Audiofokus
Ab Android 12 (API-Ebene 31): Wenn eine App den Audiofokus anfordert, während eine andere App den Fokus hat und wiedergegeben wird, wird die abspielende App vom System ausgeblendet.
Weitere Informationen finden Sie unter Audiofokus in Android 12 und höher.
MediaDrm-Updates
So ermitteln Sie, ob für die aktuellen MediaDrm
APIs eine sichere Decoderkomponente erforderlich ist:
- Erstellen Sie ein
MediaDrm
. - Öffnen Sie eine Sitzung, um eine Sitzungs-ID zu erhalten.
- Erstellen Sie mithilfe der Sitzungs-ID eine
MediaCrypto
. MediaCrypto.requiresSecureDecoderComponent(mimeType)
anrufen.
Mit den neuen Methoden requiresSecureDecoder(@NonNull String mime)
und requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
können Sie dies ermitteln, sobald Sie eine MediaDrm
erstellen.
Kamera
Kamera 2-Anbietererweiterungen
Viele unserer Gerätehersteller haben benutzerdefinierte Kameraerweiterungen wie Bokeh, HDR und den Nachtmodus entwickelt, mit denen Apps die Nutzerfreundlichkeit ihrer Geräte optimieren können. Diese benutzerdefinierten Anbietererweiterungen werden bereits von der CameraX-Bibliothek unterstützt. In Android 12 werden diese Anbietererweiterungen jetzt direkt auf der Plattform zur Verfügung gestellt.
Dadurch können Anwendungen mit komplexen Camera2
-Implementierungen Anbietererweiterungen nutzen, ohne größere Änderungen am Legacy-Code vornehmen zu müssen. Die Camera2 Extension APIs bieten genau denselben Satz an Erweiterungen wie in CameraX. Diese werden bereits auf vielen verschiedenen Geräten unterstützt, sodass Sie sie ohne zusätzliche Konfiguration verwenden können.
Weitere Informationen finden Sie unter CameraExtensionCharacteristics
.
Unterstützung von Quad Bayer-Kamerasensor
Heutzutage werden viele Android-Geräte mit extrem hochauflösenden Kamerasensoren ausgeliefert, in der Regel mit Quad- oder Nona Bayer-Mustern. Diese bieten große Flexibilität in Bezug auf Bildqualität und Leistung bei schlechten Lichtverhältnissen. Mit Android 12 werden neue Plattform-APIs eingeführt, mit denen Drittanbieter-Apps diese vielseitigen Sensoren in vollem Umfang nutzen können. Die neuen APIs unterstützen das einzigartige Verhalten dieser Sensoren und berücksichtigen, dass sie möglicherweise unterschiedliche Streamkonfigurationen und -kombinationen unterstützen, wenn sie im Modus „Volle Auflösung“ oder im Modus „Maximale Auflösung“ statt im Modus „Standard“ arbeiten.
Grafiken und Bilder
Apps direkten Zugriff auf Tombstone-Traces gewähren
Ab Android 12 können Sie über die Methode ApplicationExitInfo.getTraceInputStream()
als Protokollzwischenspeicher auf das native Absturz-Tombstone Ihrer App zugreifen. Der Protokollzwischenspeicher wird mit diesem Schema serialisiert.
Bisher war die Android Debug Bridge (ADB) die einzige Möglichkeit, auf diese Informationen zuzugreifen.
Weitere Informationen finden Sie unter Apps direkten Zugriff auf Tombstone-Traces gewähren.
AVIF-Bildunterstützung
Android 12 unterstützt jetzt Images, die das AV1-Bilddateiformat (AVIF) verwenden. AVIF ist ein Containerformat für mit AV1 codierte Bilder und Bildsequenzen. AVIF nutzt die Intra-Frame-codierten Inhalte der Videokomprimierung. Dadurch wird die Bildqualität im Vergleich zu älteren Bildformaten wie JPEG bei derselben Dateigröße erheblich verbessert. Eine detaillierte Übersicht über die Vorteile dieses Formats finden Sie in dem Blogpost von Jake Archibald.
Einfachere Weichzeichner, Farbfilter und andere Effekte
In Android 12 wird das neue RenderEffect
hinzugefügt, das gängige Grafikeffekte wie Weichzeichner, Farbfilter, Android-Shader-Effekte und mehr auf View
s und Renderinghierarchien anwendet. Effekte können entweder als Ketteneffekte (die einen inneren und äußeren Effekt bilden) oder als gemischte Effekte kombiniert werden. Aufgrund der begrenzten Prozessorleistung wird diese Funktion möglicherweise nicht von allen Android-Geräten unterstützt.
Effekte können auch auf das zugrunde liegende RenderNode
für View
s angewendet werden, indem View.setRenderEffect(RenderEffect)
aufgerufen wird.
So implementierst du ein RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Decodierung animierter Bilder
In Android 12 wurde die NDK ImageDecoder
API erweitert, um alle Frames und Timingdaten aus Bildern zu decodieren, die das animierte GIF und animierte WebP-Dateiformate verwenden. Bei der Einführung in Android 11 hat diese API nur das erste Bild aus Animationen in diesen Formaten decodiert.
Verwende ImageDecoder
anstelle von Drittanbieter-Bibliotheken, um die APK-Größe weiter zu verringern und von zukünftigen Sicherheits- und Leistungsupdates zu profitieren.
Weitere Informationen zur API finden Sie in der API-Referenz und im Beispiel auf GitHub.
Konnektivität
Companion-Apps aktiv lassen
In Android 12 werden APIs für folgende Funktionen eingeführt, damit Companion-Apps weiterhin ausgeführt werden können, um das Gerät zu verwalten:
- Ermöglicht es, eine App zu aktivieren, wenn sich ein Begleitgerät in Reichweite befindet.
- Achte darauf, dass der Prozess weiterhin ausgeführt wird, während sich das Gerät in Reichweite befindet.
Damit du die APIs nutzen kannst, müssen deine Geräte über den Companion Device Manager verbunden sein. Weitere Informationen finden Sie unter CompanionDeviceManager.startObservingDevicePresence()
und CompanionDeviceService.onDeviceAppeared()
.
Profile für Companion-Gerätemanager
![](https://developer.android.com/static/images/about/versions/12/companion-device-profile.png?authuser=6&hl=de)
Partner-Apps auf Geräten mit Android 12 (API-Level 31) und höher können Profile von Companion-Geräten verwenden, um eine Verbindung mit einer Smartwatch herzustellen. Die Verwendung eines Profils vereinfacht den Registrierungsprozess, da die Gewährung eines gerätetypspezifischen Satzes von Berechtigungen in einem Schritt gebündelt wird.
Die gebündelten Berechtigungen werden der Companion-App gewährt, sobald eine Verbindung mit dem Gerät hergestellt wird, und gelten nur so lange, wie das Gerät verknüpft ist. Wenn Sie die App löschen oder die Verknüpfung entfernen, werden die Berechtigungen entfernt.
Weitere Informationen finden Sie unter AssociationRequest.Builder.setDeviceProfile()
.
Verbesserungen bei der Schätzung der Bandbreite
In Android 12 wurden die von getLinkDownstreamBandwidthKbps()
und getLinkUpstreamBandwidthKbps()
bereitgestellten Funktionen zur Bandbreitenschätzung sowohl für WLAN- als auch für Mobilfunkverbindungen verbessert. Die zurückgegebenen Werte stellen nun den gesamten gewichteten durchschnittlichen Durchsatz des Nutzers pro Mobilfunkanbieter oder WLAN-SSID, Netzwerktyp und Signalebene für alle Anwendungen auf dem Gerät dar.
Dies kann eine genauere und realistischere Schätzung des erwarteten Durchsatzes sowie beim Kaltstart Ihrer Anwendung liefern und erfordert im Vergleich zur Verwendung anderer Methoden zur Durchsatzschätzung weniger Zyklen.
Verbesserungen für Wi-Fi Aware (NAN)
Android 12 bietet einige Verbesserungen für Wi‐Fi Aware:
- Auf Geräten mit Android 12 (API-Level 31) und höher können Sie sich über den
onServiceLost()
-Callback benachrichtigen lassen, wenn Ihre App einen erkannten Dienst verloren hat, weil der Dienst angehalten wird oder sich außerhalb des Bereichs befindet. - Die Einrichtung mehrerer Datenpfade (NAN-Datenpfade) ändert sich, um effizienter zu werden. Frühere Versionen verwendeten L2-Messaging, um Peer-Informationen der Initiatoren auszutauschen, was zu Latenz geführt hat. Auf Geräten mit Android 12 und höher kann der Replyer (Server) so konfiguriert werden, dass er jeden Peer akzeptiert, d. h. die Initiatorinformationen nicht im Voraus kennen müssen. Dies beschleunigt die Bereitstellung von Datenpfaden und ermöglicht mehrere Punkt-zu-Punkt-Verbindungen mit nur einer Netzwerkanfrage.
- Wenn Sie verhindern möchten, dass das Framework Erkennungs- oder Verbindungsanfragen ablehnt, weil die Ressourcen zur Neige gehen, können Sie auf Geräten mit Android 12 und höher
WifiAwareManager.getAvailableAwareResources()
aufrufen. Mit dem Rückgabewert dieser Methode können Sie die Anzahl der verfügbaren Datenpfade, die Anzahl der verfügbaren Veröffentlichungssitzungen und die Anzahl der verfügbaren Abositzungen abrufen.
Gleichzeitige Peer-to-Peer- und Internetverbindung
Wenn Geräte, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, auf Geräten mit Hardwareunterstützung laufen, wird Ihre bestehende WLAN-Verbindung beim Herstellen der Verbindung zum Peer-Gerät nicht durch Peer-to-Peer-Verbindungen getrennt. Verwenden Sie WifiManager.isMultiStaConcurrencySupported()
, um zu prüfen, ob diese Funktion unterstützt wird.
„Display aus“ für NFC-Zahlungen aktivieren
In Apps, die auf Android 12 und höher ausgerichtet sind, kannst du NFC-Zahlungen aktivieren, ohne dass das Display des Geräts eingeschaltet ist. Setze dazu requireDeviceScreenOn
auf false
. Weitere Informationen zu NFC-Zahlungen mit gesperrtem oder gesperrtem Display finden Sie unter Verhalten bei abgeschaltetem oder Sperrbildschirm.
Speicher
Mit Android 12 werden die folgenden Funktionen zur Speicherverwaltung eingeführt:
- Media Store-Unterstützung für
MediaDocumentsProvider
, wenn Ihre Anwendung einen Medien-URI abruft, der einem bestimmten URI des Dokumentanbieters entspricht. - Ein Verzeichnis für Sprachaufnahmen.
- Die Berechtigung
MANAGE_MEDIA
, mit der eine App Medienverwaltungsvorgänge ausführen kann, ohne dass dem Nutzer für jeden Vorgang ein Bestätigungsdialogfeld angezeigt wird. - Apps, die sowohl die Berechtigung
MANAGE_EXTERNAL_STORAGE
als auch die BerechtigungQUERY_ALL_PACKAGES
haben, z. B. Apps zur Dateiverwaltung, können eine benutzerdefinierte Aktivität zur Verwaltung des Speicherplatzes einer anderen App aufrufen, sofern die andere App die benutzerdefinierte Aktivität erstellt.
Hauptfunktion
Automatische App-Updates
Mit Android 12 wird die Methode setRequireUserAction()
für Apps eingeführt, die die PackageInstaller
API verwenden.
Mit dieser Methode können Installationsanwendungen Anwendungsupdates ausführen, ohne dass der Nutzer die Aktion bestätigen muss.
Informationen zum Chipsatz des Geräts
In Android 12 werden android.os.Build
zwei Konstanten hinzugefügt, die Informationen zum SoC-Chipsatzanbieter und zum Modell über das SDK bereitstellen. Sie können diese Informationen abrufen, indem Sie Build.SOC_MANUFACTURER
bzw. Build.SOC_MODEL
aufrufen.
Updates für Java-Kern-APIs
Aufgrund von Anfragen und der Zusammenarbeit mit Entwicklern haben wir die folgenden Kernbibliotheken in Android 12 hinzugefügt:
Kurs | APIs |
---|---|
java.lang.Deprecated
|
|
java.lang.Byte
|
|
java.lang.Short
|
|
java.lang.Math
|
|
java.lang.StrictMath
|
|
java.util.Set
|
copyOf()
|
java.util.Map
|
copyOf()
|
java.util.List
|
copyOf()
|
java.time.Duration
|
|
java.time.LocalTime
|