Android 7.0 pour les développeurs

Android 7.0 Nougat propose toute une gamme pour les utilisateurs et les développeurs. Ce document présente les nouveautés pour les développeurs.

Consultez les modifications de comportement d'Android 7.0 pour savoir dans quels domaines les changements de plate-forme peuvent affecter vos applications.

Pour en savoir plus sur les fonctionnalités grand public d'Android 7.0, consultez le site www.android.com.

Compatibilité avec le mode multifenêtre

Dans Android 7.0, nous introduisons une nouvelle fonctionnalité de multitâche très demandée sur la plate-forme : la compatibilité avec le mode multifenêtre.

Les utilisateurs peuvent désormais ouvrir deux applications à la fois à l'écran.

  • Sur les téléphones et les tablettes exécutant Android 7.0, les utilisateurs peuvent exécuter deux applications côte à côte ou l'un au-dessus de l'autre en mode Écran partagé. Les utilisateurs peuvent redimensionner les applications en faisant glisser le séparateur entre elles.
  • Sur les appareils Android TV, les applications peuvent se placer en Picture-in-picture , ce qui lui permet de continuer à afficher du contenu lorsque l'utilisateur parcourt la page ou interagit avec d'autres applications.
Applications mobiles en cours d'exécution en mode Écran partagé

Figure 1 : Applications exécutées en mode Écran partagé

Surtout sur les tablettes et autres appareils à grand écran, vous offre de nouvelles façons de susciter l'intérêt des utilisateurs. Vous pouvez même activer le glisser-déposer dans votre application pour permettre aux utilisateurs de faire glisser facilement du contenu vers ou depuis votre application. C'est un excellent moyen d'améliorer l'expérience utilisateur.

Il est facile d'ajouter le mode multifenêtre à votre application et de configurer son affichage. gère l'affichage multifenêtre. Par exemple, vous pouvez spécifier le les dimensions minimales autorisées, ce qui empêche les utilisateurs de redimensionner l'activité ci-dessous de cette taille. Vous pouvez également désactiver l'affichage multifenêtre pour votre application, ce qui garantit que le système n'affichera votre application qu'en mode plein écran.

Pour en savoir plus, consultez la documentation destinée aux développeurs sur la compatibilité avec le mode multifenêtre.

Améliorations des notifications

Dans Android 7.0, nous avons repensé les notifications pour les simplifier et plus rapide à utiliser. Voici quelques-unes des modifications apportées :

  • Mise à jour des modèles : nous mettons à jour les modèles de notifications pour mettre en avant l'image principale et l'avatar. Les développeurs pourront tirer parti des nouveaux modèles avec un minimum d'ajustements de leur code.
  • Personnalisation du style de message: vous pouvez personnaliser davantage les les libellés d'interface utilisateur associés à vos notifications MessagingStyle. Vous pouvez configurer le message, le titre de la conversation et l'affichage du contenu.
  • Notifications groupées: le système peut regrouper les messages. (par exemple, par sujet) et afficher le groupe. Un utilisateur peut effectuer des actions sur ces notifications (ignorer ou archiver, par exemple). Si vous avez des notifications pour Android Wear, vous connaissez déjà ce modèle.
  • Réponse directe: pour les applications de communication en temps réel, le paramètre Le système Android prend en charge les réponses intégrées afin que les utilisateurs puissent répondre rapidement un SMS ou un message directement dans l'interface de notification.
  • Vues personnalisées : deux nouvelles API vous permettent d'exploiter les décorations système, telles que les en-têtes et les actions de notification, lorsque vous utilisez des vues personnalisées dans les notifications.
Mobile affichant des notifications de messages groupés
Mobile affichant une notification de message unique
Mobile affichant la réponse à un message intégrée dans l'interface de notification

Figure 2. Notifications groupées et réponse directe

Pour découvrir comment mettre en œuvre les nouvelles fonctionnalités, consultez la Notifications .

Compilation JIT/AOT guidée par le profil

Dans Android 7.0, nous avons ajouté un compilateur JIT (Just in Time) avec du code le profilage à ART, ce qui lui permet d'améliorer en permanence les performances applications Android en cours d'exécution. Le compilateur JIT complète la technologie actuelle d'ART Compilateur AOT (Ahead of Time) et contribue à améliorer les performances d'exécution, d'espace de stockage et accélérer les mises à jour du système et des applications.

La compilation guidée par profil permet à ART de gérer la compilation AOT/JIT pour chaque application en fonction de son utilisation réelle et des conditions de l'appareil. Par exemple, ART gère un profil des méthodes populaires de chaque application et peut précompiler et mettre en cache ces méthodes pour des performances optimales. Il laisse d'autres parties de l'application sont décompilés jusqu'à ce qu'ils soient réellement utilisés.

En plus d'améliorer les performances pour les éléments clés de l'application, permet de réduire l'espace mémoire RAM global d'une application, y compris binaires. Cette fonctionnalité est particulièrement importante sur les appareils à faible mémoire.

ART gère la compilation guidée par profil de manière à minimiser l'impact sur la la batterie de l'appareil. Il effectue la précompilation uniquement lorsque l'appareil est inactif et ce qui permet d'économiser du temps et de la batterie.

Procédure rapide pour installer une application

L'un des avantages les plus concrets du compilateur JIT d'ART est la rapidité les installations et les mises à jour du système. Même les applications volumineuses qui ont nécessité plusieurs minutes optimiser et installer Android 6.0 peuvent désormais s'installer en seulement quelques secondes. Les mises à jour du système sont également plus rapides, car il n'y a plus d'étape d'optimisation.

