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 fonctionnalités de vos applications et vous permettent de vous lancer. avec les API associées.

Pour obtenir une liste détaillée des nouvelles API, des API modifiées et supprimées, consultez la page Différences entre les API rapport. Pour en savoir plus sur les nouvelles API, consultez le site Web Documentation de référence des API : les nouvelles API sont mises en évidence pour plus de visibilité. Par ailleurs, pour pour connaître les domaines dans lesquels les changements de plate-forme peuvent affecter vos applications, assurez-vous les modifications de comportement d'Android 12 pour les applications qui ciblent Android 12 et pour tous applications.

Expérience utilisateur

Material You

Android 12 introduit un nouveau langage de conception appelé Material Design Vous, pour vous aider à créer des applis plus personnalisées et plus belles. Pour profiter des dernières nouveautés Material Design 3 mises à jour dans vos applications, essayez une version alpha du Material Design Composants.

Material You

Améliorations apportées aux widgets

Android 12 remanie l'API Widgets existante pour améliorer l'expérience des utilisateurs et des développeurs dans la plateforme et les lanceurs d’applications. Nous avons créé un guide pour vous aider assurez-vous que votre widget est compatible avec Android 12 et actualisez-le avec caractéristiques.

Consultez les améliorations des widgets d'Android 12 pour : plus d'informations.

Insertion de contenu enrichi

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

Pour en savoir plus, consultez la section Recevoir des contenus enrichis contenus.

API App splash screen

Android 12 introduit une nouvelle animation de lancement pour toutes les applications, qui inclut une un mouvement dans l'application dès le moment du lancement, un écran de démarrage affichant l'icône de l'application, et une transition vers l'application elle-même. Consultez le développeur des écrans de démarrage guide pour plus d'informations.

API à angles arrondis

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

Pour en savoir plus, consultez la section Angles arrondis.

Expériences haptiques riches

Android 12 étend les outils de création de retours haptiques informatifs pour l'UI des événements, des effets immersifs et amusants pour les jeux, et des signaux haptiques attentifs pour la productivité.

Effets de l'actionneur

Android 12 ajoute des effets expressifs comme des coche qui bénéficier de la bande passante de fréquences étendue des derniers actionneurs. Jeu les développeurs peuvent désormais accéder à plusieurs actionneurs indépendants dans le jeu pour produire le même effet de manière synchrone ou des effets haptiques différents sur plusieurs actionneurs. Nous recommandons aux développeurs d'utiliser constantes et primitives en tant que des éléments de base pour des effets haptiques enrichis, des constantes qui améliorent les événements d'interface utilisateur et compositeur haptique pour séquencer pour des effets plus complexes. Ces API peuvent être essayées sur le Pixel 4 et nous continuons à collaborer avec nos fabricants d'appareils les dernières technologies haptiques pour les utilisateurs de l'écosystème.

Effets haptiques couplés audio

Les applications Android 12 peuvent générer un retour haptique dérivé d'une session audio en utilisant le vibreur du téléphone. Vous pouvez ainsi proposer des jeux et des expériences audio. Par exemple, les sonneries haptiques permettent d'identifier ou un jeu de conduite pourrait simuler la sensation d'un terrain accidenté.

Consultez le HapticGenerator pour en savoir plus.

AppSearch

Android 12 introduit AppSearch, un moteur de recherche très performant sur l'appareil, en tant que service système. AppSearch permet aux applications d'indexer des données structurées et y effectuer des recherches grâce aux fonctionnalités intégrées de recherche en texte intégral. De plus, AppSearch est compatible avec les fonctionnalités de recherche natives, comme l'indexation très efficace. et de récupération, la prise en charge multilingue et le classement en fonction de la pertinence.

Diagramme illustrant l'indexation et la recherche dans AppSearch

AppSearch est disponible sous deux formes: un index local que votre application doit utiliser. compatible avec les anciennes versions d'Android ou un index central gérés 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 le composant intelligent préinstallé dans le système. Quelles sont exactement les données qui sont obtenues affiché sur les surfaces de l'UI du système dépend de l'OEM. De plus, votre peut partager des données de façon sécurisée avec d'autres applications, afin qu'elles puissent faire des recherches sur ces données également.

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 adaptée aux développeurs ainsi qu'un processeur d'annotations de l'assistance.

Mode Jeu

L'API Game Mode et Game Mode d'intervention vous permettent d'optimiser pour jouer 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 au jeu.

