Présentation des fonctionnalités et des API

Android 12 offre aux développeurs de nouvelles fonctionnalités et API de qualité. Les sections ci-dessous vous présentent les nouvelles fonctionnalités disponibles pour vos application et leurs nouvelles API.

Pour obtenir une liste détaillée des nouvelles API, des API modifiées et supprimées, consultez le rapport de différences des API. Pour en savoir plus sur les nouvelles API, consultez la documentation de référence des API Android. Les nouvelles API sont mises en évidence. Pour savoir dans quels domaines les changements de plate-forme peuvent affecter vos applications, consultez les modifications de comportement d'Android 12 pour les applications ciblant Android 12 et pour toutes les applications.

Expérience utilisateur

Material You

Android 12 introduit un nouveau langage de conception appelé Material You, qui vous aide à créer des applications plus personnalisées et attrayantes. Pour intégrer toutes les dernières mises à jour de Material Design 3 à vos applications, essayez une version alpha des composants Material Design.

Material You

Améliorations apportées aux widgets

Android 12 remanie l'API Widgets existante pour améliorer l'expérience utilisateur et de développement sur la plate-forme et les lanceurs. Nous avons créé un guide pour vous aider à vous assurer que votre widget est compatible avec Android 12 et à l'actualiser avec de nouvelles fonctionnalités.

Pour en savoir plus, consultez la section Améliorations apportées aux widgets Android 12.

Insertion de contenu enrichi

Android 12 introduit une nouvelle API unifiée qui permet à votre application de recevoir du contenu enrichi à partir de n'importe quelle source disponible: presse-papiers, clavier ou glisser-déposer.

Pour en savoir plus, consultez la section Recevoir du contenu riche.

API des écrans de démarrage des applications

Android 12 introduit une nouvelle animation de lancement d'application pour toutes les applications, qui comprend un mouvement dans l'application à partir du point de lancement, un écran de démarrage affichant l'icône de l'application et une transition vers l'application elle-même. Pour en savoir plus, consultez le guide du développeur pour les écrans de démarrage.

API des coins arrondis

Android 12 introduit RoundedCorner et WindowInsets.getRoundedCorner(int position), qui fournissent le rayon et le point central des coins arrondis.

Pour en savoir plus, consultez la section Angles arrondis.

Expériences haptiques enrichies

Android 12 étend les outils permettant de créer des retours haptiques informatifs pour les événements d'interface utilisateur, des effets immersifs et agréables pour les jeux, et des retours haptiques attentionnels pour la productivité.

Effets des actionneurs

Android 12 ajoute des effets expressifs tels que le tic bas qui exploitent la bande passante de fréquence plus large des derniers actionneurs. Les développeurs de jeux peuvent désormais accéder à plusieurs actionneurs différents indépendamment dans les manettes de jeu pour générer le même effet de manière synchrone ou différents effets haptiques sur plusieurs actionneurs. Pour les développeurs, nous recommandons d'utiliser les constantes et les primitives comme blocs de construction pour des effets haptiques riches. Les constantes permettent d'améliorer les événements d'interface utilisateur, et le compilateur haptique de séquencer les primitives pour des effets plus complexes. Vous pouvez tester ces API sur les appareils Pixel 4. Nous continuons de travailler avec nos partenaires fabricants d'appareils pour proposer aux utilisateurs de l'écosystème les dernières fonctionnalités haptiques.

Effets haptiques couplés à l'audio

Les applications Android 12 peuvent générer un retour haptique dérivé d'une session audio à l'aide du vibreur du téléphone. Cela permet d'offrir des expériences de jeu et audio plus immersives. Par exemple, les sonneries optimisées pour le retour haptique peuvent aider à identifier les appelants, ou un jeu de conduite peut simuler la sensation d'un terrain accidenté.

Pour en savoir plus, consultez la documentation de référence de HapticGenerator.

AppSearch

