Funktionen und APIs – Übersicht

Android 12 bietet Entwicklern tolle neue Funktionen und APIs. In den folgenden Abschnitten finden 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 findest du im API-Diff-Bericht. Details zu neuen APIs findest du in der Android API-Referenz. Neue APIs sind hervorgehoben. Informationen zu Bereichen, in denen sich Plattformänderungen auf deine Apps auswirken können, findest du in den Verhaltensänderungen von Android 12 für Apps, die auf Android 12 ausgerichtet sind, und für alle Apps.

Nutzererfahrung

Material You

Mit Android 12 wird eine neue Designsprache namens Material You eingeführt, mit der du noch personalisiertere, ansprechendere Apps entwickeln kannst. 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 vorhandene Widgets API überarbeitet, um die Nutzer- und Entwicklerfreundlichkeit auf der Plattform und in Launchern zu verbessern. Wir haben einen Leitfaden erstellt, der dir dabei hilft, dein Widget mit Android 12 kompatibel zu machen und es mit neuen Funktionen zu 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 deine App Rich Content aus jeder verfügbaren Quelle empfangen kann: Zwischenablage, Tastatur oder Drag-and-drop.

Weitere Informationen finden Sie unter Rich Content empfangen.

App Splash Screens API

Mit Android 12 wird eine neue Animation für den App-Start für alle Apps eingeführt. Sie umfasst eine Bewegung in die App ab dem Startpunkt, einen Ladebildschirm mit dem App-Symbol und einen Übergang zur App selbst. Weitere Informationen finden Sie im Entwicklerleitfaden für Splash Screens.

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.

Umfangreiches haptisches Feedback

Android 12 erweitert die Tools zum Erstellen von informativem haptischem Feedback für UI-Ereignisse, immersiven und ansprechenden Effekten für Spiele und aufmerksamkeitsstarker Haptik für die Produktivität.

Aktuator-Effekte

Android 12 bietet ausdrucksstarke Effekte wie Low Tick, die die größere Frequenzbandbreite der neuesten Aktuatoren nutzen. Spieleentwickler können jetzt unabhängig voneinander auf mehrere verschiedene Aktuatoren in Gamecontrollern zugreifen, um denselben Effekt synchron oder verschiedene haptische Effekte auf mehreren Aktuatoren zu erzielen. Entwicklern empfehlen wir, die Konstanten und Primitive als Bausteine für vielfältige haptische Effekte zu verwenden – Konstanten zur Verbesserung von UI-Ereignissen und Haptic Composer, um Primitive für komplexere Effekte zu sequenzieren. Diese APIs können auf Pixel 4-Geräten ausprobiert werden. Wir arbeiten 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 haptisches Feedback generieren, das von einer Audiositzung abgeleitet wird, indem der Vibrationsmotor des Smartphones verwendet wird. So können noch immersivere Spiele und Audioerlebnisse ermöglicht werden. Beispielsweise können haptisch optimierte Klingeltöne dabei helfen, Anrufer zu identifizieren, oder ein Rennspiel könnte das Gefühl von unebenem Gelände simulieren.

Weitere Informationen finden Sie in der Referenzdokumentation zu HapticGenerator.

AppSearch

Mit Android 12 wird AppSearch, eine leistungsstarke Suchmaschine auf dem Gerät, 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 Abruf, Unterstützung mehrerer Sprachen und Relevanzranking.

Diagramm zur Indexierung und Suche in AppSearch

AppSearch ist in zwei Varianten verfügbar: als lokaler Index für Ihre Anwendung, der mit älteren Android-Versionen kompatibel ist, oder als zentraler Index, der für das gesamte System in Android 12 verwaltet wird. Über den zentralen Index kann deine App zulassen, dass ihre Daten von der vorinstallierten intelligenten Komponente des Systems auf System-UI-Oberflächen angezeigt werden. Welche Daten genau auf den Oberflächen der System-UI angezeigt werden, hängt vom OEM ab. Außerdem kann Ihre Anwendung Daten sicher mit anderen Anwendungen teilen, damit diese auch in diesen Daten suchen können.

Weitere Informationen zu AppSearch findest du im Entwicklerleitfaden. Du kannst AppSearch mit der AppSearch Jetpack-Bibliothek verwenden, die eine entwicklerfreundliche API-Oberfläche sowie Unterstützung für den Annotationsprozessor bietet.