Pour en savoir plus, consultez la section Mode Jeu.

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

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

Compatibilité avec de nouveaux gestes PIP

Android 12 prend désormais en charge l'espacement et le pincement pour zoomer gestes pour le PIP période:

  • Pour masquer la fenêtre, l'utilisateur peut la faire glisser vers la gauche ou vers la droite. en périphérie. Pour ouvrir la fenêtre, l'utilisateur peut soit appuyer sur la partie visible la fenêtre placée dans la cachette ou de la faire glisser.

  • L'utilisateur peut désormais redimensionner la fenêtre PIP en pincer pour zoomer.

Android 12 a apporté des améliorations esthétiques importantes à l'animation les transitions entre les fenêtres plein écran et PIP. Nous vous recommandons vivement mettre en œuvre toutes les modifications applicables ; Une fois cette opération effectuée, ces modifications s'adaptent automatiquement aux grands écrans, comme les pliables et les tablettes, tout autre travail requis.

Ces fonctionnalités sont les suivantes:

Nouvelles notifications d'appel téléphonique pour classer les appels entrants selon leur importance

Android 12 ajoute le nouveau style de notification Notification.CallStyle pour les appels téléphoniques. Ce modèle permet à votre application d'indiquer l'importance les appels actifs grâce à 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 à l'appel.

Les appels entrants et continus étant les plus importants pour les utilisateurs, ces les notifications se voient attribuer le meilleur classement dans le volet. Ce classement permet également pour transférer potentiellement ces appels prioritaires à 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();

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

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

Utiliser 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 d'images enrichies pour les notifications

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

Améliorations du mode immersif pour la navigation par gestes

Android 12 consolide le comportement existant pour permettre aux utilisateurs de commandes de navigation par gestes en mode immersif mode. Dans De plus, Android 12 offre un comportement de rétrocompatibilité pour les applications immersive mode.

Partage d'URL pour les applications récentes (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 "Recents" (Éléments récents). Après avoir consulté le contenu d'une application, l'utilisateur peuvent balayer l'écran jusqu'à l'écran "Récents" et trouver l'application dans laquelle ils ont regardé le contenu, puis appuyez sur le bouton du lien pour copier ou partager l'URL.

Pour en savoir plus, consultez la section Activer les URL récentes partage.

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 expliquer pourquoi utilisateurs pour les aider à comprendre pourquoi votre application accède à la position, à l'appareil photo ou au micro des informations. Cette justification peut être visible sur le nouvel écran "Tableau de bord Confidentialité", l'écran des autorisations de l'application, ou les deux.

Autorisations Bluetooth

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

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

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

Recherche de groupes d'autorisations

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

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

Masquer les fenêtres de superposition des applications

Pour permettre aux développeurs de mieux contrôler ce que les utilisateurs voient lorsqu'ils interagissent avec développeur, Android 12 permet de masquer des fenêtres superposées qui sont dessinées par des applications dont SYSTEM_ALERT_WINDOW l'autorisation.

Après avoir déclaré HIDE_OVERLAY_WINDOWS autorisation, 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 applis peuvent choisir de faire lors de l'affichage d'écrans sensibles, tels que les flux de confirmation de transaction.

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

Indicateur de protection de l'autorisation pour les signataires connus

À partir d'Android 12, Attribut knownCerts pour autorisations au niveau de la signature vous permet de vous référer aux résumés des règles de signature connues certificats lors de la déclaration en temps réel.

Votre application peut déclarer cet attribut et utiliser l'indicateur knownSigner pour autoriser appareils et applications pour accorder des autorisations de signature à d'autres d'applications, sans avoir à signer les applications au moment 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 une attestation certificat lorsque ces applis génèrent une nouvelle clé.