Dormez où que vous soyez...

Android 6.0 a introduit le mode Sommeil, un mode système qui économise la batterie en différant applis Activités du processeur et du réseau lorsque l'appareil est inactif, par exemple sur une table ou dans un tiroir.

Désormais disponible sur Android 7.0, la fonctionnalité Sommeil va encore plus loin et économise la batterie lors de vos déplacements. Chaque fois que l'écran est éteint pendant un certain temps et que l'appareil est débranché, La fonctionnalité Sommeil applique un sous-ensemble des restrictions familières concernant le processeur et le réseau aux applications. Cela signifie que les utilisateurs peuvent économiser la batterie même lorsqu'ils portent leur appareil sur leur dans vos poches.

Illustration montrant comment Doze applique un premier niveau de restrictions d'activité système pour améliorer l'autonomie de la batterie

Figure 3. La fonctionnalité Sommeil s'applique désormais des restrictions pour améliorer l'autonomie de la batterie même lorsque l'appareil n'est pas à l'arrêt.

Peu de temps après que l'écran s'est éteint alors que l'appareil est sur batterie, la fonctionnalité Sommeil restreint l'accès au réseau, et reporte les tâches et les synchronisations. Pendant une brève maintenance l'accès au réseau est autorisé pour les applications, les jobs/synchronisations sont exécutés. Allumer l'écran ou brancher l'appareil le sort de la mise en veille.

Lorsque l'appareil est à nouveau à l'arrêt, avec l'écran éteint et sur batterie pendant une durée, la fonctionnalité Sommeil applique l'ensemble des restrictions de processeur et de réseau sur les alarmes PowerManager.WakeLock et AlarmManager, et Recherches GPS/Wi-Fi.

Les bonnes pratiques pour adapter votre application à la fonctionnalité Sommeil sont identiques, que le l'appareil est en mouvement ou non. Si vous avez déjà mis à jour votre application pour gérer Sommeil, vous avez terminé. Si ce n'est pas le cas, commencez à adapter votre application vers la fonctionnalité Sommeil dès maintenant.

Projet Svelte: optimisations en arrière-plan

Le projet Svelte est un effort continu visant à réduire l'utilisation de la RAM par le système et les applications sur l'ensemble des appareils Android de l'écosystème. Dans Android 7.0, les fonctions Svelte optimise l'exécution des applications en arrière-plan.

Le traitement en arrière-plan est un élément essentiel de la plupart des applications. Lorsqu'elle est bien traitée, peuvent offrir une expérience utilisateur exceptionnelle : immédiate, rapide et contextualisée. Lorsqu'il n'est pas géré correctement, le traitement en arrière-plan peut consommer inutilement de la RAM (et batterie) et affectent les performances du système pour d'autres applications.

Depuis Android 5.0, JobScheduler est la version méthode préférée d'effectuer le travail d'arrière-plan d'une manière qui soit bonne pour les utilisateurs. Les applications peuvent planifier des tâches tout en laissant le système s'optimiser en fonction les conditions de mémoire, d'alimentation et de connectivité. JobScheduler offre un contrôle et une simplicité, et nous souhaitons que toutes les applications l'utilisent.

GCMNetworkManager, qui fait partie des services Google Play, offre un calendrier de travail similaire et est compatible avec les anciennes versions de Android

Nous continuons d'étendre JobScheduler et GCMNetworkManager pour rencontrer d'autres vos cas d'utilisation. Par exemple, avec Android 7.0, vous pouvez désormais planifier en fonction des modifications apportées aux fournisseurs de contenu. En même temps, nous commençons à abandonner certains des anciens modèles qui peuvent réduire les performances du système, en particulier sur les appareils disposant de peu de mémoire.