Android 12 introduit AppSearch, un moteur de recherche hautes performances sur l'appareil, en tant que service système. AppSearch permet aux applications d'indexer des données structurées et de les rechercher à l'aide de fonctionnalités de recherche en texte intégral intégrées. De plus, AppSearch est compatible avec des fonctionnalités de recherche natives, telles que l'indexation et la récupération hautement efficaces, la prise en charge de plusieurs langues et le classement en fonction de la pertinence.

Schéma illustrant l'indexation et la recherche dans AppSearch

AppSearch se décline en deux versions: un indice local que votre application peut utiliser, compatible avec les anciennes versions d'Android, ou un indice central géré pour l'ensemble du système dans Android 12. À l'aide de l'index central, votre application peut autoriser l'affichage de ses données sur les surfaces de l'UI du système par le composant d'intelligence préinstallé du système. Les données exactes qui s'affichent sur les surfaces de l'UI du système dépendent de l'OEM. De plus, votre application peut partager des données de manière sécurisée avec d'autres applications pour leur permettre de rechercher également ces données.

Pour en savoir plus sur AppSearch, consultez le guide du développeur et commencez à l'utiliser avec la bibliothèque Jetpack AppSearch, qui fournit une surface d'API conviviale pour les développeurs, ainsi qu'une prise en charge du processeur d'annotation.

Mode Jeu

L'API Game Mode et les interventions Game Mode vous permettent d'optimiser le jeu en donnant la priorité à certaines caractéristiques, comme les performances ou l'autonomie de la batterie, en fonction des paramètres de l'utilisateur ou des configurations spécifiques à chaque jeu.

Pour en savoir plus, consultez la section Mode Jeu.

Recommandations et améliorations concernant la fonctionnalité Picture-in-picture (PIP)

Android 12 introduit les améliorations suivantes pour le mode PiP:

Prise en charge des nouveaux gestes PiP

Android 12 est désormais compatible avec les gestes de masquage et de pincement pour zoomer pour la fenêtre PiP:

  • Pour masquer la fenêtre, l'utilisateur peut la faire glisser vers le bord gauche ou droit. Pour désenficher la fenêtre, l'utilisateur peut appuyer sur la partie visible de la fenêtre enfichée ou la faire glisser.

  • L'utilisateur peut désormais redimensionner la fenêtre PIP à l'aide du pincement pour zoomer.

Android 12 a apporté des améliorations esthétiques importantes aux transitions animées entre les fenêtres en plein écran et PiP. Nous vous recommandons vivement d'implémenter toutes les modifications applicables. Une fois que vous l'aurez fait, ces modifications s'adapteront automatiquement aux grands écrans tels que les pliables et les tablettes, sans aucune autre tâche requise.

Voici les fonctionnalités concernées:

Nouvelles notifications d'appels téléphoniques permettant de classer l'importance des appels entrants

Android 12 ajoute le nouveau style de notification Notification.CallStyle pour les appels téléphoniques. L'utilisation de ce modèle permet à votre application d'indiquer l'importance des appels actifs en affichant un chip bien visible qui indique l'heure de l'appel dans la barre d'état. L'utilisateur peut appuyer sur ce chip pour revenir à son appel.

Étant donné que les appels entrants et en cours sont les plus importants pour les utilisateurs, ces notifications sont classées en premier dans l'ombre. Ce classement permet également au système de transférer ces appels prioritaires vers d'autres appareils.

Implémentez le code suivant pour tous les types d'appels.

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();

Utilisez forIncomingCall() pour créer une notification de style d'appel pour un appel entrant.

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);

Utilisez forOngoingCall() pour créer une notification de style d'appel pour un appel en cours.

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);

Utilisez forScreeningCall() pour créer une notification de style d'appel pour filtrer un appel.

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);

Prise en charge améliorée des images pour les notifications

Sous Android 12, vous pouvez désormais enrichir l'expérience de notification de votre application en fournissant des images animées dans les notifications MessagingStyle() et BigPictureStyle(). De plus, votre application peut désormais autoriser les utilisateurs à envoyer des messages avec des images lorsqu'ils répondent à des messages depuis le volet des notifications.

