Android 12 bietet tolle neue Funktionen und APIs für Entwickler. 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 API-Diffbericht. Details zu neuen APIs finden Sie in der Android API-Referenz. Neue APIs sind hervorgehoben. Informationen zu Bereichen, in denen sich Plattformänderungen auf Ihre Apps auswirken können, finden Sie in den Änderungen am Verhalten von Android 12 für Apps, die auf Android 12 ausgerichtet sind und in den Änderungen am Verhalten von Android 12 für alle Apps.
Nutzererfahrung
Material You
Mit Android 12 wird eine neue Designsprache namens Material You eingeführt, mit der Sie ansprechendere, personalisiertere Apps entwickeln können. Wenn Sie alle aktuellen Material Design 3-Updates in Ihre Apps einbinden möchten, können Sie eine Alphaversion von Material Design-Komponenten ausprobieren.
Verbesserungen bei Widgets
In Android 12 wurde die Widgets API überarbeitet, um die Nutzerfreundlichkeit und die Nutzererfahrung auf der Plattform und in Launchern zu verbessern. Wir haben einen Leitfaden erstellt, mit dem Sie prüfen können, ob Ihr Widget mit Android 12 kompatibel ist, und es mit neuen Funktionen aktualisieren können.
Weitere Informationen finden Sie unter Verbesserungen bei Widgets in Android 12.
Einfügen von Rich Content
Android 12 führt eine neue einheitliche API ein, mit der Ihre App umfangreiche Inhalte aus jeder verfügbaren Quelle empfangen kann: Zwischenablage, Tastatur oder Drag-and-drop.
Weitere Informationen finden Sie unter Rich Content empfangen.
App-Startbildschirm-API
Android 12 führt eine neue App-Startanimation für alle Apps ein, die eine Bewegung in der App ab dem Startpunkt, einen Splashscreen mit dem App-Symbol und einen Übergang zur App selbst umfasst. 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 den 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.
Aktoreffekte
Android 12 bietet ausdrucksstarke Effekte wie Low-Tick, die die breitere Frequenzbandbreite der neuesten Aktuatoren nutzen. Spieleentwickler können jetzt unabhängig voneinander auf mehrere verschiedene Aktoren in Gamecontrollern zugreifen, um denselben Effekt synchron oder verschiedene haptische Effekte auf mehrere Aktoren anzuwenden. Wir empfehlen Entwicklern, die Konstanten und Primitiven als Bausteine für ausdrucksstarke haptische Effekte zu verwenden. Konstanten eignen sich zum Optimieren von UI-Ereignissen und der Haptik-Composer zum Sequenzieren von Primitiven für komplexere Effekte. Diese APIs können auf Google Pixel 4 getestet werden. Wir arbeiten auch weiterhin mit unseren Geräteherstellern zusammen, um Nutzern im gesamten Ökosystem die neuesten haptischen Funktionen zur Verfügung zu stellen.
Audiogekoppelte haptische Effekte
Apps unter Android 12 können mithilfe des Vibrationsmotors des Smartphones haptisches Feedback aus einer Audiositzung generieren. Das bietet die Möglichkeit für ein immersiveres Spielerlebnis und bessere Audioqualität. 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 HapticGenerator
-Referenzdokumentation.
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 mithilfe der integrierten Volltextsuche danach suchen. Außerdem unterstützt AppSearch native Suchfunktionen wie eine hocheffiziente Indexierung und Abfrage, mehrsprachige Unterstützung und Relevanzrangfolge.
AppSearch gibt es in zwei Varianten: einen lokalen Index für Ihre Anwendung, der mit älteren Android-Versionen kompatibel ist, oder einen zentralen Index, der in Android 12 für das gesamte System verwaltet wird. Mit dem zentralen Index kann Ihre Anwendung zulassen, dass die Daten über die vorinstallierte Intelligenzkomponente des Systems auf den System-UI-Oberflächen angezeigt werden. Welche Daten genau in der System-UI angezeigt werden, hängt vom OEM ab. Außerdem kann Ihre Anwendung Daten auf sichere Weise mit anderen Anwendungen teilen, damit diese auch in diesen Daten suchen können.
Weitere Informationen zu AppSearch finden Sie im Entwicklerleitfaden. Sie können die App mit der AppSearch Jetpack-Bibliothek verwenden, die eine nutzerfreundliche API-Oberfläche sowie Unterstützung für Anmerkungsverarbeitung bietet.
Spielmodus
Mit der Game Mode API und den Game Mode-Interventionen können Sie das Gameplay optimieren, indem Sie Eigenschaften wie Leistung oder Akkulaufzeit basierend auf den Einstellungen der Nutzer oder spielspezifischen Konfigurationen priorisieren.
Weitere Informationen finden Sie unter Spielmodus.
Empfehlungen und Verbesserungen für Picture-in-Picture (PiP)
Mit Android 12 werden die folgenden Verbesserungen für den PiP-Modus eingeführt:
Unterstützung neuer PiP-Gesten
Android 12 unterstützt jetzt Gesten zum Minimieren und Zoomen für das PiP-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 aus dem Versteck ziehen.
Nutzer können die Größe des PiP-Fensters jetzt durch Zusammen- oder Auseinanderziehen anpassen.
Empfohlene neue Funktionen für eine optimierte BiB-Umstellung
In Android 12 wurden die animierten Übergänge zwischen Vollbild- und PiP-Fenstern deutlich verbessert. Wir empfehlen dringend, alle erforderlichen Änderungen vorzunehmen. Anschließend werden diese Änderungen automatisch auf große Bildschirme wie faltbare Smartphones und Tablets skaliert, ohne dass Sie weitere Maßnahmen ergreifen müssen.
Zu diesen Funktionen gehören:
Neues API-Flag für eine reibungslosere Umstellung auf den PiP-Modus mit Touch-Gesten
Mit dem Flag
setAutoEnterEnabled
können Sie für einen reibungsloseren Übergang zum PiP-Modus sorgen, wenn Sie im Modus für die Gestennavigation nach oben wischen, um zum Startbildschirm zu gelangen. Bisher wartete Android, bis die Wisch-nach-oben-zu-Startbildschirm-Animation beendet war, bevor das PiP-Fenster eingeblendet wurde.Flüssigere Animationen beim Aufrufen und Verlassen des BiB-Modus
Das Flag
SourceRectHint
wird jetzt wiederverwendet, um eine flüssigere Animation beim Aktivieren und Deaktivieren des PiP-Modus zu implementieren.Neues API-Flag zum Deaktivieren der nahtlosen Größenänderung für nicht-videobasierte Inhalte
Das Flag
SeamlessResizeEnabled
sorgt für eine viel flüssigere Überblendung, wenn die Größe von Inhalten ohne Videos im BiB-Fenster geändert wird. Bisher konnte das Ändern der Größe von nicht-videobasierten Inhalten in einem PiP-Fenster zu störenden visuellen Artefakten führen.
Neue Anrufbenachrichtigungen, mit denen die Wichtigkeit eingehender Anrufe eingestuft werden kann
In Android 12 wird der neue Benachrichtigungsstil für Anrufe Notification.CallStyle
verwendet. 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, haben diese Benachrichtigungen im Bereich „Schatten“ die höchste Priorität. Durch diese Einstufung kann das System diese priorisierten Aufrufe möglicherweise an andere Geräte weiterleiten.
Implementiere den folgenden Code für alle Arten von Anrufen.
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();
Verwenden Sie forIncomingCall()
, um eine Anrufbenachrichtigung für einen eingehenden Anruf zu 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);
Verwenden Sie forOngoingCall()
, um eine Benachrichtigung zum Stil des laufenden Anrufs zu 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);
Verwenden Sie forScreeningCall()
, um eine Anrufbenachrichtigung für das Annehmen oder Ablehnen von Anrufen zu 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);
Unterstützung für erweiterte Bilder in Benachrichtigungen
Unter Android 12 können Sie die Benachrichtigungen Ihrer App jetzt mit animierten Bildern in MessagingStyle()
- und BigPictureStyle()
-Benachrichtigungen aufwerten. Außerdem können Nutzer in Ihrer App jetzt Bildnachrichten senden, wenn sie über den Benachrichtigungs-Schirm auf Nachrichten antworten.
Verbesserungen beim immersiven Modus für die Bedienung per Geste
Android 12 konsolidiert das vorhandene Verhalten, damit Nutzer Befehle für die Bedienung über Gesten im immersiven Modus einfacher ausführen können. Außerdem bietet Android 12 Abwärtskompatibilität für den fixierten immersiven Modus.
Freigabe der letzten URL (nur Pixel)
Auf Pixel-Geräten können Nutzer jetzt Links zu kürzlich angesehenen Webinhalten direkt über den Bildschirm „Letzte“ teilen. Nachdem der Nutzer die Inhalte in einer App besucht hat, kann er zum Bildschirm „Letzte Aktivitäten“ wischen, die App suchen, in der er die Inhalte angesehen hat, und dann auf die Schaltfläche „Link“ tippen, um die URL zu kopieren oder zu teilen.
Weitere Informationen finden Sie unter URL-Freigabe für zuletzt aufgerufene Websites aktivieren.
Sicherheit und Datenschutz
Privatsphäredashboard
Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen ein Datenschutz-Dashboard angezeigt. Auf diesem Bildschirm können Nutzer auf separate Bildschirme zugreifen, die anzeigen, wenn Apps auf Standort-, Kamera- und Mikrofoninformationen zugreifen. Auf jedem Bildschirm wird eine Zeitachse angezeigt, auf der zu sehen ist, wann verschiedene Apps auf einen bestimmten Datentyp zugegriffen haben. Abbildung 1 zeigt die Zeitachse für den Datenzugriff auf Standortinformationen.
Ihre App kann eine Begründung für Nutzer bereitstellen, damit sie verstehen, warum Ihre App auf Standort-, Kamera- oder Mikrofoninformationen 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
Aktualisieren Sie die Logik Ihrer App, um Ihr Gerät auf die Ausrichtung auf Android 12 oder höher vorzubereiten. Anstatt eine alte Bluetooth-Berechtigungsgruppe zu deklarieren, sollten Sie eine modernere Bluetooth-Berechtigungsgruppe deklarieren.
Berechtigungsgruppensuche
Unter Android 12 oder höher können Sie abfragen, wie das System die von der Plattform bereitgestellten Berechtigungen in Berechtigungsgruppen organisiert:
- Wenn Sie die Berechtigungsgruppe ermitteln möchten, in die das System eine plattformdefinierte Berechtigung eingeordnet hat, rufen Sie
getGroupOfPlatformPermission()
auf. - Rufen Sie
getPlatformPermissionsForGroup()
auf, um die plattformdefinierten Berechtigungen zu ermitteln, die das System einer bestimmten Berechtigungsgruppe zugewiesen hat.
Overlay-Fenster von Anwendungen ausblenden
Damit Entwickler mehr Kontrolle darüber haben, was Nutzer sehen, wenn sie mit der App des Entwicklers interagieren, können in Android 12 Overlay-Fenster ausgeblendet werden, 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 angezeigt werden, z. B. Transaktionsbestätigungsabläufe.
Für Apps, in denen Fenster vom Typ TYPE_APPLICATION_OVERLAY
angezeigt werden, sollten Alternativen in Betracht gezogen werden, die für den jeweiligen Anwendungsfall besser geeignet sind, z. B. 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.
Ihre App kann dieses Attribut deklarieren und das Flag knownSigner
verwenden, um Geräten und Apps zu erlauben, anderen Apps Signaturberechtigungen zu gewähren, ohne dass die Apps bei der Herstellung und dem Versand des Geräts signiert werden müssen.
Attestierung von Geräteeigenschaften
Unter Android 12 können mehr Apps die Geräteeigenschaften in einem Attestierungszertifikat überprüfen, wenn sie einen neuen Schlüssel generieren.
Ab Android 9 (API-Level 28) können Inhaber von Geräterichtlinien (Device Policy Owners, DPOs), die Keymaster 4.0 oder höher verwenden, die Geräteeigenschaften in diesen Attestierungszertifikaten überprüfen. Ab Android 12 kann diese Überprüfung mit der Methode setDevicePropertiesAttestationIncluded()
in jeder App durchgeführt werden, die auf Android 12 (API-Level 31) oder höher ausgerichtet ist.
Die generierten Geräteeigenschaften enthalten die folgenden Build
-Felder:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Sichere Aktionen für Benachrichtigungen auf dem Sperrbildschirm
Ab Android 12 unterstützt die Notification.Action.Builder
-Klasse die Methode setAuthenticationRequired()
. Damit kann Ihre App verlangen, dass ein Gerät entsperrt ist, bevor Ihre App eine bestimmte Benachrichtigungsaktion aufruft. Diese Methode bietet zusätzlichen Schutz für Benachrichtigungen auf gesperrten Geräten.
Lokalisierbare Strings für BiometricPrompt
Mit Android 12 werden neue APIs eingeführt, mit denen Sie die Nutzerfreundlichkeit der biometrischen Authentifizierung Ihrer App verbessern können. 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)
Auf unterstützten Pixel-Geräten führt Android 12 die Phishing-Erkennung bei Nachrichten durch, die in gängigen Messaging-Apps empfangen werden. Das System verwendet maschinelles Lernen auf dem Gerät, um verdächtige Aktivitäten zu erkennen. Wenn das System eine solche Situation erkennt, wird ein Sicherheits-Overlay über der Benutzeroberfläche der Messaging-App angezeigt, um die Nutzer zu warnen. Beispielsweise können Nutzer durch die Phishing-Erkennung vor den folgenden potenziellen Risiken gewarnt werden:
- Verdächtige Anfragen, z. B. zum Senden eines Codes, Geldes oder Ähnlichem
- Nicht vertrauenswürdige URLs
- Schädliche Anhänge
- Links zu schädlichen Apps
Neben der Warnung können Nutzer über das Overlay auch verdächtige Nachrichten melden und Feedback zu den vom System ausgegeben Warnungen geben.
Entwickler können diese Funktion deaktivieren, indem sie ihren App-Manifestdateien ein neues Metadaten-Tag mit dem String com.google.android.ALLOW_PHISHING_DETECTION
hinzufügen. Beispiel:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Medien
Transcodierung in kompatibles Medienformat
Ab Android 12 (API-Level 31) kann das System auf dem Gerät aufgenommene HEVC-(H.265)- und HDR-Videos (HDR10 und HDR10+) automatisch in AVC (H.264) umwandeln, ein Format, das mit vielen Standardplayern kompatibel ist. So werden moderne Codecs genutzt, wenn sie verfügbar sind, ohne die Kompatibilität mit älteren Anwendungen zu beeinträchtigen.
Weitere Informationen finden Sie unter Transcodierung von kompatiblen Medien.
Performance-Klasse
Mit Android 12 wird der Standard Leistungsklasse eingeführt. Eine Leistungsklasse gibt Hardwarefunktionen an, die über die Mindestanforderungen von Android hinausgehen. Jedes Android-Gerät deklariert die von ihm unterstützte Leistungsklasse. Entwickler können die Leistungsklasse des Geräts zur Laufzeit prüfen und optimierte Funktionen bereitstellen, die die Möglichkeiten des Geräts voll ausschöpfen.
Weitere Informationen finden Sie unter Leistungsklasse.
Verbesserungen bei der Videocodierung
Android 12 definiert eine Reihe von Standardschlüsseln zur Steuerung des Quantisierungsparameters (QP) für die Videocodierung. So können Entwickler anbieterspezifischen Code vermeiden.
Die neuen Schlüssel sind in der MediaFormat
API und in der NDK Media-Bibliothek verfügbar.
Ab Android 12 erzwingen Videoencoder einen Mindestqualitätsgrenzwert. So wird sichergestellt, dass Nutzer beim Codieren von Videos mit hoher Szenenkomplexität keine extrem niedrige Qualität erleben.
Audiofokus
Ab Android 12 (API-Level 31) wird die Wiedergabe der App ausgeblendet, wenn eine andere App den Audiofokus hat und gerade wiedergegeben wird.
Weitere Informationen finden Sie unter Audiofokus unter Android 12 und höher.
MediaDrm-Updates
So kannst du feststellen, ob für die aktuellen MediaDrm
APIs eine sichere Dekodierungskomponente erforderlich ist:
- Erstellen Sie eine
MediaDrm
. - Öffnen Sie eine Sitzung, um eine Sitzungs-ID zu erhalten.
- Erstelle mit 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 festlegen, sobald Sie eine MediaDrm
erstellen.
Kamera
Camera2-Anbietererweiterungen
Viele unserer Geräteherstellerpartner haben benutzerdefinierte Kameraerweiterungen wie Bokeh, HDR und Nachtmodus entwickelt, die Apps verwenden sollen, um auf ihren Geräten eine differenzierte Nutzung zu ermöglichen. Die CameraX-Bibliothek unterstützt bereits diese benutzerdefinierten Anbietererweiterungen. Unter Android 12 werden diese Anbietererweiterungen jetzt direkt auf der Plattform angezeigt.
Diese Ergänzung ermöglicht es Apps mit komplexen Camera2
-Implementierungen, Anbietererweiterungen zu nutzen, ohne erhebliche Änderungen am Altcode vornehmen zu müssen. Die Camera2 Extension APIs stellen genau dieselben Erweiterungen wie in CameraX bereit. Diese werden bereits auf vielen verschiedenen Geräten unterstützt und können daher ohne zusätzliche Konfiguration verwendet werden.
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 eine hohe 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 optimal nutzen können. Die neuen APIs unterstützen das individuelle Verhalten dieser Sensoren und berücksichtigen, dass sie möglicherweise unterschiedliche Streamkonfigurationen und ‑kombinationen unterstützen, wenn sie im Modus „Vollständige Auflösung“ oder „Maximale Auflösung“ bzw. im Standardmodus betrieben werden.
Grafiken und Bilder
Apps direkten Zugriff auf Tombstone-Spuren gewähren
Ab Android 12 können Sie über die Methode ApplicationExitInfo.getTraceInputStream()
auf den nativen Crash-Tombstone Ihrer App als Protokollbuffer zugreifen. Der Protokollpuffer wird mit diesem Schema serialisiert.
Bisher war der Zugriff auf diese Informationen nur über die Android Debug Bridge (adb) möglich.
Weitere Informationen finden Sie unter Apps direkten Zugriff auf Tombstone-Traces gewähren.
Unterstützung von AVIF-Bildern
Mit Android 12 wird die Unterstützung für Bilder eingeführt, die das AV1 Image File Format (AVIF) verwenden. AVIF ist ein Containerformat für Bilder und Bildsequenzen, die mit AV1 codiert sind. AVIF nutzt die intraframe-codierten Inhalte der Videokomprimierung. Im Vergleich zu älteren Bildformaten wie JPEG wird die Bildqualität bei gleicher Dateigröße deutlich verbessert. Einen ausführlichen Überblick über die Vorteile dieses Formats finden Sie im Blogpost von Jake Archibald.
Einfachere Weichzeichner, Farbfilter und andere Effekte
In Android 12 wurde die neue RenderEffect
hinzugefügt, mit der gängige Grafikeffekte wie Weichzeichnen, Farbfilter und Android-Shadereffekte auf View
s und Renderinghierarchien angewendet werden können. Effekte können als Ketteneffekte (mit einem inneren und einem äußeren Effekt) oder als gemischte Effekte kombiniert werden. Aufgrund der begrenzten Rechenleistung wird die Funktion von verschiedenen Android-Geräten möglicherweise nicht unterstützt.
Effekte können auch auf das zugrunde liegende RenderNode
für View
s angewendet werden, indem View.setRenderEffect(RenderEffect)
aufgerufen wird.
So implementieren Sie ein RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Dekodierung von animierten Bildern
In Android 12 wurde die NDK-ImageDecoder
API erweitert, um alle Frames und Timing-Daten aus Bildern zu decodieren, die die animierten Dateiformate GIF und WebP verwenden. Bei der Einführung in Android 11 hat diese API nur das erste Bild aus Animationen in diesen Formaten decodiert.
Verwenden Sie ImageDecoder
anstelle von Drittanbieterbibliotheken, um die APK-Größe weiter zu reduzieren 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 halten
Damit Companion-Apps zur Verwaltung des Geräts aktiv bleiben können, werden in Android 12 APIs eingeführt, die Folgendes ermöglichen:
- Sie können eine App aktivieren, wenn sich ein Companion-Gerät in Reichweite befindet.
- Achte darauf, dass der Prozess weiterhin ausgeführt wird, während sich das Gerät in Reichweite befindet.
Damit Sie die APIs verwenden können, müssen Ihre 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
Partner-Apps unter Android 12 (API-Level 31) und höher können Companion-Geräteprofile verwenden, wenn eine Verbindung zu einer Smartwatch hergestellt wird. 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 die Verbindung zum Gerät hergestellt wurde. Sie 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 aufgehoben.
Weitere Informationen finden Sie unter AssociationRequest.Builder.setDeviceProfile()
.
Verbesserungen bei der Bandbreitenschätzung
In Android 12 wurden die Funktionen zur Bandbreitenschätzung von getLinkDownstreamBandwidthKbps()
und getLinkUpstreamBandwidthKbps()
sowohl für WLAN- als auch für Mobilfunkverbindungen verbessert. Die zurückgegebenen Werte stellen jetzt den gewichteten durchschnittlichen Durchsatz des Nutzers pro Mobilfunkanbieter oder WLAN-SSID, Netzwerktyp und Signalstärke für alle Anwendungen auf dem Gerät dar.
Dies kann zu einer genaueren und realistischeren Schätzung des erwarteten Durchsatzes führen, Schätzungen für einen Kaltstart Ihrer Anwendung liefern und im Vergleich zu anderen Methoden zur Durchsatzschätzung weniger Zyklen erfordern.
Verbesserungen bei Wi‑Fi Aware (NAN)
In Android 12 wurden einige Verbesserungen an Wi‑Fi Aware vorgenommen:
- 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. In früheren Versionen wurden L2-Nachrichten verwendet, um Peer-Informationen der Initiatoren auszutauschen, was zu Latenz führte. Auf Geräten mit Android 12 und höher kann der Responder (Server) so konfiguriert werden, dass er jeden Peer akzeptiert. Das bedeutet, dass die Informationen zum Initiator nicht vorab bekannt sein müssen. Dies beschleunigt die Bereitstellung von Datenpfaden und ermöglicht mehrere Punkt-zu-Punkt-Verbindungen mit nur einer Netzwerkanfrage.
- Damit das Framework keine Erkennungs- oder Verbindungsanfragen ablehnt, weil die Ressourcen aufgebraucht sind, können Sie auf Geräten mit Android 12 und höher
WifiAwareManager.getAvailableAwareResources()
aufrufen. Über den Rückgabewert dieser Methode kannst du 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 mit Android 12 (API-Level 31) und höher auf Geräten mit Hardwareunterstützung ausgeführt werden, wird die bestehende WLAN-Verbindung bei der Erstellung der Verbindung zum Peer-Gerät nicht getrennt, wenn Peer-to-Peer-Verbindungen verwendet werden. 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, können Sie NFC-Zahlungen aktivieren, ohne dass das Display des Geräts eingeschaltet ist. Legen Sie dazu requireDeviceScreenOn
auf false
fest. Weitere Informationen zu NFC-Zahlungen bei ausgeschaltetem oder gesperrtem Display finden Sie unter Verhalten bei ausgeschaltetem Display und gesperrtem 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 Medienverwaltungsaktionen ausführen kann, ohne dem Nutzer bei jeder Aktion ein Bestätigungsdialogfeld anzuzeigen. - Apps, die sowohl die Berechtigung
MANAGE_EXTERNAL_STORAGE
als auch die BerechtigungQUERY_ALL_PACKAGES
haben, z. B. Dateiverwaltungs-Apps, können eine benutzerdefinierte Aktivität zum Verwalten des Speicherplatzes einer anderen App aufrufen, sofern die andere App die benutzerdefinierte Aktivität erstellt.
Hauptfunktion
Automatische App-Updates
In Android 12 wird die Methode setRequireUserAction()
für Apps eingeführt, die die PackageInstaller
API verwenden.
Mit dieser Methode können Installations-Apps App-Updates 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 durch Aufrufen von Build.SOC_MANUFACTURER
bzw. Build.SOC_MODEL
abrufen.
Aktualisierungen der Java-Kern-APIs
Aufgrund von Anfragen und der Zusammenarbeit mit Entwicklern haben wir in Android 12 die folgenden Kernbibliotheken 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
|