Dans Android 7.0, nous supprimons trois diffusions implicites couramment utilisées : CONNECTIVITY_ACTION, ACTION_NEW_PICTURE et ACTION_NEW_VIDEO (puisqu'ils peuvent activer le les processus en arrière-plan de plusieurs applications à la fois et sollicitent la mémoire et la batterie. Si votre application les reçoit, profitez d'Android 7.0 pour migrer vers JobScheduler et les API associées à la place.

Examinez l'arrière-plan Optimisations.

SurfaceView

Android 7.0 apporte un mouvement synchrone à la classe SurfaceView, qui offre de meilleures performances de batterie que TextureView dans certains cas : lors du rendu de contenu vidéo ou 3D, les applications avec défilement et position vidéo animée consomment moins d'énergie avec SurfaceView qu'avec TextureView.

La classe SurfaceView permet une composition plus économe en batterie sur car il est composé dans du matériel dédié, séparément de l'application le contenu de la fenêtre. Par conséquent, moins de tests copie à TextureView.

La position du contenu d'un objet SurfaceView est désormais mise à jour de manière synchrone. avec le contenu de l'application parent. L'un des résultats de ce changement est que les traductions ou les échelles d'une vidéo lue dans un SurfaceView ne produit plus de barres noires le long de la vue lorsqu'elle se déplace.

À partir d'Android 7.0, nous vous recommandons vivement d'économiser de l'énergie en utilisant SurfaceView au lieu de TextureView.

Économiseur de données

Économiseur de données dans Paramètres

Figure 4. Économiseur de données dans les paramètres

Pendant la durée de vie d'un appareil mobile, le coût d'un forfait de données mobiles est généralement dépasse le coût de l'appareil lui-même. Pour de nombreux utilisateurs, les données mobiles une ressource coûteuse qu'elle souhaite conserver.

Android 7.0 introduit le mode Économiseur de données, un nouveau service système qui permet de réduire l'utilisation des données mobiles par les applications, en itinérance, vers la fin du cycle de facturation, ou sur un petit pack de données prépayé. L'Économiseur de données permet aux utilisateurs de contrôler la façon dont les applications utilisent les données mobiles et aux développeurs de fournir un service plus efficace lorsque l'Économiseur de données est activé.

Lorsqu'un utilisateur active l'économiseur de données dans les paramètres et que l'appareil est sur un réseau facturé à l'usage, le système bloque la consommation des données en arrière-plan et signale aux applications d'utiliser moins de données au premier plan autant que possible, par exemple en limitant débit binaire pour le streaming, réduction de la qualité de l'image, report de la mise en cache optimiste, et ainsi de suite. Les utilisateurs peuvent autoriser certaines applications à autoriser les données facturées à l'usage en arrière-plan même si l'économiseur de données est activé.

Android 7.0 étend ConnectivityManager pour fournir aux applications une moyen de récupérer les les préférences de l'utilisateur en matière d'économiseur de données et de surveiller modifications des préférences. Toutes les applications doivent vérifier si l'utilisateur a activé les données Économiser et faire en sorte de limiter la consommation des données au premier plan et en arrière-plan.

API Vulkan

Android 7.0 intègre VulkanTM, une nouvelle API de rendu 3D, à la plate-forme. Comme OpenGL™ ES, Vulkan est une norme ouverte pour les graphismes et le rendu 3D gérée par le groupe Khronos.

Vulkan est conçu dès le départ pour minimiser la surcharge du processeur dans le pilote, et permettent à votre application de contrôler plus directement le fonctionnement du GPU. Vulkan permet aussi un meilleur chargement en parallèle, car plusieurs threads peuvent effectuer comme la construction d'un tampon de commande.

Les outils de développement et les bibliothèques Vulkan sont déployés dans le SDK Android 7.0. Ils incluent:

  • En-têtes
  • Couches de validation (bibliothèques de débogage)
  • Compilateur de nuanceurs SPIR-V
  • Bibliothèque de compilation de nuanceurs d'exécution SPIR-V

Vulkan n'est disponible que pour les applications sur des appareils dotés de matériel compatible avec Vulkan, comme le Nexus 5X, le Nexus 6P ou le Nexus Player. Nous collaborons étroitement avec nos partenaires pour proposer Vulkan sur davantage d'appareils dès que possible.

Pour en savoir plus, consultez la documentation de l'API.

API Tile des réglages rapides

Blocs Réglages rapides dans le volet des notifications

Figure 5. Blocs Réglages rapides dans le volet des notifications.

Il s'agit d'un moyen simple et populaire d'afficher les principaux paramètres et actions, directement depuis le volet des notifications. Dans Android 7.0, nous avons élargi le champ d'application grâce aux Réglages rapides.

Nous avons ajouté plus d'espace pour les cartes de réglages rapides supplémentaires, auxquelles les utilisateurs peuvent accéder dans une zone d'affichage paginée en balayant l'écran de gauche à droite. Nous avons également donné aux utilisateurs le contrôle des cartes de paramètres rapides qui s'affichent et de leur emplacement. Ils peuvent ajouter ou déplacer des cartes simplement en les faisant glisser.

Pour les développeurs, Android 7.0 ajoute également une nouvelle API qui vous permet de définir votre propre Blocs Réglages rapides permettant aux utilisateurs d'accéder facilement aux principales commandes et actions de votre appli.

Les cartes des Réglages rapides sont réservées aux commandes ou actions requises de toute urgence ou utilisées fréquemment. Elles ne doivent pas être utilisées comme raccourcis pour lancer une application.

Une fois que vous avez défini vos cartes, vous pouvez les présenter aux utilisateurs, qui peuvent les ajouter dans les Réglages rapides par glisser-déposer.

Pour en savoir plus sur la création d'une carte d'application, consultez la documentation de référence pour Tile.

Blocage de numéros

Android 7.0 est désormais compatible avec le blocage des numéros sur la plate-forme et fournit une API de framework permettant aux fournisseurs de services de gérer une liste de numéros bloqués. La l'application de SMS par défaut, l'application téléphonique par défaut et les applications de l'opérateur peuvent lire écrire dans la liste des numéros bloqués. Les autres applications n'ont pas accès à cette liste.

En faisant du blocage des nombres une fonctionnalité standard de la plateforme, Android fournit aux applications de prendre en charge le blocage des numéros de manière cohérente sur un large éventail appareils. Voici quelques-uns des autres avantages dont peuvent bénéficier les applications:

  • Les numéros bloqués lors des appels sont également bloqués pour les SMS
  • Les numéros bloqués peuvent être conservés entre les réinitialisations et les appareils via l'application Sauvegarde et Restaurer l'élément
  • Plusieurs applications peuvent utiliser la même liste de numéros bloqués

De plus, grâce à l'intégration des applications des opérateurs via Android, les opérateurs peuvent lire la liste des numéros bloqués sur l'appareil et effectuer un blocage côté service pour l'utilisateur afin d'empêcher les appels et SMS indésirables de le recevoir via n'importe quel support, tel qu'un point de terminaison VoIP ou des téléphones de transfert.

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

Filtrage des appels

Android 7.0 autorise l'application téléphonique par défaut à filtrer les appels entrants. Le téléphone application le fait en implémentant le nouveau CallScreeningService, qui permet à l'application pour téléphone d'effectuer un certain nombre d'actions en fonction Call.Details de l'appel entrant, par exemple:

  • Refuser l'appel entrant
  • Ne pas autoriser l'appel dans le journal des appels
  • Ne pas afficher de notification à l'utilisateur pour l'appel

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

Compatibilité multilocale, plus de langues

Android 7.0 permet désormais aux utilisateurs de sélectionner plusieurs paramètres régionaux dans les paramètres, pour mieux prendre en charge les cas d'utilisation bilingues. Les applications peuvent utiliser Une nouvelle API pour obtenir les paramètres régionaux sélectionnés par l'utilisateur et proposer des services plus sophistiqués l'expérience utilisateur des utilisateurs utilisant plusieurs paramètres régionaux (affichage des résultats de recherche dans plusieurs langues et ne propose pas de traduire des pages Web dans une langue l'utilisateur le sait déjà.

En plus de la compatibilité avec les paramètres régionaux, Android 7.0 élargit la gamme de langues à la disposition des utilisateurs. Il propose plus de 25 variantes chacune langues telles que l'anglais, l'espagnol, le français et l'arabe. De plus, elle ajoute des données de plus de 100 nouvelles langues.

Les applications peuvent obtenir la liste des paramètres régionaux définis par l'utilisateur en appelant LocaleList.GetDefault(). Pour prendre en charge le plus grand nombre de paramètres régionaux, Android 7.0 est modifiant la façon dont il résout les ressources. Veillez à tester vos applications et à vérifier fonctionne comme prévu avec la nouvelle logique de résolution des ressources.

Pour en savoir plus sur le nouveau comportement de résolution des ressources et les bonnes pratiques à suivre doivent suivre la procédure décrite dans la section Compatibilité multilingue.

Nouveaux emoji

Android 7.0 introduit des emoji et des fonctionnalités supplémentaires liés aux emoji, y compris des emoji de couleur de peau et la prise en charge des sélecteurs de variantes. Si votre application accepte les emoji, suivez les consignes ci-dessous pour profiter de ces fonctionnalités liées aux emoji.

  • Vérifiez qu'un emoji sur l'appareil contient un emoji avant de l'insérer. Pour vérifier quels emoji sont présents dans la la police système, utilisez la méthode hasGlyph(String).
  • Vérifiez qu'un emoji est compatible avec les sélecteurs de variante. Les sélecteurs de variante vous permettent de : afficher certains emoji en couleur ou en noir et blanc ; Sur les appareils mobiles, les applications doivent représenter les emoji en couleur plutôt que en noir et blanc. Toutefois, Si votre application affiche des emoji en lien avec le texte, elle doit utiliser la version en noir et blanc. Pour déterminer si un emoji a une variante, utilisez le sélecteur de variante. Pour obtenir la liste complète des caractères avec variantes, consultez le la section séquences de variantes d'emoji de la Documentation Unicode sur les variantes
  • Vérifiez qu'un emoji est compatible avec la carnation. Android 7.0 permet aux utilisateurs de modifier la couleur de peau des emoji selon leurs préférences. Les applications de clavier doivent fournir des d'emoji qui présentent plusieurs types de carnations et qui doivent permettre aux utilisateurs de sélectionner la carnation qu'ils préfèrent. Pour déterminer les emoji système qui comportent des modificateurs de couleur de peau, utilisez la méthode hasGlyph(String). Pour déterminer les emoji qui utilisent des tons de peau, consultez la documentation Unicode.

API ICU4J sur Android

Android 7.0 propose désormais un sous-ensemble d'API ICU4J dans le framework Android sous le package android.icu. La migration est simple et consiste principalement à remplacer l'espace de noms com.java.icu par android.icu. Si vous utilisez déjà un pack ICU4J dans votre en passant aux API android.icu fournies dans le peut permettre de faire des économies substantielles en termes de taille d'APK.

Pour en savoir plus sur les API Android ICU4J, consultez Compatibilité avec ICU4J.

WebView

Chrome et WebView, Together

À partir de la version 51 de Chrome sur Android 7.0 ou version ultérieure, l'APK de Chrome sur votre appareil permet de fournir et d'afficher des WebViews Android System. Cette approche améliore la mémoire sur l'appareil lui-même et réduit la bande passante requise pour maintenir WebView à jour (car l'APK WebView autonome ne sera plus mis à jour) tant que Chrome reste activé).