Améliorations apportées au mode immersif pour la navigation par gestes

Android 12 consolide le comportement existant pour permettre aux utilisateurs d'effectuer plus facilement des commandes de navigation par gestes en mode immersif. De plus, Android 12 offre un comportement de rétrocompatibilité pour le mode immersif persistant.

Partage de l'URL des éléments récents (Pixel uniquement)

Sur les appareils Pixel, les utilisateurs peuvent désormais partager des liens vers des contenus Web consultés récemment directement depuis l'écran "Récents". Après avoir consulté le contenu dans une application, l'utilisateur peut balayer l'écran "Récents", trouver l'application dans laquelle il a consulté le contenu, puis appuyer sur le bouton de lien pour copier ou partager l'URL.

Pour en savoir plus, consultez Activer le partage des URL récentes.

Sécurité et confidentialité

Tableau de bord Confidentialité

Les différentes applications qui ont accédé aux informations de localisation, ainsi que l'heure des accès, sont présentées verticalement, par ordre chronologique
Figure 1. Écran d'utilisation des données de localisation faisant partie du tableau de bord Confidentialité.

Sur les appareils compatibles équipés d'Android 12 ou version ultérieure, un écran "Tableau de bord Confidentialité" est disponible dans les paramètres système. Il permet aux utilisateurs d'accéder à des écrans distincts qui s'affichent lorsque les applications accèdent aux informations concernant la localisation, au micro et à l'appareil photo. Chaque écran montre à quel moment les différentes applications ont accédé à un type de données spécifique. La figure 1 présente la chronologie d'accès aux données de localisation.

Votre application peut fournir une justification aux utilisateurs pour les aider à comprendre pourquoi elle accède aux informations concernant la localisation, au micro ou à l'appareil photo. Cette justification peut être affichée sur le nouvel écran "Tableau de bord Confidentialité", sur l'écran des autorisations de votre application ou sur les deux.

Autorisations Bluetooth

Android 12 introduit les autorisations BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE et BLUETOOTH_CONNECT. Ces autorisations permettent aux applications qui ciblent Android 12 de communiquer plus facilement avec les appareils Bluetooth, en particulier pour les applications qui n'ont pas besoin d'accéder à la position de l'appareil.

Mettre à jour les déclarations d'autorisation Bluetooth de votre application

Pour préparer votre appareil au ciblage d'Android 12 ou version ultérieure, mettez à jour la logique de votre application. Au lieu de déclarer un ancien ensemble d'autorisations Bluetooth, déclarez un ensemble d'autorisations Bluetooth plus moderne.

Recherche de groupe d'autorisations

Sur Android 12 ou version ultérieure, vous pouvez interroger la façon dont le système organise les autorisations fournies par la plate-forme en groupes d'autorisations:

  • Pour déterminer le groupe d'autorisations dans lequel le système a placé une autorisation définie par la plate-forme, appelez getGroupOfPlatformPermission().
  • Pour déterminer les autorisations définies par la plate-forme que le système a placées dans un groupe d'autorisations spécifique, appelez getPlatformPermissionsForGroup().

Masquer les fenêtres de superposition de l'application

Pour permettre aux développeurs de mieux contrôler ce que les utilisateurs voient lorsqu'ils interagissent avec leur application, Android 12 introduit la possibilité de masquer les fenêtres superposées dessinées par les applications disposant de l'autorisation SYSTEM_ALERT_WINDOW.

Après avoir déclaré l'autorisation HIDE_OVERLAY_WINDOWS, une application peut appeler setHideOverlayWindows() pour indiquer que toutes les fenêtres de type TYPE_APPLICATION_OVERLAY doivent être masquées lorsque la fenêtre de l'application est visible. Les applications peuvent choisir de le faire lorsqu'elles affichent des écrans sensibles, tels que les flux de confirmation de transaction.

