Funktionen und APIs – Übersicht

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.

Material You

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

Mit Android 12 wird eine neue einheitliche API eingeführt, 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 In-App-Bewegung ab dem Startpunkt, 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äteherstellerpartnern zusammen, um Nutzern im gesamten Ökosystem die neuesten haptischen Funktionen zur Verfügung zu stellen.

Audiogekoppelte haptische Effekte

Android 12-Apps 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 Rennspiel 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.

Diagramm zur Indexierung und Suche in AppSearch

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 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:

  • 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.

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:

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 Bildnachrichten 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.

Teilen 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 Freigabe von URLs für zuletzt aufgerufene Websites aktivieren.

Sicherheit und Datenschutz

Privatsphäredashboard

Eine vertikale Zeitachse zeigt die verschiedenen Apps, die auf Standortinformationen zugegriffen haben, und wann die Zugriffe stattgefunden haben.
Abbildung 1: Bildschirm zur Standortnutzung, Teil des Datenschutzdashboards

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 für 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 Bluetooth-Berechtigungsgruppe zu deklarieren, sollten Sie eine modernere Bluetooth-Berechtigungsgruppe 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_WINDOWgezeichnet 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, anderen Apps Signaturberechtigungen 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 eine bestimmte Benachrichtigungsaktion aufgerufen wird. 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)

Wenn eine verdächtige Nachricht erkannt wird, sieht der Nutzer eine Meldung wie diese.

Auf unterstützten Pixel-Geräten führt Android 12 eine 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:

  1. Erstellen Sie eine MediaDrm.
  2. Öffnen Sie eine Sitzung, um eine Sitzungs-ID zu erhalten.
  3. Erstelle mit der Sitzungs-ID eine MediaCrypto.
  4. 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 unterschiedliche Funktionen bereitzustellen. 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 Protokoll-Buffer 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 im AV1 Image File Format (AVIF) eingeführt. 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 Views 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 Views 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

Ein Berechtigungsdialogfeld, in dem mehrere Berechtigungen in einer einzigen Anfrage über ein Profil für das zugehörige Gerät angefordert werden.

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 eingerichtet 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:

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