Vous pouvez choisir votre fournisseur WebView en activant les options pour les développeurs et sélectionnez Implémentation WebView. Vous pouvez utiliser n'importe quelle version compatible de Chrome (version en développement, bêta ou stable) installée sur votre appareil ou l'APK Webview autonome pour servir d'implémentation WebView.

Multiprocessus

À partir de la version 51 de Chrome sur Android 7.0, WebView exécutera le contenu Web dans un processus distinct en bac à sable lorsque l'option pour les développeurs "Multiprocess WebView" est sélectionnée pour les développeurs. est activé.

Nous souhaitons recueillir des commentaires sur la compatibilité et les performances d'exécution dans N avant d'activer WebView multiprocessus dans une future version d'Android. Dans ce version, régressions du temps de démarrage, utilisation totale de la mémoire et logiciels sont attendues.

Si vous rencontrez des problèmes inattendus en mode multiprocessus, nous aimerions en savoir plus de l'IA générative. Veuillez contacter l'équipe WebView dans l'outil de suivi des bugs de Chromium.

Exécution du code JavaScript avant le chargement de la page

À partir des applications ciblant Android 7.0, le contexte JavaScript sera réinitialisé lors du chargement d'une nouvelle page. Actuellement, le contexte est conservé pour première page chargée dans une nouvelle instance WebView.

