Android 12 bietet tolle neue Funktionen und APIs für Entwickler. In den folgenden Abschnitten erfahren Sie mehr über Funktionen für Ihre Apps und erhalten einen Einstieg in die 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. In dieser Anleitung zeigen wir Ihnen, wie Sie dafür sorgen, dass Ihr Widget mit Android 12 kompatibel ist, und wie Sie es mit neuen Funktionen aktualisieren.
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-Inhalte empfangen.
App-Startbildschirm-API
Android 12 führt eine neue App-Startanimation für alle Apps ein, die eine Bewegung innerhalb der App vom Startpunkt aus, einen Splashscreen mit dem App-Symbol und einen Übergang zur App selbst umfasst. Weitere Informationen finden Sie im Entwicklerleitfaden für Splashscreens.
APIs für abgerundete 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.
Umfangreiche haptische Funktionen
Android 12 erweitert die Tools zum Erstellen informativer haptischer Rückmeldungen für UI-Ereignisse, immersiver und ansprechender Effekte für Spiele und haptischer Aufmerksamkeitssteuerung für die 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. So können haptisch verstärkte Klingeltöne beispielsweise helfen, Anrufer zu identifizieren, oder ein Fahrspiel könnte das Gefühl von rauem Gelände simulieren.
Weitere Informationen finden Sie in der HapticGenerator
-Referenzdokumentation.
AppSearch
Mit Android 12 wird AppSearch eingeführt, eine leistungsstarke On-Device-Suchmaschine, die als Systemdienst dient. 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 App Daten auf sichere Weise mit anderen Apps 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 Nutzereinstellungen 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 zum Heranzoomen für das PiP-Fenster:
Wenn der Nutzer das Fenster minimieren möchte, kann er es an den linken oder rechten Rand ziehen. Um das Fenster wieder einzublenden, kann der Nutzer entweder auf den sichtbaren Teil des minimierten Fensters tippen oder es herausziehen.
Nutzer können die Größe des PiP-Fensters jetzt durch Zusammen- oder Auseinanderziehen anpassen.
Empfohlene neue Funktionen für eine reibungslose PiP-Übergangsfunktion
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.
Dazu 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 Wechseln in den und aus dem Bild-im-Bild-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
Mit dem Flag
SeamlessResizeEnabled
wird die Überblendung beim Ändern der Größe von nicht-videobasierten Inhalten im PiP-Fenster viel flüssiger. 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. Mit dieser Vorlage können Sie in Ihrer App die Wichtigkeit aktiver Anrufe durch einen gut sichtbaren Chip mit der Uhrzeit des Anrufs in der Statusleiste anzeigen. 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 dieses Ranking kann das System diese priorisierten Anrufe auch 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 für 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 Bildernachrichten senden, wenn sie über den Benachrichtigungs-Schirm auf Nachrichten antworten.
Verbesserungen beim Vollbildmodus für die Bedienung per Geste
In Android 12 wird das bisherige Verhalten konsolidiert, damit Nutzer Gestenbefehle im Vollbildmodus leichter ausführen können. Außerdem bietet Android 12 Abwärtskompatibilität für den fixierten immersiven Modus.
Freigabe der URL der letzten Aufrufe (nur Google 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, auf denen angezeigt wird, wann 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 Nutzern eine Begründung liefern, damit sie verstehen, warum Ihre App auf Standort-, Kamera- oder Mikrofoninformationen zugreift. Diese Begründung kann auf dem neuen Bildschirm des Privatsphäredashboards, auf dem Berechtigungsbildschirm Ihrer App oder auf beiden angezeigt werden.
Bluetooth-Berechtigungen
In Android 12 werden die Berechtigungen BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
und BLUETOOTH_CONNECT
eingeführt. Mit diesen Berechtigungen können Apps, die auf Android 12 ausgerichtet sind, einfacher mit Bluetooth-Geräten interagieren, insbesondere Apps, für die kein Zugriff auf den Gerätestandort erforderlich ist.
Erklärungen zu Bluetooth-Berechtigungen Ihrer 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 Reihe von Bluetooth-Berechtigungen zu deklarieren, sollten Sie eine modernere Reihe von Bluetooth-Berechtigungen deklarieren.
Suche nach Berechtigungsgruppe
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. - Wenn Sie die vom System in einer bestimmten Berechtigungsgruppe festgelegten plattformdefinierten Berechtigungen ermitteln möchten, rufen Sie
getPlatformPermissionsForGroup()
auf.
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.
Flag für den Berechtigungsschutz 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, Signaturberechtigungen für andere Apps zu gewähren, ohne dass die Apps bei der Geräteherstellung und -lieferung 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 umfassen 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 einer App-Einstellung abrufen kann. Mit diesen Labels können Sie genauere Anleitungen für Nutzer erstellen, die für die verwendeten biometrischen Authentifizierungsmethoden spezifisch sind, z. B. „Gesichtsentsperrung verwenden“ oder „Mit Ihrem Fingerabdruck fortfahren“.
Phishing-Erkennung in Messaging-Apps (nur Google 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 Kompatible Medientranscodierung.
Leistungsklasse
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 Library 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 das 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 für Quad-Bayer-Kamerasensoren
Viele Android-Geräte sind heute mit extrem hochauflösenden Kamerasensoren ausgestattet, in der Regel mit Quad- oder Nona-Bayer-Mustern. Diese bieten eine große Flexibilität in Bezug auf Bildqualität und Leistung bei wenig Licht. 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 (die einen inneren und einen äußeren Effekt zusammensetzen) 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 decodierte diese API nur das erste Bild aus Animationen in diesen Formaten.
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 findest du 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.
- Der Vorgang wird fortgesetzt, solange 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()
.
Companion Device Manager-Profile
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 die Registrierung, da die Gewährung einer gerätespezifischen Berechtigungsgruppe in einem Schritt zusammengefasst 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 den Rückruf
onServiceLost()
verwenden, um benachrichtigt zu werden, wenn Ihre App einen gefundenen Dienst verliert, weil der Dienst angehalten wurde oder sich außerhalb der Reichweite befindet. - Die Einrichtung mehrerer Datenpfade (NAN-Datenpfade) wird effizienter. 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. Dadurch wird die Inbetriebnahme des Datenpfads beschleunigt und es können mehrere Punkt-zu-Punkt-Verbindungen mit nur einer Netzwerkanfrage erstellt werden.
- 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. Wenn Sie prüfen möchten, ob diese Funktion unterstützt wird, verwenden Sie WifiManager.isMultiStaConcurrencySupported()
.
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:
- Unterstützung von Medienspeichern für
MediaDocumentsProvider
, wenn Ihre App einen Medien-URI abruft, der dem URI eines bestimmten 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 über das SDK Informationen zum SoC-Chipsatzanbieter und zum Modell 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
|