Les applications qui affichent des fenêtres de type TYPE_APPLICATION_OVERLAY doivent envisager des alternatives plus adaptées à leur cas d'utilisation, telles que la fenêtre Picture-in-picture ou les bulles.

Indicateur de protection des autorisations des signataires connus

À partir d'Android 12, l'attribut knownCerts pour les autorisations au niveau de la signature vous permet de faire référence aux condensés des certificats de signature connus au moment de la déclaration.

Votre application peut déclarer cet attribut et utiliser l'indicateur knownSigner pour permettre aux appareils et aux applications d'accorder des autorisations de signature à d'autres applications, sans avoir à signer les applications lors de la fabrication et de l'expédition de l'appareil.

Attestation des propriétés de l'appareil

Android 12 élargit l'ensemble des applications pouvant valider les propriétés de l'appareil figurant dans un certificat d'attestation lorsque ces applications génèrent une nouvelle clé.

À partir d'Android 9 (niveau d'API 28), les propriétaires de règles d'appareil (DPO) qui utilisent Keymaster 4.0 ou une version ultérieure peuvent vérifier les propriétés de l'appareil dans ces certificats d'attestation. À partir d'Android 12, toute application qui cible Android 12 (niveau d'API 31) ou une version ultérieure peut effectuer cette vérification à l'aide de la méthode setDevicePropertiesAttestationIncluded().

Les propriétés de l'appareil générées incluent les champs Build suivants:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Actions de notification de l'écran de verrouillage sécurisées

À partir d'Android 12, la classe Notification.Action.Builder est compatible avec la méthode setAuthenticationRequired(), qui permet à votre application d'exiger que l'appareil soit déverrouillé avant d'appeler une action de notification donnée. Cette méthode permet d'ajouter un niveau de sécurité supplémentaire aux notifications sur les appareils verrouillés.

Chaînes localisables pour BiometricPrompt

Android 12 introduit de nouvelles API pour vous aider à améliorer l'expérience utilisateur de l'authentification biométrique de votre application. La nouvelle classe imbriquée BiometricManager.Strings inclut les méthodes getButtonLabel(), getPromptMessage() et getSettingName(), qui permettent à votre application de récupérer un libellé de bouton, un message d'invite ou un nom de paramètre d'application lisibles par l'utilisateur et localisés. Utilisez ces libellés pour créer des instructions plus précises destinées aux utilisateurs, spécifiques aux méthodes d'authentification biométrique utilisées, comme "Utiliser le déverrouillage par reconnaissance faciale" ou "Utiliser votre empreinte digitale pour continuer".

Détection de l'hameçonnage dans les applications de messagerie (Pixel uniquement)

Un message semblable à celui-ci s'affiche lorsqu'un message suspect est détecté.

Sur les appareils Pixel compatibles, Android 12 effectue la détection d'hameçonnage sur les messages reçus dans les applications de chat populaires. Le système utilise le machine learning sur l'appareil pour détecter les activités suspectes. Lorsqu'il est détecté, le système affiche un chevauchement de sécurité au-dessus de l'interface utilisateur de l'application de messagerie pour avertir les utilisateurs. Par exemple, la détection de hameçonnage peut avertir les utilisateurs des risques potentiels suivants:

  • Requêtes suspectes, par exemple pour envoyer un code, de l'argent ou autre
  • URL non approuvées
  • Pièces jointes malveillantes
  • Liens vers des applications malveillantes

En plus d'avertir l'utilisateur, la superposition lui permet également de signaler un message suspect et de fournir des commentaires sur les avertissements émis par le système.

Les développeurs peuvent désactiver cette fonctionnalité en ajoutant une nouvelle balise de métadonnées incluant la chaîne com.google.android.ALLOW_PHISHING_DETECTION dans leurs fichiers manifestes d'application. Exemple :

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

Contenus multimédias

Transcodage de contenus multimédias dans un format compatible

À partir d'Android 12 (niveau d'API 31), le système peut transcoder automatiquement les vidéos HEVC(H.265) et HDR (HDR10 et HDR10+) enregistrées sur l'appareil au format AVC (H.264), un format largement compatible avec les lecteurs standards. Cela permet d'exploiter les codecs modernes lorsqu'ils sont disponibles, sans sacrifier la compatibilité avec les applications plus anciennes.