Les développeurs qui souhaitent injecter du code JavaScript dans la WebView doivent exécuter le script une fois la page commencée à se charger.

Géolocalisation sur des origines non sécurisées

À partir des applications ciblant Android 7.0, l'API de géolocalisation autorisées sur les origines sécurisées (via HTTPS) Cette règle vise à protéger les informations privées des utilisateurs lorsqu'ils utilisent une connexion non sécurisée.

Tester avec WebView en version bêta

WebView est mis à jour régulièrement. Nous vous recommandons donc de tester régulièrement la compatibilité avec votre application à l'aide du canal bêta de WebView. Pour commencer les tests versions préliminaires de WebView sur Android 7.0, téléchargez et installez Chrome pour les développeurs ou Chrome Bêta, puis sélectionnez-le comme implémentation WebView sous les options pour les développeurs décrites ci-dessus. Veuillez signaler tout problème via le Chromium outil de suivi des bugs afin de pouvoir les corriger avant qu'une nouvelle version de WebView ne soit sont libérées.

API OpenGLTM ES 3.2

Android 7.0 ajoute des interfaces de framework et une compatibilité avec la plate-forme pour OpenGL ES 3.2, y compris:

  • Toutes les extensions du Android Extension Pack (AEP), à l'exception de EXT_texture_sRGB_decode.
  • Tampons de frame à virgule flottante pour le HDR et l'ombre différée
  • Appels de dessin BaseVertex pour améliorer le traitement par lot et le traitement par flux
  • Contrôle des accès robuste au tampon pour réduire la surcharge WebGL.

L'API de framework pour OpenGL ES 3.2 sur Android 7.0 est fournie avec le GLES32. Lorsque vous utilisez OpenGL ES 3.2, veillez à déclarer dans votre fichier manifeste, à l'aide de la balise <uses-feature> et l'attribut android:glEsVersion.

Pour en savoir plus sur l'utilisation d'OpenGL ES, y compris en ce qui concerne la vérification de la version compatible au moment de l'exécution, consultez le guide de l'API OpenGL ES.

Enregistrement Android TV

Android 7.0 permet désormais d'enregistrer et de lire du contenu à partir de l'entrée Android TV via de nouvelles API d'enregistrement. S'appuyer sur le décalage temporel existant les API, les services d'entrée TV permettent de contrôler quelles sont les données des chaînes pouvant être enregistrées, les sessions enregistrées sont sauvegardées et gèrent l'interaction des utilisateurs avec le contenu enregistré.

Pour en savoir plus, consultez la section API Android TV Recording.

Android for Work

Android for Work inclut de nombreuses nouvelles fonctionnalités et API pour les appareils équipés d'Android 7.0. Vous trouverez ci-dessous quelques-unes des principales fonctionnalités. Pour obtenir la liste complète, consultez la liste des fonctionnalités Android Enterprise.

Défi de sécurité du profil professionnel

Propriétaires de profils ciblant le SDK N spécifier une question d'authentification distincte pour les applications exécutées dans le profil professionnel. Le défi professionnel s'affiche lorsqu'un utilisateur tente d'ouvrir toutes les applications professionnelles. La réussite du test de sécurité débloque profil professionnel et le déchiffre si nécessaire. Pour les propriétaires de profil, ACTION_SET_NEW_PASSWORD invite l'utilisateur à définir un défi professionnel, et ACTION_SET_NEW_PARENT_PROFILE_PASSWORD invite l'utilisateur à définir un verrouillage de l'appareil.

Les propriétaires de profil peuvent définir des règles de code secret distinctes pour le défi professionnel (par exemple, la longueur du code ou si une empreinte digitale peut être utilisée pour déverrouiller le profil) à l'aide des méthodes setPasswordQuality(), setPasswordMinimumLength() et associées. Le propriétaire du profil peut également définir le verrouillage de l'appareil à l'aide de l'instance DevicePolicyManager renvoyée par la nouvelle méthode getParentProfileInstance(). De plus, les propriétaires de profil peuvent personnaliser l'écran des identifiants pour défi professionnel en utilisant les nouveaux setOrganizationColor() et setOrganizationName().

Désactiver les applications professionnelles

Sur un appareil doté d'un profil professionnel, les utilisateurs peuvent activer/désactiver le mode Travail. Lorsque le mode Travail est désactivé, l'utilisateur géré est temporairement arrêté, ce qui désactive les applications du profil professionnel, la synchronisation en arrière-plan et les notifications. Cela inclut l'application du propriétaire du profil. Lorsque le mode Travail est désactivé, le système affiche un état persistant pour rappeler à l'utilisateur qu'il ne peut pas lancer d'applications professionnelles. Le lanceur indique que les applications et widgets professionnels ne sont pas accessibles.

VPN permanent

Les propriétaires d'appareils et de profils peuvent s'assurer que les applications professionnelles se connectent toujours via un VPN spécifié. Le système lance automatiquement le VPN après de l’appareil.

Les nouvelles méthodes DevicePolicyManager sont setAlwaysOnVpnPackage() et getAlwaysOnVpnPackage()