Spielmodus

Mit der Game Mode API und den Interventionen im Spielmodus kannst du das Gameplay optimieren, indem du Merkmale wie Leistung oder Akkulaufzeit basierend auf den Nutzereinstellungen oder spielspezifischen Konfigurationen priorisierst.

Weitere Informationen findest du unter Spielmodus.

Empfehlungen und Verbesserungen für die Bild-im-Bild-Funktion

Android 12 bietet die folgenden Verbesserungen für den PiP-Modus:

Unterstützung für neue PiP-Gesten

Android 12 unterstützt jetzt Gesten zum Ausblenden und zum Zoomen per Auf- und Zuziehen für das PiP-Fenster:

  • Um das Fenster zu minimieren, kann der Nutzer es an den linken oder rechten Rand ziehen. Um das Fenster wieder einzublenden, kann der Nutzer entweder auf den sichtbaren Teil des ausgeblendeten Fensters tippen oder es herausziehen.

  • Nutzer können die Größe des BiB-Fensters jetzt durch Auseinander- und Zusammenziehen anpassen.

In Android 12 wurden die animierten Übergänge zwischen Vollbild- und PiP-Fenstern deutlich verbessert. Wir empfehlen dringend, alle anwendbaren Änderungen zu implementieren. Sobald Sie dies getan haben, werden diese Änderungen automatisch auf große Bildschirme wie faltbare Smartphones und Tablets skaliert, ohne dass weitere Arbeit erforderlich ist.

Diese Funktionen sind:

Neue Anrufbenachrichtigungen, mit denen die Wichtigkeit eingehender Anrufe eingestuft werden kann

In Android 12 wird der neue Benachrichtigungsstil Notification.CallStyle für Telefonanrufe hinzugefügt. Mit dieser Vorlage kann Ihre App die Wichtigkeit aktiver Anrufe hervorheben, indem sie einen auffälligen Chip mit der Anrufzeit in der Statusleiste 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 Benachrichtigungsleiste ganz oben angezeigt. Anhand dieser Rangfolge kann das System diese priorisierten Anrufe auch an andere Geräte weiterleiten.

Implementieren Sie 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 Benachrichtigung im Anrufstil 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 im Anrufstil für einen laufenden Anruf 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 Benachrichtigung im Anrufstil für die Anrufprüfung 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

In Android 12 könnt ihr die Benachrichtigungen eurer App jetzt mit animierten Bildern in MessagingStyle()- und BigPictureStyle()-Benachrichtigungen anreichern. Außerdem können Nutzer in Ihrer App jetzt Bildnachrichten senden, wenn sie auf Nachrichten in der Benachrichtigungsleiste antworten.

Verbesserungen des immersiven Modus für die Bedienung über Gesten

Android 12 fasst das bestehende Verhalten zusammen, damit Nutzer im immersiven Modus leichter Befehle zur Bedienung über Gesten ausführen können. Darüber hinaus bietet Android 12 Abwärtskompatibilität für den immersiven Modus.

Teilen von URLs aus „Letzte“ (nur Pixel)

Auf Pixel-Geräten können Nutzer jetzt Links zu kürzlich angesehenen Webinhalten direkt über den Bildschirm „Letzte Apps“ teilen. Nachdem der Nutzer die Inhalte in einer App aufgerufen hat, kann er zum Bildschirm „Zuletzt verwendet“ wischen, die App finden, in der er die Inhalte angesehen hat, und dann auf die Link-Schaltfläche tippen, um die URL zu kopieren oder zu teilen.

Weitere Informationen finden Sie unter Teilen von URLs aus „Letzte“ aktivieren.

Sicherheit und Datenschutz

Privatsphäredashboard

Eine vertikale Zeitachse zeigt die verschiedenen Apps, die auf Standortinformationen zugegriffen haben, und den Zeitpunkt des Zugriffs.
Abbildung 1: Bildschirm zur Standortnutzung, Teil des Privatsphäre-Dashboards.

Auf unterstützten Geräten mit Android 12 oder höher wird in den Systemeinstellungen ein Privatsphäre-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.

Deine App kann Nutzern eine Begründung liefern, warum sie auf Standort-, Kamera- oder Mikrofoninformationen zugreift. Diese Begründung kann auf dem neuen Bildschirm „Privatsphäre-Dashboard“, auf dem Bildschirm „Berechtigungen“ deiner App oder auf 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, insbesondere Apps, die keinen Zugriff auf den Gerätestandort benötigen.

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 ältere Bluetooth-Berechtigungen zu deklarieren, deklarieren Sie modernere Bluetooth-Berechtigungen.