À partir d'Android 9 (niveau d'API 28), les règles relatives aux appareils (DPD) qui utilisent Keymaster 4.0 ou version ultérieure peut vérifier les propriétés de l'appareil dans ces certificats d'attestation. Début dans Android 12, toute application qui cible Android 12 (niveau d'API 31) ou version ultérieure peut effectuer des opérations cette vérification à l'aide du setDevicePropertiesAttestationIncluded() .

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

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

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

À partir d'Android 12, la classe Notification.Action.Builder prend en charge les setAuthenticationRequired() , qui permet à votre application d'exiger qu'un appareil soit déverrouillé avant que votre application n'appelle une action de notification donnée. Cette méthode permet d'ajouter pour renforcer la sécurité des notifications sur les appareils verrouillés.

Chaînes localisables pour "BiometricPrompt"

Android 12 introduit de nouvelles API pour vous aider à améliorer la biométrie de votre application l'expérience utilisateur en matière d'authentification. Nouvelle version de BiometricManager.Strings inclut l'getButtonLabel(), getPromptMessage(), et getSettingName() , qui permettent à votre application de récupérer un libellé de bouton lisible et localisé, ou le nom du paramètre de l'application. Utilisez ces étiquettes pour créer les instructions destinées à l'utilisateur spécifiques à l'authentification biométrique ; méthodes utilisées, par exemple "Utiliser le déverrouillage par reconnaissance faciale" ou "Utilisez votre empreinte digitale pour continuer".

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

<ph type="x-smartling-placeholder">
</ph>
Un message semblable à celui-ci s'affiche lorsqu'un message suspect est détecté.

Sur les appareils Pixel compatibles, Android 12 détecte l'hameçonnage sur les messages. reçues dans les applications de chat les plus utilisées. 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 message de sécurité qui se superposent sur l'interface utilisateur de l'application de chat pour avertir les utilisateurs. Par exemple, l'hameçonnage peut avertir les utilisateurs des risques potentiels suivants:

  • Demandes suspectes, telles que l'envoi d'un code, d'une somme d'argent ou autre
  • URL non approuvées
  • Pièces jointes malveillantes
  • Liens vers des applications malveillantes

En plus d'avertir l'utilisateur, l'affichage en superposition permet à l'utilisateur de signaler message suspect et 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 le fichier manifeste de son 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 automatiquement transcoder HEVC(H.265) et HDR (HDR10 et HDR10+) les vidéos enregistrées sur l'appareil au format AVC (H.264), un format largement utilisé. compatible avec les lecteurs standards. Il s'appuie sur les codecs modernes ils sont disponibles sans sacrifier la compatibilité avec les anciennes applications.

Pour en savoir plus, consultez la section Transcodage de contenus multimédias compatibles.

Classe de performance

Android 12 introduit une norme appelée classe de performance. A spécifie les capacités matérielles au-delà de la valeur de référence d'Android exigences. Chaque appareil Android déclare la classe de performance qu'il compatibles. Les développeurs peuvent vérifier la classe de performance de l'appareil au moment de l'exécution et offrent une expérience améliorée qui exploite pleinement les capacités des fonctionnalités.

Reportez-vous à la section Classe de performance. pour en savoir plus.

Améliorations de l'encodage vidéo

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

Les nouvelles clés sont disponibles API MediaFormat ainsi que dans Bibliothèque multimédia NDK.

À partir d'Android 12, les encodeurs vidéo appliquent une qualité minimale de sortie. Ainsi, les utilisateurs ne bénéficient pas d'un service de qualité lorsque vous encodez des vidéos complexes.

Priorité audio

À partir d'Android 12 (niveau d'API 31), lorsqu'une application demande la priorité audio une autre application est ciblée et lit, le système fait fondre l'application en cours de lecture.

Consultez la section Priorité à l'audio sous Android 12 ou version ultérieure. pour en savoir plus.

Mises à jour de MediaDrm

Pour déterminer si un composant de décodeur sécurisé est requis avec 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 du fournisseur Camera2

Bon nombre de nos fabricants d'appareils partenaires ont créé des extensions d'appareil photo personnalisées, telles que (Bokeh, HDR, Nuit, etc.) qu'ils souhaitent que les applications utilisent pour créer des expériences différenciées sur leurs appareils. Le CameraX bibliothèque prend déjà en charge ces extensions de fournisseur personnalisées. Sous Android 12, ces les extensions de fournisseur sont désormais exposées directement sur la plate-forme.

Cet ajout aide les applications Camera2 tirent parti des extensions de fournisseur sans avoir à faire des modifications importantes à l'ancien code. Les API d'extension Camera2 exposent exactement le même ensemble de les extensions dans CameraX. Ceux-ci sont déjà compatibles avec de nombreuses appareils. Vous pouvez ainsi les utiliser 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 dotés de capteurs photo à très haute résolution, généralement avec des modèles Quad ou Nona Bayer. Ils offrent une grande flexibilité en termes de qualité d'image et de performances en cas de faible luminosité. Android 12 introduit de nouveaux qui permettent aux applications tierces de tirer pleinement parti de ces outils polyvalents capteurs. Les nouvelles API sont compatibles avec le comportement unique de ces capteurs peuvent prendre en charge différentes configurations et combinaisons de flux en cas d'utilisation mode haute résolution ou "résolution maximale" au lieu du 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 tampon de protocole via 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 tombstone.

