Android 12 offre aux développeurs de nouvelles fonctionnalités et API de qualité. Les sections ci-dessous vous permettent d'en savoir plus sur les fonctionnalités de vos applications et de vous familiariser avec les API associées.
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 plus de visibilité. En outre, pour en savoir plus sur les domaines où les modifications de la plate-forme peuvent affecter vos applications, consultez les modifications de comportement d'Android 12 pour les applications qui ciblent Android 12 et pour toutes les applications.
Expérience utilisateur
Material You
Android 12 introduit un nouveau langage de conception appelé Material You pour vous aider à créer des applications plus esthétiques et plus personnalisées. Pour intégrer toutes les dernières mises à jour de Material Design 3 dans vos applications, essayez une version alpha des composants Material Design.
Améliorations apportées aux widgets
Android 12 remanie l'API Widgets existante afin d'améliorer l'expérience des utilisateurs et des développeurs dans la plate-forme et les lanceurs d'applications. Nous avons créé un guide pour vous aider à vous assurer que votre widget est compatible avec Android 12 et pour l'actualiser avec de nouvelles fonctionnalités.
Pour en savoir plus, consultez Améliorations des widgets Android 12.
Insertion de contenu enrichi
Android 12 introduit une nouvelle API unifiée qui permet à votre application de recevoir du contenu enrichi depuis n'importe quelle source disponible: presse-papiers, clavier ou glisser-déposer.
Pour en savoir plus, consultez la section Recevoir du contenu enrichi.
API App splash screen
Android 12 introduit une nouvelle animation de lancement 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 sur les écrans de démarrage.
API à angles arrondis
Android 12 introduit RoundedCorner
et WindowInsets.getRoundedCorner(int
position)
, qui fournissent 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 permettant de créer un retour haptique informatif pour les événements d'interface utilisateur, des effets immersifs et amusants pour les jeux, et le retour haptique attentionnel pour la productivité.
Effets de l'actionneur
Android 12 ajoute des effets expressifs tels que le script faible, qui exploitent la bande passante de fréquences 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 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 les constantes et les primitives comme éléments de base pour des effets haptiques enrichis : constantes permettant d'améliorer les événements d'interface utilisateur et composeur haptique pour séquencer des primitives pour des effets plus complexes. Ces API peuvent être testées sur les appareils Pixel 4, et nous continuons de collaborer avec nos fabricants d'appareils partenaires pour offrir aux utilisateurs de l'écosystème les dernières avancées en matière de technologies haptiques.
Effets haptiques couplés 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 audio et de jeu plus immersives. Par exemple, les sonneries optimisées par le retour haptique peuvent aider à identifier les appelants, ou un jeu de conduite peut simuler la sensation de terrain accidenté.
Pour en savoir plus, consultez la documentation de référence sur 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 d'y effectuer des recherches à l'aide de fonctionnalités intégrées de recherche en texte intégral. De plus, AppSearch est compatible avec les fonctionnalités de recherche natives, telles que l'indexation et la récupération hautement efficaces, la compatibilité multilingue et le classement en fonction de la pertinence.
![Diagramme illustrant l'indexation et la recherche dans AppSearch](https://developer.android.com/static/images/about/versions/12/appsearch.png?authuser=6&hl=fr)
AppSearch est disponible en deux versions: un index local compatible avec les anciennes versions d'Android pour votre application, ou un index central géré pour l'ensemble du système sous 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. En outre, votre application peut partager des données de manière sécurisée avec d'autres applications, pour leur permettre également d'y effectuer des recherches.
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'une compatibilité avec le processeur d'annotations.
Mode Jeu
L'API Game Mode et les interventions Game Mode vous permettent d'optimiser le gameplay en donnant la priorité à certaines caractéristiques, telles que 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 les gestes de cache et de pincement pour zoomer pour la fenêtre PIP:
Pour cacher la fenêtre, l'utilisateur peut la faire glisser vers le bord gauche ou droit. Pour retirer la fenêtre, l'utilisateur peut appuyer sur la partie visible de la fenêtre placée dans la cachette ou la faire glisser hors de la fenêtre.
L'utilisateur peut désormais redimensionner la fenêtre PIP en pincer pour zoomer.
Nouvelles fonctionnalités recommandées pour une expérience de transition PIP soignée
Android 12 a ajouté des améliorations esthétiques importantes aux transitions animées entre les fenêtres en plein écran et en mode PIP. Nous vous recommandons vivement de mettre en œuvre toutes les modifications applicables. Une fois cela fait, ces modifications s'adaptent automatiquement aux grands écrans, tels que les pliables et les tablettes, sans nécessiter d'efforts supplémentaires.
Ces fonctionnalités sont les suivantes:
-
Utilisez l'indicateur
setAutoEnterEnabled
pour fournir des transitions plus fluides au mode PIP lorsque vous balayez l'écran vers l'accueil en mode de navigation par gestes. Auparavant, Android attendait que l'animation de balayage jusqu'à l'écran d'accueil se termine avant de passer en fondu dans la fenêtre PIP. Animations plus fluides lors de l'entrée et de la sortie du mode PIP
L'option
SourceRectHint
est désormais réutilisée pour implémenter une animation plus fluide lors de l'entrée et de la sortie du mode PIP.-
L'option
SeamlessResizeEnabled
fournit une animation avec fondu enchaîné beaucoup plus fluide lors du redimensionnement d'un contenu autre que vidéo dans la fenêtre PIP. Auparavant, le redimensionnement d'un contenu non vidéo dans une fenêtre PIP pouvait créer des artefacts visuels perturbants.
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. 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 à l'appel.
Étant donné que les appels entrants et en cours sont les plus importants pour les utilisateurs, ces notifications se voient attribuer les meilleures positions dans l'ombre. Ce classement permet également au système de 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();
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()
afin de 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 d'images enrichies 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 permettre aux utilisateurs d'envoyer des messages image lorsqu'ils répondent à des 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 d'effectuer plus facilement des commandes de navigation par gestes en mode immersif. En outre, Android 12 offre un comportement de rétrocompatibilité pour le mode immersif persistant.
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 récemment consultés directement depuis l'écran "Recents" (Éléments récents). Après avoir consulté le contenu dans une application, l'utilisateur peut balayer l'écran jusqu'à l'écran "Recents" (Éléments récents) et trouver l'application dans laquelle il a vu le contenu, puis appuyer sur le bouton de lien pour copier ou partager l'URL.
Pour en savoir plus, consultez Activer le partage d'URL récent.
Sécurité et confidentialité
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 sur la localisation, l'appareil photo ou le micro. Cette justification peut s'afficher sur le nouveau tableau de bord Confidentialité et/ou sur l'écran des autorisations de votre application.
Autorisations Bluetooth
Android 12 introduit les autorisations BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
et BLUETOOTH_CONNECT
. Ces autorisations permettent aux applications qui ciblent Android 12 d'interagir 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'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 d'autorisations Bluetooth, déclarez un ensemble plus moderne d'autorisations Bluetooth.
Recherche de groupes 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 particulier, appelez
getPlatformPermissionsForGroup()
.
Masquer les fenêtres de superposition des applications
Pour donner aux développeurs plus de contrôle sur ce que les utilisateurs voient lorsqu'ils interagissent avec leur application, Android 12 permet de masquer les fenêtres en superposition dessinées par des 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 propre fenêtre de l'application est visible. Les applications peuvent choisir de le faire pour afficher des écrans sensibles, tels que des 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 Picture-in-picture ou les bulles.
Indicateur de protection de l'autorisation pour les 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 étend l'ensemble des applications pouvant valider les propriétés d'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 relatives aux appareils (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 version ultérieure peut effectuer cette vérification à l'aide de la méthode setDevicePropertiesAttestationIncluded()
.
Les propriétés d'appareil générées incluent les champs Build
suivants:
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 la méthode setAuthenticationRequired()
, ce qui permet à votre application d'exiger qu'un appareil soit déverrouillé avant qu'elle n'appelle 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 lisible par l'utilisateur et localisé. Utilisez ces étiquettes pour créer des instructions plus précises destinées aux utilisateurs, spécifiques aux méthodes d'authentification biométrique utilisées, telles que "Utilisez 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)
![](https://developer.android.com/static/images/about/versions/12/phishing-detection.png?authuser=6&hl=fr)
Sur les appareils Pixel compatibles, Android 12 détecte l'hameçonnage sur les messages reçus dans des applications de chat populaires. Le système utilise le machine learning sur l'appareil pour détecter les activités suspectes. En cas de détection, le système affiche une superposition de sécurité en haut de l'interface utilisateur de l'application de chat pour avertir les utilisateurs. Par exemple, la détection de 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, la superposition lui permet 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 les fichiers manifestes de leur application. Par 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 en AVC (H.264), un format largement compatible avec les lecteurs standards. Cela tire parti des codecs modernes lorsqu'ils sont disponibles, sans sacrifier la compatibilité avec les applications plus anciennes.
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. Une classe de performance spécifie des capacités matérielles supérieures aux 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 performance.
Améliorations de l'encodage vidéo
Android 12 définit un ensemble standard de clés permettant de 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
ainsi que 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 lorsqu'ils encodent des 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 ciblée et en cours de lecture, le système quitte en fondu l'application en cours de lecture.
Pour en savoir plus, consultez la section Priorité audio sur Android 12 ou version ultérieure.
Mises à jour de MediaDrm
Pour déterminer si un composant de décodeur sécurisé est requis avec les API MediaDrm
actuelles, procédez comme suit:
- Créez un élément
MediaDrm
. - Ouvrez une session pour obtenir un ID de session.
- Créez un
MediaCrypto
à l'aide de l'ID de session. - 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 une MediaDrm
.
Appareil photo
Extensions du fournisseur Camera2
Bon nombre de nos fabricants d'appareils partenaires ont créé des extensions d'appareil photo personnalisées (comme Bokeh, HDR, le 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 fournisseur personnalisées. Dans Android 12, ces extensions de fournisseur sont désormais exposées directement sur la plate-forme.
Cet ajout permet aux applications comportant des implémentations Camera2
complexes de tirer parti des extensions de fournisseur sans avoir à apporter de modifications importantes au code ancien. Les API Extension de Camera2 exposent exactement le même ensemble d'extensions que dans CameraX, et celles-ci 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
Aujourd'hui, de nombreux appareils Android sont équipés de capteurs photo à très 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 cas de 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 accepter différentes configurations et combinaisons de flux lorsqu'ils fonctionnent en haute résolution ou en mode "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 tombstone.
Compatibilité avec les images AVIF
Android 12 prend en charge les images qui utilisent le format AVIF (Image File Format) AV1. AVIF est un format de conteneur pour les images et les séquences d'images encodées avec AV1. AVIF exploite le contenu encodé au sein des images lors 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 formats d'image plus anciens, tels que JPEG. Pour en savoir plus sur les avantages de ce format, consultez l'article de blog de Jake Archibld.
Flous et filtres de couleur plus faciles, et autres effets
Android 12 ajoute le nouveau RenderEffect
qui applique des effets graphiques courants tels que le floutage, les filtres de couleur, les effets de nuanceur Android, etc. aux View
et aux hiérarchies de rendu. Les effets peuvent être combinés sous forme d'effets de chaîne (qui composent un effet intérieur et extérieur) ou d'effets mixtes. Différents appareils Android peuvent être compatibles ou non avec la 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
Dans Android 12, l'API ImageDecoder
du NDK a été étendue pour décoder tous les frames et toutes les données de durée à partir d'images qui utilisent les formats de fichiers GIF et WebP animés. Lors de 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 diminuer davantage la taille de l'APK 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 applications associées restent en cours d'exécution pour gérer 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 à portée.
Pour que vous puissiez utiliser les API, vos appareils doivent être connectés à l'aide de Companion Device Manager. Pour en savoir plus, consultez CompanionDeviceManager.startObservingDevicePresence()
et CompanionDeviceService.onDeviceAppeared()
.
Profils du Gestionnaire d'appareils associés
![](https://developer.android.com/static/images/about/versions/12/companion-device-profile.png?authuser=6&hl=fr)
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é sur l'ensemble du temps de l'utilisateur par opérateur ou SSID Wi-Fi, le type de réseau et le niveau de signal, pour toutes les applications de l'appareil.
Cette méthode peut renvoyer une estimation plus précise et réaliste du débit attendu, fournir des estimations lors du démarrage à froid de votre application et nécessite moins de cycles qu'avec d'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é, car le service s'arrête ou se trouve hors de portée. - La façon dont les chemins de données multiples (NAN Data Paths) sont configurés change pour être plus efficace. Les versions antérieures utilisaient la messagerie L2 pour échanger des informations sur les pairs des innovateurs, ce qui entraînait la 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. Autrement dit, il n'a pas besoin de connaître à l'avance les informations de l'initiateur. Cela accélère l'affichage des chemins de données et permet l'établissement de plusieurs liaisons point à point en une seule requête réseau.
- Pour éviter que le framework refuse les requêtes de découverte ou de connexion en raison d'un manque de ressources, vous pouvez appeler
WifiAwareManager.getAvailableAwareResources()
sur les appareils équipés d'Android 12 ou version ultérieure. La valeur renvoyée par cette méthode vous permet d'obtenir le nombre de chemins de données disponibles, ainsi que le nombre de sessions de publication et d'abonnement disponibles.
Connexion peer-to-peer + connexion Internet simultanée
Lorsque des appareils ciblant Android 12 (niveau d'API 31) ou une version ultérieure s'exécutent sur des appareils compatibles matériellement, l'utilisation de connexions peer-to-peer ne déconnecte pas votre connexion Wi-Fi existante lors de la création de la connexion à l'appareil pair. Pour vérifier la compatibilité 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 Écran éteint et comportement de l'écran de verrouillage.
Stockage
Android 12 introduit les fonctionnalités de gestion de l'espace de stockage suivantes:
- Compatibilité du Media Store avec
MediaDocumentsProvider
lorsque votre application récupère un URI multimédia qui équivaut à l'URI d'un fournisseur de documents donné. - Un répertoire d'enregistrements vocaux.
- L'autorisation
MANAGE_MEDIA
, qui permet à une application d'effectuer des opérations de gestion multimédia sans afficher de boîte de dialogue de confirmation à l'utilisateur pour chaque opération. - Les applications disposant à la fois des autorisations
MANAGE_EXTERNAL_STORAGE
etQUERY_ALL_PACKAGES
, telles que les applications de gestion de fichiers, peuvent appeler une activité personnalisée pour gérer l'espace de stockage d'une autre application, à condition que cette dernière crée l'activité personnalisée.
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 du chipset SoC et les informations du modèle via le SDK. Vous pouvez récupérer ces informations en appelant respectivement Build.SOC_MANUFACTURER
et Build.SOC_MODEL
.
Mises à jour des principales API Java
À la suite 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
|