Parce que les services VPN peuvent être liés directement par le système sans application interactions, les clients VPN doivent gérer de nouveaux points d'entrée pour le VPN permanent. En tant que auparavant, les services sont indiqués au système par un filtre d'intent correspondant l'action android.net.VpnService.

Les utilisateurs peuvent aussi définir manuellement des clients VPN permanents VPNService méthodes utilisant Paramètres > Plus > Vpn. La possibilité d'activer le VPN permanent dans les paramètres n'est disponible que si le client VPN cible le niveau d'API 24.

Provisionnement personnalisé

Une application peut personnaliser le provisionnement du propriétaire du profil et du propriétaire de l'appareil avec les couleurs et les logos de l'entreprise. Personnalisation de DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR la couleur de flux. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI personnalise la navigation avec un logo d'entreprise.

Améliorations de l'accessibilité

Android 7.0 propose désormais des paramètres de vision directement sur l'écran d'accueil pour les nouveaux configuration de l'appareil. Il est ainsi beaucoup plus facile pour les utilisateurs de découvrir et de configurer des fonctionnalités d'accessibilité sur leurs appareils, y compris le geste d'agrandissement, la police la taille d'affichage et TalkBack.

Ces fonctionnalités d'accessibilité étant de plus en plus visibles, vos utilisateurs sont plus susceptibles d'essayer votre application lorsqu'ils sont activés. Veillez à tester vos applications plus tôt en activant ces paramètres. Vous pouvez les activer dans Paramètres > Accessibilité.

Toujours dans Android 7.0, les services d'accessibilité peuvent désormais aider les utilisateurs souffrant d'un handicap de toucher l'écran. La nouvelle API permet de créer des services avec des fonctionnalités telles que le suivi du visage, le suivi oculaire, le balayage par point, etc., pour pour répondre aux besoins de ces utilisateurs.

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

Démarrage direct

Le démarrage direct réduit le temps de démarrage de l'appareil et permet les applications ont des fonctionnalités limitées, même après un redémarrage inattendu. Par exemple, si un appareil chiffré redémarre pendant que l’utilisateur est en train de dormir, les alarmes, les messages et les appels entrants peuvent désormais continuer à recevoir l'utilisateur normalement. Les services d'accessibilité peuvent aussi être immédiatement après un redémarrage.

Le démarrage direct exploite le chiffrement basé sur les fichiers dans Android 7.0 pour activer des règles de chiffrement précises pour les données système et les données d'application. Le système utilise un magasin chiffré par l'appareil pour certaines données système les données de l'application enregistrée. Un magasin chiffré par identifiants est utilisé par défaut autres données système, données utilisateur, applications et données d'application.

Au démarrage, le système démarre en mode restreint avec un accès les données chiffrées sur l'appareil uniquement, sans accès général aux applications ou aux données. Si vous avez des composants que vous souhaitez exécuter dans ce mode, vous pouvez les enregistrer en définissant un indicateur dans le fichier manifeste. Après le redémarrage, le système s'active les composants enregistrés en diffusant le LOCKED_BOOT_COMPLETED l'intention. Le système s'assure que les données d'application chiffrées de l'appareil enregistré sont disponibles avant le déverrouillage. Toutes les autres données seront indisponibles jusqu'à ce que l'utilisateur confirme le verrouillage. les identifiants à l'écran pour le déchiffrer.

Pour en savoir plus, consultez la section Démarrage direct.

Attestation de clé

Android 7.0 introduit l'attestation de clé, un nouvel outil de sécurité qui vous aide à vous assurer que les paires de clés stockées dans le keystore intégré au matériel d'un appareil protègent correctement les informations sensibles utilisées par votre application. Grâce à cet outil, vous gagnez en confiance : votre application interagit avec des clés qui se trouvent dans du matériel sécurisé, même si l'appareil qui exécute votre application est en mode root. Si vous utilisez des clés provenant du keystore intégré au matériel dans vos applications, utilisez cet outil, en particulier si vous utilisez les touches vérifier des informations sensibles dans votre application.

L'attestation des clés vous permet de vérifier qu'une paire de clés RSA ou EC a été créés et stockés dans le keystore intégré au matériel d'un appareil au sein du environnement d'exécution sécurisé (TEE). Cet outil vous permet également d'utiliser un service hors appareil, comme le serveur backend de votre application, pour déterminer et afin de vérifier fortement les utilisations et la validité de la paire de clés. Ces fonctionnalités offrent un niveau de sécurité supplémentaire qui protège la paire de clés, même si une personne met l'appareil en mode root ou compromet la sécurité de la plate-forme Android exécutant sur l'appareil.

Remarque : Seul un petit nombre d'appareils sont équipés d'Android 7.0. prendre en charge l'attestation des clés au niveau du matériel ; tous les autres appareils équipés d'Android 7.0 ; utilisez plutôt l'attestation des clés au niveau du logiciel. Avant de valider les propriétés des clés intégrées au matériel d'un appareil dans un environnement de production, vous devez vous assurer que l'appareil prend en charge l'attestation des clés au niveau du matériel. À vous devez vérifier que la chaîne de certificats d'attestation contient signé par la clé racine d'attestation Google et que le Élément attestationSecurityLevel dans la clé description est définie sur le type de sécurité à l'échelle du projet.

Pour en savoir plus, consultez la documentation destinée aux développeurs sur l'attestation de clé.

Configuration de la sécurité réseau