Compatibilité avec les images AVIF

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

Flous et filtres de couleur plus faciles, et autres effets

Android 12 ajoute la nouvelle RenderEffect qui applique des effets graphiques courants comme le floutage, les filtres de couleur, le nuanceur Android d'effets et autres pour les View et les hiérarchies de rendu. Les effets peuvent être combinés comme des effets de chaîne (qui composent un effet intérieur et extérieur) ou des effets mixtes. Autre Android Les appareils peuvent être compatibles ou non avec cette fonctionnalité en raison d'une puissance de traitement limitée.

Les effets peuvent également être appliqués au 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, le NDK L'API ImageDecoder a été étendue pour décoder tous les frames et toutes les données temporelles qui utilisent le format GIF animé et les formats de fichiers WebP animés. Quand introduite sous Android 11, cette API ne décodait que la première image des animations dans ces formats.

Utilisez ImageDecoder au lieu de bibliothèques tierces pour diminuer davantage le nombre d'APK taille et bénéficier des 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 activées

Pour que les applis associées restent en cours d'exécution et gèrent l'appareil, Android 12 introduit des API qui:

  • Vous permettent d'activer une application lorsqu'un appareil associé est à portée.
  • Garantir que le processus se poursuivra pendant que l'appareil restera à l'intérieur la plage d'adresses IP.

Pour que vous puissiez utiliser les API, vos appareils doivent être connectés à l'aide d'un appareil associé administrateur. Pour plus pour en savoir plus, consultez CompanionDeviceManager.startObservingDevicePresence() et CompanionDeviceService.onDeviceAppeared()

Profils du Gestionnaire d'appareils associés

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

Sous 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 maintenant représentent le débit moyen pondéré tout le temps de l'utilisateur par opérateur ou Wi-Fi. SSID, type de réseau et niveau du signal pour toutes les applications installées sur l'appareil. Cela peut renvoyer une estimation plus précise et réaliste du débit attendu, fournissent des estimations sur un démarrage à froid de votre application et nécessite moins de cycles. par rapport aux autres méthodes d'estimation du débit.

Améliorations apportées à Wi-Fi Aware (NAN)

Android 12 apporte des améliorations à 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étecté en raison de la le service s'arrête ou se déplace en dehors de la plage.
  • La façon dont les chemins de données multiples (chemins de données NAN) sont configurés change pour être plus efficace. Les versions antérieures utilisaient la messagerie L2 pour échanger des pairs. qui ont introduit la latence. Sur les appareils en cours d'exécution Sous Android 12 ou version ultérieure, le répondeur (serveur) peut être configuré accepter un pair, ce qui signifie qu'il n'a pas besoin de connaître l'initiateur les informations en amont. Cela accélère l'affichage des chemins de données et permet les 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 au manque de ressources sur les appareils équipés d'Android 12 et plus élevée, vous pouvez appeler WifiAwareManager.getAvailableAwareResources() La valeur renvoyée par cette méthode vous permet d'obtenir le nombre de données disponibles les chemins d'accès, le nombre de sessions de publication disponibles et le nombre s'abonner à des sessions.

Connexion peer-to-peer + connexion Internet simultanée

Lorsque les appareils ciblant Android 12 (niveau d'API 31) ou version ultérieure fonctionnent sur des appareils avec à l'aide de la technologie Peer-to-peer de connexion ne déconnectera pas votre connexion Wi-Fi existante lors de la création de la connexion à l'appareil associé. À vérifiez la compatibilité de cette fonctionnalité, utilisez WifiManager.isMultiStaConcurrencySupported()

Activer l'écran éteint pour les paiements NFC

Vous pouvez activer le NFC dans les applications destinées à Android 12 ou version ultérieure. des paiements sans avoir l'écran allumé en paramétrant requireDeviceScreenOn jusqu'à false Pour en savoir plus sur les paiements NFC lorsque l'écran est éteint ou verrouillé, consultez Écran éteint et écran verrouillé comportemental.

Stockage

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

Fonctionnalité de base

Mises à jour automatiques des applications

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

Informations sur le chipset de l'appareil

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

Mises à jour des principales API Java

Sur la base des demandes et de la collaboration avec les développeurs, nous avons ajouté les éléments suivants : bibliothèques principales 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