Pour en savoir plus, consultez la section Transcodage multimédia compatible.

Classe de performance

Android 12 introduit une norme appelée classe de performances. Une classe de performances spécifie les fonctionnalités matérielles au-delà des exigences de base d'Android. Chaque appareil Android déclare la classe de performance prise en charge. Les développeurs peuvent vérifier la classe de performance de l'appareil au moment de l'exécution et proposer des expériences améliorées qui exploitent pleinement ses fonctionnalités.

Pour en savoir plus, consultez la section Classe de performances.

Améliorations apportées à l'encodage vidéo

Android 12 définit un ensemble standard de clés pour contrôler la valeur du paramètre de quantification (QP) pour l'encodage vidéo, ce qui permet aux développeurs d'éviter le code spécifique au fournisseur.

Les nouvelles clés sont disponibles dans l'API MediaFormat et dans la bibliothèque multimédia NDK.

À partir d'Android 12, les encodeurs vidéo appliquent un seuil de qualité minimal. Cela garantit que les utilisateurs ne bénéficient pas d'une qualité extrêmement faible lors de l'encodage de vidéos avec une complexité de scène élevée.

Priorité audio

À partir d'Android 12 (niveau d'API 31), lorsqu'une application demande la priorité audio alors qu'une autre application est en cours de lecture, le système atténue l'application en cours de lecture.

Pour en savoir plus, consultez la section Concentration audio dans Android 12 et versions ultérieures.

Mises à jour de MediaDrm

Pour déterminer si un composant décodeur sécurisé est requis avec les API MediaDrm actuelles, procédez comme suit:

  1. Créez un élément MediaDrm.
  2. Ouvrez une session pour obtenir un ID de session.
  3. Créez un MediaCrypto à l'aide de l'ID de session.
  4. Appelez MediaCrypto.requiresSecureDecoderComponent(mimeType).

Avec les nouvelles méthodes requiresSecureDecoder(@NonNull String mime) et requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level), vous pouvez le déterminer dès que vous créez un MediaDrm.

Appareil photo

Extensions de fournisseurs Camera2

De nombreux fabricants d'appareils partenaires ont créé des extensions d'appareil photo personnalisées (bokeh, HDR, mode Nuit, etc.) qu'ils souhaitent que les applications utilisent pour créer des expériences différenciées sur leurs appareils. La bibliothèque CameraX est déjà compatible avec ces extensions de fournisseurs personnalisées. Dans Android 12, ces extensions de fournisseurs sont désormais exposées directement dans la plate-forme.

Cette addition permet aux applications qui ont des implémentations Camera2 complexes de profiter des extensions du fournisseur sans avoir à apporter des modifications importantes au code existant. Les API Camera2 Extensions exposent exactement le même ensemble d'extensions que dans CameraX. Elles sont déjà compatibles avec de nombreux appareils différents. Vous pouvez donc les utiliser sans configuration supplémentaire.

Pour en savoir plus, consultez CameraExtensionCharacteristics.

Compatibilité avec les capteurs d'appareil photo Quad Bayer

De nombreux appareils Android sont aujourd'hui livrés avec des capteurs d'appareil photo ultra haute résolution, généralement avec des motifs Quad ou Nona Bayer. Ils offrent une grande flexibilité en termes de qualité d'image et de performances en faible luminosité. Android 12 introduit de nouvelles API de plate-forme qui permettent aux applications tierces de tirer pleinement parti de ces capteurs polyvalents. Les nouvelles API prennent en charge le comportement unique de ces capteurs et tiennent compte du fait qu'ils peuvent prendre en charge différentes configurations et combinaisons de flux en mode résolution complète ou "résolution maximale" par rapport au mode "par défaut".