Suche nach Berechtigungsgruppen

Unter Android 12 oder höher können Sie abfragen, wie das System die von der Plattform bereitgestellten Berechtigungen in Berechtigungsgruppen organisiert:

  • Wenn du herausfinden möchtest, in welche Berechtigungsgruppe das System eine plattformdefinierte Berechtigung eingeordnet hat, rufe getGroupOfPlatformPermission() auf.
  • Wenn du die von der Plattform definierten Berechtigungen ermitteln möchtest, die das System in einer bestimmten Berechtigungsgruppe platziert hat, rufe getPlatformPermissionsForGroup() auf.

Anwendungs-Overlay-Fenster ausblenden

Damit Entwickler mehr Kontrolle darüber haben, was Nutzer sehen, wenn sie mit der App des Entwicklers interagieren, wird in Android 12 die Möglichkeit eingeführt, 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 angezeigt werden, z. B. Abläufe zur Transaktionsbestätigung.

Apps, die Fenster vom Typ TYPE_APPLICATION_OVERLAY anzeigen, sollten Alternativen in Betracht ziehen, die für ihren Anwendungsfall möglicherweise besser geeignet sind, z. B. Bild im Bild oder Bubbles.

Schutz-Flag für die Berechtigung bekannter Signierer

Ab Android 12 können Sie mit dem Attribut knownCerts für Berechtigungen auf Signaturniveau bei der Deklaration auf die Digests bekannter Signaturzertifikate verweisen.

In deiner App kann dieses Attribut deklariert und das Flag knownSigner verwendet werden, damit Geräte und Apps Signaturberechtigungen für andere Apps gewähren können, ohne dass die Apps bei der Herstellung und Auslieferung des Geräts signiert werden müssen.

Attestierung der Geräteeigenschaften

Android 12 erweitert die Gruppe von Apps, die die Geräteeigenschaften in einem Attestierungszertifikat überprüfen können, wenn diese Apps einen neuen Schlüssel generieren.

Ab Android 9 (API-Level 28) können Geräterichtlinieninhaber (DPOs), 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äteeigenschaften enthalten die folgenden Build-Felder:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Aktionen für Benachrichtigungen auf dem Sperrbildschirm

Ab Android 12 unterstützt die Klasse Notification.Action.Builder die Methode setAuthenticationRequired(), mit der deine App erfordern kann, dass ein Gerät entsperrt ist, bevor deine App eine bestimmte Benachrichtigungsaktion aufruft. Diese Methode bietet eine zusätzliche Sicherheitsebene für Benachrichtigungen auf gesperrten Geräten.

Lokalisierbare Strings für BiometricPrompt

Mit Android 12 werden neue APIs eingeführt, mit denen du die Nutzerfreundlichkeit der biometrischen Authentifizierung in deiner App verbessern kannst. Die neue verschachtelte Klasse BiometricManager.Strings enthält die Methoden getButtonLabel(), getPromptMessage() und getSettingName(), mit denen deine App ein für Nutzer lesbares und lokalisiertes Schaltflächenlabel, eine Aufforderung oder einen App-Einstellungsnamen abrufen kann. Mit diesen Labels kannst du präzisere Anweisungen für Nutzer erstellen, die sich auf die verwendeten biometrischen Authentifizierungsmethoden beziehen, z. B. „Entsperrung per Gesichtserkennung verwenden“ oder „Fingerabdruck verwenden, um fortzufahren“.

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) transcodieren, ein Format, das mit Standard-Playern weitgehend kompatibel ist. So werden moderne Codecs verwendet, wenn sie verfügbar sind, ohne dass die Kompatibilität mit älteren Anwendungen beeinträchtigt wird.

Weitere Informationen findest du unter Transcodierung in kompatibles Medienformat.

Leistungsklasse

Mit Android 12 wird ein Standard namens Leistungsklasse eingeführt. Eine Leistungsklasse gibt Hardwarefunktionen an, die über die grundlegenden Anforderungen 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 Funktionen des Geräts voll ausschöpfen.

Weitere Informationen finden Sie unter Leistungsklasse.

Verbesserungen bei der Videocodierung