Dans Android 7.0, les applications peuvent personnaliser le comportement de leur sécurité (HTTPS, TLS) les connexions en toute sécurité, sans modifier le code, à l'aide de l'API Configuration de la sécurité réseau au lieu d'utiliser la méthode API programmatiques sujettes aux erreurs (ex. X509TrustManager).

Fonctionnalités compatibles:

  • Ancres de confiance personnalisées : Permet à une application de personnaliser Les autorités de certification sont approuvées pour leurs connexions sécurisées. Pour par exemple, l'approbation de certificats autosignés spécifiques ou d'un ensemble restreint d'autorités de certification publiques.
  • Forçages réservés au débogage. Permet au développeur d'applications de déboguer de manière sécurisée des connexions sécurisées à leur application sans risque supplémentaire pour de la base de données.
  • Désactivation du trafic en texte clair. Permet à une application de se protéger l'utilisation accidentelle de trafic en texte clair.
  • Épinglage de certificat : Fonctionnalité avancée qui permet à une application limiter les clés de serveur approuvées pour les connexions sécurisées.

Pour en savoir plus, consultez la section Configuration de la sécurité réseau.

Autorité de certification de confiance par défaut

Par défaut, les applications qui ciblent Android 7.0 ne font confiance qu'aux certificats fournis par le système et ne plus approuver les autorités de certification ajoutées par l'utilisateur. Applications ciblant Android 7.0 (niveau d'API 24) qui souhaitent approuver les autorités de certification ajoutées par l'utilisateur doivent utiliser Configuration de la sécurité réseau sur spécifier le niveau de confiance des autorités de certification utilisateur.

APK Signature Scheme v2

Android 7.0 introduit APK Signature Scheme v2, un nouveau schéma de signature d'application qui permet d'accélérer les installations d'applications et offre une meilleure protection contre les accès non autorisés. modifications apportées aux fichiers APK. Par défaut, Android Studio 2.2 et le plug-in Android pour Gradle 2.2 signent votre application à la fois à l'aide du schéma de signature d'APK v2 et du schéma de signature traditionnel, qui utilise la signature JAR.

Bien que nous vous recommandions d'appliquer APK Signature Scheme v2 à votre application, cette nouvelle n'est pas obligatoire. Si votre application ne se compile pas correctement avec l'APK Signature Scheme v2, vous pouvez désactiver le nouveau schéma. Le processus de désactivation entraîne la signature de votre application par Android Studio 2.2 et le plug-in Android pour Gradle 2.2 à l'aide du schéma de signature traditionnel uniquement. Pour signer uniquement avec les schéma traditionnel, ouvrez le fichier build.gradle au niveau du module, puis ajoutez la ligne v2SigningEnabled false à votre signature de version configuration:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

Attention : Si vous signez votre application à l'aide d'un APK Signature Scheme v2 et apportez des modifications supplémentaires à l'application, sa signature n'est plus valide. Pour cette raison, utilisez des outils tels que zipalign. avant de signer votre application avec APK Signature Scheme v2, et non après.

Pour en savoir plus, consultez les documents Android Studio expliquant comment signer une application dans Android Studio et découvrir comment les configurer ; le fichier de compilation pour signer les applications à l'aide du plug-in Android pour Gradle.

Accès à l'annuaire délimité

Dans Android 7.0, les applications peuvent utiliser de nouvelles API pour demander l'accès à des données externes de stockage, y compris des répertoires sur des supports amovibles tels que des cartes SD . Les nouvelles API simplifient grandement la façon dont votre application accède aux répertoires de stockage externe, tels que Pictures. Applications comme les applications photo, peuvent utiliser ces API au lieu d'utiliser READ_EXTERNAL_STORAGE, qui accorde l'accès à tout l'espace de stockage ou le framework d'accès au stockage, qui permet à l'utilisateur d'accéder le répertoire.

De plus, les nouvelles API simplifient la procédure à suivre pour accorder l'accès à l'espace de stockage de votre application. Lorsque vous utilisez les nouvelles API, le système utilise un simple UI des autorisations qui détaille clairement le répertoire de l'application demandant l'accès.

Pour en savoir plus, consultez les Champ d'application Directory Access pour les développeurs.

Outil d'aide pour raccourcis clavier

Sous Android 7.0, l'utilisateur peut appuyer sur Meta + / pour déclencher un écran Raccourcis clavier qui affiche tous les raccourcis disponibles à la fois dans le système et dans l'application active. Le système les récupère automatiquement depuis le menu de l'application, s'ils existent. Vous pouvez fournissent également vos propres listes de raccourcis affinés pour l'écran. Pour ce faire, remplacez la méthode onProvideKeyboardShortcuts().

Remarque:La touche Méta n'est pas présente dans tous les claviers: sur un clavier Macintosh, il s'agit de la touche Commande, sur le clavier Windows, il s'agit de la touche Windows. Sur la Pixel C et les claviers ChromeOS, il s'agit de la touche Recherche.

Pour déclencher l'assistant de raccourcis clavier depuis n'importe quelle partie de votre application, appelez requestShowKeyboardShortcuts() depuis l'activité appropriée.

API Custom Pointer

Android 7.0 introduit l'API Custom Pointer, qui vous permet de personnaliser les l'apparence, la visibilité et le comportement du pointeur. Cette fonctionnalité est particulièrement utile lorsqu'un utilisateur utilise une souris ou un pavé tactile pour interagir avec des objets d'interface utilisateur. Le pointeur par défaut utilise une icône standard. Cette API inclut également des fonctionnalités avancées, comme modifier l'apparence de l'icône du pointeur en fonction sur des mouvements spécifiques de la souris ou du pavé tactile.

Pour définir une icône de pointeur, remplacez onResolvePointerIcon() de la classe View. Cette méthode utilise PointerIcon pour dessiner l'icône correspondant à une un événement de mouvement spécifique.

API Sustained Performance

Les performances peuvent considérablement fluctuer pour les applications de longue durée, car le limite les moteurs système sur puce lorsque les composants de l'appareil atteignent leur les limites de température. Cette fluctuation représente une cible mobile pour les développeurs d'applications qui créent des applications hautes performances et de longue durée.

Pour remédier à ces limites, Android 7.0 est compatible avec le mode de performances durables, ce qui permet aux OEM de fournir des indications sur les fonctionnalités de performances de l'appareil pour les applications de longue durée. Les développeurs d'applications peuvent utiliser ces indices pour optimiser les applications afin d'obtenir un niveau de performances de l'appareil prévisible et cohérent sur de longues périodes.

Les développeurs d'applications peuvent tester cette nouvelle API dans Android 7.0 sur les appareils Nexus 6P uniquement. Pour utiliser cette fonctionnalité, Définir l'indicateur de période de performance soutenue pour la période pour une exécution soutenue en mode de performances soutenues. Définissez cet indicateur à l'aide de la méthode Window.setSustainedPerformanceMode(). Le système applique automatiquement désactive ce mode lorsque la fenêtre n'est plus active.

Compatibilité avec la réalité virtuelle

Un nouveau mode RV est disponible sur Android 7.0 pour permettre aux développeurs créer des expériences RV mobiles de haute qualité pour les utilisateurs. Il existe un certain nombre telles que l'accès à un cœur de processeur exclusif pour les applications de réalité virtuelle. Dans vos applications, vous pouvez bénéficier d'un suivi de la tête intelligent, et notifications stéréo adaptées à la RV. Plus important encore, Android 7.0 offre à très faible latence. Pour en savoir plus sur la création d'applications de réalité virtuelle pour Android 7.0, consultez le SDK Google VR pour Android.

Dans Android 7.0, les développeurs de services d'impression peuvent désormais présenter des informations supplémentaires sur les imprimantes individuelles et les tâches d'impression.

Lorsque vous répertoriez des imprimantes individuelles, un service d'impression peut désormais définir des icônes de deux manières:

De plus, vous pouvez fournir une activité par imprimante pour afficher des informations supplémentaires en appelant setInfoIntent().

Vous pouvez indiquer la progression et l'état des tâches d'impression dans une tâche d'impression. notification en appelant setProgress() et setStatus(), respectivement.

API Frame Metrics

L'API Frame Metrics permet à une application de surveiller les performances de rendu de son UI. L'API offre cette fonctionnalité en exposant une API Pub/Sub de diffusion en flux continu à la trame de transfert. informations temporelles pour la fenêtre actuelle de l'application. Les données renvoyées sont équivalente à celle affichée par adb shell dumpsys gfxinfo framestats, mais sans s'y limiter, les 120 dernières images.

Vous pouvez utiliser l'API Frame Metrics pour mesurer l'interface utilisateur au niveau de l'interaction des performances en production, sans connexion USB. Cette API permet de collecter des données avec une granularité beaucoup plus élevée adb shell dumpsys gfxinfo Cette précision supérieure est possible, car Le système peut collecter des données pour des interactions particulières dans l'application. le système n'ont pas besoin d'obtenir un résumé global des performances ou effacer un état global. Vous pouvez utiliser cette Capacité à collecter des données sur les performances et à détecter les régressions dans les performances de l'interface utilisateur pour des cas d'utilisation réels dans une application.

Pour surveiller une fenêtre, implémentez la OnFrameMetricsAvailableListener.onFrameMetricsAvailable() de rappel et de l'enregistrer dans cette fenêtre.

L'API fournit un objet FrameMetrics, qui contient des données temporelles que le sous-système de rendu signale pour divers jalons du cycle de vie d'un frame. Les métriques acceptées sont les suivantes : UNKNOWN_DELAY_DURATION, INPUT_HANDLING_DURATION, ANIMATION_DURATION, LAYOUT_MEASURE_DURATION, DRAW_DURATION, SYNC_DURATION, COMMAND_ISSUE_DURATION, SWAP_BUFFERS_DURATION, TOTAL_DURATION et FIRST_DRAW_FRAME.

Fichiers virtuels

Dans les versions précédentes d'Android, votre application pouvait utiliser l'accès au stockage Framework permettant aux utilisateurs de sélectionner des fichiers dans leurs comptes de stockage cloud, comme Google Drive. Cependant, il n'existait aucun moyen de représenter les fichiers n'ont pas de représentation directe en bytecode ; chaque fichier était nécessaire pour fournir un flux d'entrée.

Android 7.0 ajoute le concept de fichiers virtuels à l'espace de stockage Framework. La fonctionnalité de fichiers virtuels permet à vos DocumentsProvider pour renvoyer les URI de document pouvant être utilisés avec un intent ACTION_VIEW, même s'ils n'ont pas de représentation directe en bytecode. Android 7.0 vous permet également de fournir d'autres formats pour les fichiers utilisateur, qu'ils soient virtuels ou non.

Pour en savoir plus sur l'ouverture de fichiers virtuels, consultez la section Ouvrir des fichiers virtuels dans le guide Storage Access Frameworks.