Graphiques et images

Fournir aux applications un accès direct aux traces de tombstone

À partir d'Android 12, vous pouvez accéder au tombstone de plantage natif de votre application en tant que tampon de protocole via la méthode ApplicationExitInfo.getTraceInputStream(). Le tampon de protocole est sérialisé à l'aide de ce schéma. Auparavant, le seul moyen d'accéder à ces informations était d'utiliser Android Debug Bridge (Adb).

Pour en savoir plus, consultez Fournir aux applications un accès direct aux traces de tombstone.

Prise en charge des images AVIF

Android 12 prend en charge les images qui utilisent le format de fichier image AV1 (AVIF). AVIF est un format de conteneur pour les images et les séquences d'images encodées avec AV1. AVIF exploite le contenu encodé intra-frame de la compression vidéo. Cela améliore considérablement la qualité de l'image pour la même taille de fichier par rapport aux anciens formats d'image, tels que JPEG. Pour en savoir plus sur les avantages de ce format, consultez l'article de blog de Jake Archibald.

Floutage, filtres de couleur et autres effets plus faciles à utiliser

Android 12 ajoute le nouveau RenderEffect qui applique des effets graphiques courants tels que les flous, les filtres de couleur, les effets de nuanceur Android, etc. aux View et aux hiérarchies de rendu. Les effets peuvent être combinés en tant qu'effets en chaîne (qui composent un effet interne et un effet externe) ou en tant qu'effets mélangés. En raison de la puissance de traitement limitée, les différents appareils Android peuvent être compatibles ou non avec cette fonctionnalité.

Des effets peuvent également être appliqués à l'RenderNode sous-jacent pour les View en appelant View.setRenderEffect(RenderEffect).

Pour implémenter un RenderEffect:

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

Décodage des images animées en mode natif

Sous Android 12, l'API ImageDecoder du NDK a été étendue pour décoder tous les frames et toutes les données de codes temporels qui utilisent les formats de fichiers GIF et WebP animés. À son lancement sous Android 11, cette API ne décodait que la première image à partir d'animations dans ces formats.

Utilisez ImageDecoder au lieu de bibliothèques tierces pour encore diminuer la taille de l'APK et bénéficier de futures mises à jour liées à la sécurité et aux performances.

Pour en savoir plus sur l'API, consultez la documentation de référence de l'API et l'exemple sur GitHub.

Connectivité

Maintenir les applications associées actives

Pour permettre aux applications compagnons de rester en cours d'exécution afin de gérer l'appareil, Android 12 introduit des API qui effectuent les opérations suivantes:

  • Vous permet de réveiller une application lorsqu'un appareil associé se trouve à portée.
  • Assurez-vous que le processus continue de s'exécuter tant que l'appareil reste à portée.

Pour utiliser les API, vos appareils doivent être connectés à l'aide du Gestionnaire d'appareils associés. Pour en savoir plus, consultez les sections CompanionDeviceManager.startObservingDevicePresence() et CompanionDeviceService.onDeviceAppeared().

Profils Companion Device Manager

Boîte de dialogue d'autorisations utilisant un profil d'appareil associé pour demander plusieurs autorisations dans une seule requête.