Android 12 definiert einen Standardsatz von Schlüsseln zur Steuerung des Quantisierungsparameters (QP) für die Videocodierung, sodass Entwickler keinen herstellerspezifischen Code verwenden müssen.

Die neuen Schlüssel sind in der MediaFormat API und in der NDK-Mediathek verfügbar.

Ab Android 12 erzwingen Video-Encoder einen Mindestqualitätsschwellenwert. So wird sichergestellt, dass Nutzer beim Codieren von Videos mit hoher Szenenkomplexität keine extrem niedrige Qualität erhalten.

Audiofokus

Wenn eine App ab Android 12 (API-Level 31) den Audiofokus anfordert, während eine andere App den Fokus hat und etwas wiedergibt, blendet das System die Wiedergabe der anderen App aus.

Weitere Informationen findest du 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:

  1. Erstellen Sie einen MediaDrm.
  2. Öffnen Sie eine Sitzung, um eine Sitzungs-ID zu erhalten.
  3. Erstellen Sie mit der Sitzungs-ID einen MediaCrypto.
  4. Rufen Sie MediaCrypto.requiresSecureDecoderComponent(mimeType) an.

Mit den neuen Methoden requiresSecureDecoder(@NonNull String mime) und requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) können Sie dies festlegen, sobald Sie ein MediaDrm erstellen.

Kamera

Camera2-Anbietererweiterungen

Viele unserer Geräteherstellerpartner haben benutzerdefinierte Kameraerweiterungen wie Bokeh, HDR, Nachtmodus und andere entwickelt, die sie in Apps verwenden möchten, um auf ihren Geräten ein differenziertes Erlebnis zu bieten. Die CameraX-Bibliothek unterstützt diese benutzerdefinierten Anbietererweiterungen bereits. In Android 12 werden diese Anbietererweiterungen jetzt direkt in der Plattform verfügbar gemacht.

Diese Ergänzung hilft Apps mit komplexen Camera2-Implementierungen, Anbietererweiterungen zu nutzen, ohne dass wesentliche Änderungen am Legacy-Code vorgenommen werden müssen. Die Camera2 Extension APIs stellen genau dieselben Erweiterungen wie CameraX bereit. Diese werden bereits auf vielen verschiedenen Geräten unterstützt, sodass du sie ohne zusätzliche Konfiguration verwenden kannst.

Weitere Informationen finden Sie unter CameraExtensionCharacteristics.

Unterstützung für Quad-Bayer-Kamerasensoren

Viele Android-Geräte sind heute mit Kamerasensoren mit ultrahoher Auflösung ausgestattet, die in der Regel Quad- oder Nona-Bayer-Muster verwenden. Diese bieten eine hohe Flexibilität in Bezug auf die Bildqualität und die 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 einzigartige Verhalten dieser Sensoren und berücksichtigen, dass sie im Modus „volle Auflösung“ oder „maximale Auflösung“ im Vergleich zum Standardmodus möglicherweise andere Streamkonfigurationen und -kombinationen unterstützen.

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 den Tombstone des nativen Absturzes Ihrer App zugreifen. Der Protokollzwischenspeicher wird mit diesem Schema serialisiert. Bisher war der Zugriff auf diese Informationen nur über die Android Debug Bridge (ADB) möglich.

Weitere Informationen findest du unter Apps direkten Zugriff auf Tombstone-Traces gewähren.

Unterstützung von AVIF-Bildern

Android 12 unterstützt Bilder im AV1-Bilddateiformat (AVIF). AVIF ist ein Containerformat für Bilder und Bildsequenzen, die mit AV1 codiert sind. AVIF nutzt die Intra-Frame-codierten Inhalte aus der Videokomprimierung. Dadurch wird die Bildqualität bei gleicher Dateigröße im Vergleich zu älteren Bildformaten wie JPEG erheblich verbessert. Ausführliche Informationen zu den Vorteilen dieses Formats finden Sie im Blogpost von Jake Archibald.

Einfachere Unschärfe, Farbfilter und andere Effekte

Android 12 bietet die neue RenderEffect, mit der gängige Grafikeffekte wie Unschärfe, Farbfilter, Android-Shader-Effekte und mehr auf Views und Rendering-Hierarchien angewendet werden können. Effekte können entweder als Ketteneffekte (die einen inneren und einen äußeren Effekt umfassen) oder als gemischte Effekte kombiniert werden. Aufgrund der begrenzten Rechenleistung wird die Funktion möglicherweise nicht von allen Android-Geräten unterstützt.

Effekte können auch auf die zugrunde liegende RenderNode für Views angewendet werden, indem View.setRenderEffect(RenderEffect) aufgerufen wird.

So implementieren Sie eine RenderEffect:

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

Native Decodierung animierter Bilder

In Android 12 wurde die NDK-API ImageDecoder erweitert, um alle Frames und Timing-Daten aus Bildern zu decodieren, die die animierten Dateiformate GIF und WebP verwenden. Als diese API in Android 11 eingeführt wurde, decodierte sie 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 finden Sie in der API-Referenz und im Beispiel auf GitHub.

Verbindung

Companion-Apps aktiv halten

Damit Companion-Apps weiterhin ausgeführt werden können, um das Gerät zu verwalten, werden in Android 12 APIs eingeführt, die Folgendes tun:

  • Ermöglicht es, eine App zu aktivieren, wenn sich ein Companion-Gerät in Reichweite befindet.
  • Sicherstellen, dass der Prozess weiter ausgeführt wird, solange sich das Gerät in Reichweite befindet.

Damit du die APIs verwenden kannst, müssen deine Geräte über den Companion Device Manager verbunden sein. Weitere Informationen finden Sie unter CompanionDeviceManager.startObservingDevicePresence() und CompanionDeviceService.onDeviceAppeared().

Companion Device Manager-Profile

Ein Berechtigungsdialog, in dem ein Companion-Geräteprofil verwendet wird, um mehrere Berechtigungen in einer einzigen Anfrage anzufordern.

Partner-Apps auf Android 12 (API-Level 31) und höher können Companion-Geräteprofile verwenden, wenn sie eine Verbindung zu einer Smartwatch herstellen. Durch die Verwendung eines Profils wird der Registrierungsprozess vereinfacht, da die Erteilung einer Reihe von gerätetypspezifischen Berechtigungen in einem Schritt zusammengefasst wird.

Die gebündelten Berechtigungen werden der Companion-App gewährt, sobald das Gerät verbunden ist, und gelten nur, solange 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 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 eine genauere und realistischere Schätzung des erwarteten Durchsatzes liefern, Schätzungen für einen Kaltstart Ihrer Anwendung liefern und erfordert im Vergleich zu anderen Methoden zur Durchsatzschätzung weniger Zyklen.

Verbesserungen bei 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 den Callback onServiceLost() verwenden, um benachrichtigt zu werden, wenn Ihre App einen erkannten Dienst verloren hat, weil der Dienst beendet wurde oder sich außerhalb der Reichweite befindet.
  • Die Einrichtung mehrerer Datenpfade (NAN-Datenpfade) wird effizienter gestaltet. 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 er die Informationen des Initiators nicht im Voraus kennen muss. Dadurch wird die Bereitstellung des Datenpfads beschleunigt und mehrere Punkt-zu-Punkt-Verbindungen mit nur einer Netzwerkanfrage ermöglicht.
  • Damit das Framework Such- oder Verbindungsanfragen nicht aufgrund fehlender Ressourcen ablehnt, kannst du 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 ausgeführt werden, wird die bestehende WLAN-Verbindung beim Herstellen der Verbindung zum Peer-Gerät nicht getrennt, wenn Peer-to-Peer-Verbindungen verwendet werden. Mit WifiManager.isMultiStaConcurrencySupported() können Sie prüfen, ob dieses Feature unterstützt wird.

NFC-Zahlungen bei ausgeschaltetem Display 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 sein muss. Setzen Sie dazu requireDeviceScreenOn auf false. Weitere Informationen zu NFC-Zahlungen bei ausgeschaltetem oder gesperrtem Bildschirm findest du unter Verhalten bei ausgeschaltetem und gesperrtem Bildschirm.

Speicher

In 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 die Informationen zum SoC-Chipsatzanbieter und ‑modell über das SDK verfügbar machen. Sie können diese Informationen durch Aufrufen von Build.SOC_MANUFACTURER bzw. Build.SOC_MODEL abrufen.

Aktualisierungen der wichtigsten Java APIs

Aufgrund von Anfragen und der Zusammenarbeit mit Entwicklern haben wir in Android 12 die folgenden Kernbibliotheken hinzugefügt:

Klasse 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