Les applications partenaires fonctionnant sous Android 12 (niveau d'API 31) ou version ultérieure peuvent utiliser des profils d'appareils associés pour se connecter à une montre. L'utilisation d'un profil simplifie le processus d'enregistrement en regroupant l'attribution d'un ensemble d'autorisations spécifiques au type d'appareil dans une seule étape.

Les autorisations groupées sont accordées à l'application associée une fois que l'appareil se connecte. Elles ne sont valables que lorsque l'appareil est associé. La suppression de l'application ou de l'association supprime les autorisations.

Pour en savoir plus, consultez AssociationRequest.Builder.setDeviceProfile().

Améliorations apportées à l'estimation de la bande passante

Dans Android 12, les fonctionnalités d'estimation de la bande passante fournies par getLinkDownstreamBandwidthKbps() et getLinkUpstreamBandwidthKbps() sont améliorées pour la connectivité Wi-Fi et mobile. Les valeurs renvoyées représentent désormais le débit moyen pondéré de l'utilisateur pour chaque opérateur ou SSID Wi-Fi, type de réseau et niveau de signal, pour toutes les applications de l'appareil. Cela peut renvoyer une estimation plus précise et réaliste du débit attendu, fournir des estimations sur un démarrage à froid de votre application et nécessiter moins de cycles par rapport à d'autres méthodes d'estimation du débit.

Améliorations de Wi-Fi Aware (NAN)

Android 12 apporte quelques améliorations à la fonctionnalité Wi-Fi Aware:

  • Sur les appareils équipés d'Android 12 (niveau d'API 31) ou version ultérieure, vous pouvez utiliser le rappel onServiceLost() pour être alerté lorsque votre application a perdu un service découvert en raison de l'arrêt du service ou de son déplacement hors de portée.
  • La configuration de plusieurs chemins de données (chemins de données NAN) est modifiée pour être plus efficace. Les versions précédentes utilisaient la messagerie L2 pour échanger des informations de pair à pair sur les initiateurs, ce qui introduisait une latence. Sur les appareils équipés d'Android 12 ou version ultérieure, le répondeur (serveur) peut être configuré pour accepter n'importe quel pair, c'est-à-dire qu'il n'a pas besoin de connaître les informations de l'initiateur à l'avance. Cela accélère la mise en service du datapath et permet de créer plusieurs liaisons point à point avec une seule requête réseau.
  • Pour empêcher le framework de rejeter les requêtes de découverte ou de connexion en raison d'un manque de ressources, sur les appareils équipés d'Android 12 ou version ultérieure, vous pouvez appeler WifiAwareManager.getAvailableAwareResources(). La valeur renvoyée par cette méthode vous permet d'obtenir le nombre de chemins de données disponibles, le nombre de sessions de publication disponibles et le nombre de sessions d'abonnement disponibles.

Connexion Internet et peer-to-peer simultanées

Lorsque les appareils ciblant Android 12 (niveau d'API 31) ou version ultérieure s'exécutent sur des appareils compatibles avec le matériel, l'utilisation de connexions point à point ne déconnecte pas votre connexion Wi-Fi existante lors de la création de la connexion à l'appareil homologue. Pour vérifier la prise en charge de cette fonctionnalité, utilisez WifiManager.isMultiStaConcurrencySupported().

Activer l'écran éteint pour les paiements NFC

Dans les applications qui ciblent Android 12 ou version ultérieure, vous pouvez activer les paiements NFC sans que l'écran de l'appareil ne soit allumé en définissant requireDeviceScreenOn sur false. Pour en savoir plus sur les paiements NFC lorsque l'écran est éteint ou verrouillé, consultez la section Comportement de l'écran éteint et de l'écran de verrouillage.

Stockage

Android 12 introduit les fonctionnalités de gestion de l'espace de stockage suivantes:

Fonctionnalité de base

Mises à jour automatiques des applications

Android 12 introduit la méthode setRequireUserAction() pour les applications qui utilisent l'API PackageInstaller. Cette méthode permet aux applications d'installation d'effectuer des mises à jour d'applications sans que l'utilisateur ait à confirmer l'action.

Informations sur le chipset de l'appareil

Android 12 ajoute deux constantes à android.os.Build qui exposent le fournisseur et les informations sur le modèle du chipset SoC via le SDK. Vous pouvez récupérer ces informations en appelant Build.SOC_MANUFACTURER et Build.SOC_MODEL respectivement.

Mises à jour des API Java principales

En fonction des demandes et de la collaboration avec les développeurs, nous avons ajouté les bibliothèques principales suivantes dans Android 12:

Cours API
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