Android 10 offre aux utilisateurs et aux développeurs des fonctionnalités et des capacités exceptionnelles. Ce document présente les fonctionnalités disponibles pour les développeurs.
Pour en savoir plus sur les API, consultez le rapport de différences des API ou la documentation de référence de l'API Android. Recherchez les API qui ont été "ajoutées au niveau d'API 29". Consultez également les modifications de comportement d'Android 10 (pour les applications ciblant le niveau d'API 29 et pour toutes les applications), ainsi que les modifications de confidentialité, pour savoir dans quels domaines les changements de plate-forme peuvent affecter vos applications.
Renforcement de la sécurité
Android 10 introduit un certain nombre de fonctionnalités de sécurité, résumées dans les sections suivantes.
Amélioration des boîtes de dialogue d'authentification biométrique
Android 10 apporte les améliorations suivantes à la compatibilité avec l'authentification biométrique :
- Une vérification de la fonctionnalité d'authentification biométrique.
- Un mécanisme de remplacement qui permet à un utilisateur de s'authentifier à l'aide du code, du schéma ou du mot de passe de son appareil s'il ne peut pas s'authentifier à l'aide de ses données biométriques.
- Indication indiquant au système de ne pas exiger de confirmation de l'utilisateur après que celui-ci s'est authentifié à l'aide d'une modalité biométrique implicite. Par exemple, vous pouvez indiquer au système qu'aucune confirmation supplémentaire ne doit être requise après qu'un utilisateur s'est authentifié à l'aide de l'authentification faciale.
Exécuter le code DEX intégré directement à partir de l'APK
Depuis Android 10, vous pouvez demander à la plate-forme d'exécuter un code DEX intégré directement à partir du fichier APK de votre application. Cette option permet de prévenir toute attaque si un pirate informatique parvient à manipuler le code compilé localement sur l'appareil.
Pour en savoir plus, consultez Exécuter le code DEX intégré directement à partir de l'APK.
Compatibilité avec TLS 1.3
Android 10 est désormais compatible avec TLS 1.3. TLS 1.3 est une révision majeure de la norme TLS qui inclut des avantages en termes de performances et une sécurité renforcée. Nos benchmarks indiquent que les connexions sécurisées peuvent être établies jusqu'à 40 % plus rapidement avec TLS 1.3 qu'avec TLS 1.2.
Pour en savoir plus sur notre implémentation de TLS 1.3, consultez la section TLS de la page sur les changements de comportement pour toutes les applications.
API Conscrypt publique
Depuis Android 10, le fournisseur de sécurité Conscrypt inclut une API publique pour la fonctionnalité TLS.
La collection de classes sous android.net.ssl contient des méthodes statiques permettant d'accéder à des fonctionnalités qui ne sont pas disponibles à partir des API javax.net.ssl génériques. Les noms de ces classes peuvent être déduits comme le pluriel de la classe javax.net.ssl correspondante. Par exemple, le code qui fonctionne sur des instances de javax.net.ssl.SSLSocket peut utiliser des méthodes de SSLSockets à la place.
Fonctionnalités de connectivité
Android 10 inclut plusieurs améliorations liées à la mise en réseau et à la connectivité.
API de connexion au réseau Wi-Fi
Android 10 est compatible avec les connexions peer-to-peer. Cette fonctionnalité permet à votre application d'inviter l'utilisateur à modifier le point d'accès auquel l'appareil est connecté à l'aide de WifiNetworkSpecifier pour décrire les propriétés d'un réseau demandé. La connexion pair à pair est utilisée à des fins non liées au réseau, telles que la configuration d'amorçage pour les appareils secondaires tels que Chromecast et le matériel Google Home.
Pour en savoir plus, consultez API de requête réseau Wi-Fi pour la connectivité peer-to-peer.
API de suggestion de réseau Wi-Fi
Android 10 permet à votre application d'inviter l'utilisateur à se connecter à un point d'accès Wi-Fi. Vous pouvez suggérer le réseau auquel se connecter. La plate-forme choisira en fin de compte le point d'accès à accepter en fonction des données de votre application et d'autres applications.
Pour en savoir plus sur cette fonctionnalité, consultez Suggestion de Wi-Fi.
Améliorations apportées aux modes Wi-Fi hautes performances et à faible latence
Android 10 vous permet de fournir un indice au modem sous-jacent pour minimiser la latence.
Android 10 étend l'API de verrouillage Wi-Fi pour prendre en charge efficacement le mode hautes performances et le mode à faible latence. L'économie d'énergie Wi-Fi est désactivée pour les modes hautes performances et mode à faible latence. Une optimisation supplémentaire de la latence peut être activée en mode à faible latence, en fonction de la compatibilité du modem.
Le mode à faible latence n'est activé que lorsque l'application qui acquiert le verrou est exécutée au premier plan et que l'écran est allumé. Le mode à faible latence est particulièrement utile pour les applications de jeux mobiles en temps réel.
Recherches spécialisées dans le résolveur DNS
Android 10 ajoute la prise en charge native des résolutions DNS spécialisées, à la fois en texte clair et en mode DNS sur TLS. Auparavant, le résolveur DNS de la plate-forme n'était compatible qu'avec les enregistrements A et AAAA, qui permettent de rechercher uniquement les adresses IP associées à un nom, mais pas avec d'autres types d'enregistrements.
L'API DnsResolver fournit une résolution générique et asynchrone qui vous permet de rechercher SRV, NAPTR et d'autres types d'enregistrements. Notez que l'analyse de la réponse revient à l'application.
Pour les applications basées sur NDK, consultez android_res_nsend.
Wi-Fi Easy Connect
Android 10 vous permet d'utiliser Easy Connect pour provisionner des identifiants Wi-Fi sur un appareil pair, en remplacement de WPS, qui est obsolète.
Les applications peuvent intégrer Easy Connect à leur flux de configuration et de provisionnement à l'aide de l'intent ACTION_PROCESS_WIFI_EASY_CONNECT_URI.
Pour en savoir plus sur cette fonctionnalité, consultez Wi-Fi Easy Connect.
API de connexion Wi-Fi Direct
Les classes d'API WifiP2pConfig et WifiP2pManager ont été mises à jour dans Android 10 pour permettre l'établissement d'une connexion rapide à Wi-Fi Direct à l'aide d'informations prédéterminées. Ces informations sont partagées via un canal secondaire, tel que le Bluetooth ou le NFC.
L'exemple de code suivant montre comment créer un groupe à l'aide d'informations prédéterminées :
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
Java
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
Pour rejoindre un groupe à l'aide d'identifiants, remplacez manager.createGroup() par ce qui suit :
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
Canaux orientés connexion (CoC) Bluetooth LE
Android 10 permet à votre application d'utiliser des connexions BLE CoC pour transférer des flux de données plus volumineux entre deux appareils BLE. Cette interface fait abstraction des mécanismes Bluetooth et de connectivité pour simplifier l'implémentation.
Fonctionnalités de téléphonie
Android 10 inclut plusieurs améliorations liées à la téléphonie.
Amélioration de la qualité des appels
Android 10 permet de collecter des informations sur la qualité des appels IMS (IP Multimedia Subsystem) en cours, y compris la qualité vers et depuis le réseau, sur les appareils compatibles avec cette fonctionnalité.
Filtrage d'appels et affichage du numéro de l'appelant
Android 10 permet à votre application d'identifier les appels qui ne figurent pas dans le carnet d'adresses de l'utilisateur comme des appels indésirables potentiels et de les rejeter de manière silencieuse au nom de l'utilisateur. Les informations sur ces appels bloqués sont enregistrées en tant qu'appels bloqués dans le journal d'appels afin d'offrir une plus grande transparence à l'utilisateur lorsqu'il manque des appels. L'utilisation de cette API élimine l'obligation d'obtenir les autorisations READ_CALL_LOG de l'utilisateur pour fournir des fonctionnalités de filtrage des appels et d'identification de l'appelant.
API du service de redirection des appels
Android 10 modifie la façon dont les intents d'appel sont gérés. La diffusion NEW_OUTGOING_CALL est obsolète et est remplacée par l'API CallRedirectionService. L'API CallRedirectionService fournit des interfaces permettant de modifier les appels sortants passés par la plate-forme Android. Par exemple, les applications tierces peuvent annuler les appels et les rediriger via la VoIP.
Améliorations apportées à la création de fichiers sur un espace de stockage externe
En plus d'introduire l'espace de stockage cloisonné, Android 10 ajoute les fonctionnalités suivantes liées à l'espace de stockage externe :
- Vous pouvez utiliser l'option
IS_PENDINGpour accorder à votre application un accès exclusif à un fichier multimédia lorsqu'il est écrit sur le disque. - Si vous connaissez un emplacement spécifique où stocker les fichiers, vous pouvez indiquer au système où stocker les fichiers nouvellement créés.
- Chaque périphérique de stockage externe possède un nom de volume unique.
Contenus multimédias et graphiques
Android 10 introduit les nouvelles fonctionnalités et API multimédias et graphiques suivantes :
Partage de l'entrée audio
Android 10 permet à deux applications de partager l'entrée audio simultanément. Pour en savoir plus, consultez Partager l'entrée audio.
Capture de la lecture audio
Android 10 permet à une application de capturer la lecture audio d'autres applications. Pour en savoir plus, consultez Enregistrement de la lecture.
Barre de recherche dans les notifications MediaStyle
À partir d'Android 10, les notifications MediaStyle affichent une barre de recherche. La barre de recherche indique la progression de la lecture à partir de PlaybackState.getPosition(). Dans certains cas, elle peut être utilisée pour accéder à un emplacement dans le programme en cours de lecture. L'apparence et le comportement de la barre de recherche sont contrôlés par les règles suivantes :
- La barre de recherche s'affiche s'il existe un
MediaSessionactif et que sa durée (spécifiée parMediaMetadata.METADATA_KEY_DURATION) est supérieure à zéro. Cela signifie que la barre n'apparaît pas pour les flux indéterminés tels que les diffusions en direct et les émissions de radio. - Si la session implémente
ACTION_SEEK_TO, l'utilisateur peut faire glisser la barre de recherche pour contrôler l'emplacement de lecture.
API MIDI native
L'API MIDI native Android (AMidi) permet aux développeurs d'applications d'envoyer et de recevoir des données MIDI avec du code C/C++, en s'intégrant plus étroitement à leur logique audio et de contrôle C/C++ et en minimisant le besoin de JNI.
Pour en savoir plus, consultez API MIDI native Android.
Améliorations de MediaCodecInfo
Android 10 ajoute des méthodes à MediaCodecInfo qui révèlent plus d'informations sur un codec.
Pour en savoir plus, consultez Codecs multimédias.
API Thermal
Lorsque les appareils sont trop chauds, ils peuvent ralentir le processeur et/ou le GPU, ce qui peut affecter les applications et les jeux de manière inattendue. Les applications qui impliquent des graphismes complexes, de nombreux calculs ou une activité réseau soutenue sont plus susceptibles de rencontrer des problèmes, qui peuvent varier d'un appareil à l'autre en fonction du chipset et des fréquences de base, des niveaux d'intégration, ainsi que de l'emballage et du format de l'appareil.
Sous Android 10, les applications et les jeux peuvent utiliser une API thermique pour surveiller les changements sur l'appareil et prendre les mesures nécessaires pour limiter la consommation d'énergie et rétablir une température normale. Les applications enregistrent un écouteur dans PowerManager, par le biais duquel le système signale l'état thermique en cours, allant de léger et modéré à sévère, critique, d'urgence et d'arrêt.
Lorsque l'appareil signale un stress thermique, les applications et les jeux peuvent aider en annulant les activités en cours pour réduire la consommation d'énergie de différentes manières. Par exemple, les applications de streaming peuvent réduire la résolution/le débit ou le trafic réseau, une application d'appareil photo peut désactiver le flash ou l'amélioration intensive des images, un jeu peut réduire la fréquence de frames ou la tessellation des polygones, une application multimédia peut réduire le volume du haut-parleur et une application de cartographie peut désactiver le GPS.
L'API thermique nécessite une nouvelle couche HAL de l'appareil. Elle est actuellement compatible avec les appareils Pixel équipés d'Android 10, et nous collaborons avec nos partenaires fabricants d'appareils pour assurer une compatibilité étendue avec l'écosystème le plus rapidement possible.
Appareil photo et images
Android 10 introduit les nouvelles fonctionnalités suivantes liées à l'appareil photo et aux images :
Compatibilité avec les appareils photo monochromes
Android 9 (niveau d'API 28) a introduit la fonctionnalité d'appareil photo monochrome. Android 10 apporte plusieurs améliorations à la prise en charge des caméras monochromes :
- Prise en charge du format de flux Y8 pour améliorer l'efficacité de la mémoire.
- Prise en charge de la capture DNG brute monochrome.
- Introduction des énumérations CFA MONO et NIR pour distinguer les caméras monochromes standards des caméras proches de l'infrarouge.
Vous pouvez utiliser cette fonctionnalité pour capturer une image monochrome native. Un appareil logique multicaméra peut utiliser une caméra monochrome comme sous-caméra physique pour obtenir une meilleure qualité d'image en cas de faible luminosité.
Format de profondeur de champ dynamique
À partir d'Android 10, les appareils photo peuvent stocker les données de profondeur d'une image dans un fichier distinct, à l'aide d'un nouveau schéma appelé "format de profondeur dynamique" (DDF, Dynamic Depth Format). Les applications peuvent demander à la fois l'image JPG et ses métadonnées de profondeur, et utiliser ces informations pour appliquer le flou de leur choix lors du post-traitement sans modifier les données de l'image d'origine.
Pour lire les spécifications de ce format, consultez Format de profondeur de champ dynamique.
Format de fichier image haute efficacité
Le format HEIF (High Efficiency Image File) est un format d'image et de vidéo standard qui offre un encodage de meilleure qualité et une taille de fichier plus petite que les autres formats de fichiers.
Pour en savoir plus sur le format de fichier, consultez HEIC.
Améliorations apportées à la fonctionnalité multicaméra
Android 10 améliore la fusion de plusieurs caméras en une seule caméra logique, une fonctionnalité introduite dans Android 9 (niveau d'API 28). Les éléments suivants ont été ajoutés à l'API Camera2 :
isSessionConfigurationSupported(SessionConfiguration sessionConfig): vous permet de vérifier si la configuration de session transmise peut être utilisée pour créer une session de capture de caméra.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: vous permet de déterminer l'ID de l'appareil photo physique actif qui sauvegarde un appareil photo logique. Vous pouvez utiliser les ID renvoyés pour demander des flux logiques et des flux de sous-caméras physiques afin d'améliorer l'efficacité énergétique.
API AccessibilityService
Android 10 introduit les nouvelles fonctionnalités et API de service d'accessibilité suivantes :
Indicateur de touche d'entrée AccessibilityNodeInfo
À partir d'Android 10, vous pouvez appeler isTextEntryKey() pour déterminer si un AccessibilityNodeInfo donné représente une touche de saisie de texte faisant partie d'un clavier ou d'un pavé numérique.
Lecture vocale de la boîte de dialogue d'accessibilité
Si les utilisateurs doivent utiliser le raccourci d'accessibilité pour démarrer un service d'accessibilité, Android 10 permet d'accompagner la boîte de dialogue d'une invite de synthèse vocale si le service le demande.
Raccourci d'accessibilité lorsque la navigation par gestes est activée
Lorsque la fonctionnalité de navigation par gestes est activée dans Android 10, le bouton Accessibilité n'est pas visible ni sélectionnable. Pour accéder au menu des services d'accessibilité, les utilisateurs doivent effectuer l'un des gestes suivants :
- Balayez l'écran vers le haut avec deux doigts.
- Balayez l'écran vers le haut avec deux doigts et maintenez-les dessus.
Raccourci d'accessibilité pour les claviers physiques
Sous Android 10, les utilisateurs peuvent déclencher le raccourci d'accessibilité sur un clavier physique en appuyant sur Ctrl+Alt+Z.
Amélioration du contrôleur de clavier virtuel
Sous Android 10, les services d'accessibilité peuvent demander l'affichage du clavier virtuel même lorsque l'appareil détecte qu'un clavier physique est connecté. Les utilisateurs peuvent modifier ce comportement.
Délais d'accessibilité définis par l'utilisateur
Android 10 introduit l'API getRecommendedTimeoutMillis(). Cette méthode est compatible avec les délais avant expiration définis par l'utilisateur pour les éléments d'interface utilisateur interactifs et non interactifs. La valeur renvoyée est influencée à la fois par les préférences de l'utilisateur et par les API du service d'accessibilité.
Améliorations de la saisie automatique
Android 10 inclut les améliorations suivantes apportées au service de saisie automatique.
Requêtes de saisie automatique liées à la compatibilité
Vous pouvez utiliser l'option FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST pour déterminer si une requête de saisie automatique a été générée via le mode de compatibilité.
Enregistrer le nom d'utilisateur et le mot de passe simultanément
Vous pouvez prendre en charge les cas où une application utilise plusieurs activités pour afficher le nom d'utilisateur, le mot de passe et d'autres champs à l'aide de l'indicateur SaveInfo.FLAG_DELAY_SAVE.
Interaction de l'utilisateur avec l'UI d'enregistrement
Vous pouvez afficher et masquer un champ de mot de passe dans une boîte de dialogue d'enregistrement en définissant un écouteur d'action sur la boîte de dialogue et en modifiant la visibilité de la vue distante du mot de passe correspondante.
Prise en charge de la mise à jour des ensembles de données
La saisie automatique peut mettre à jour les mots de passe existants. Par exemple, si un utilisateur a déjà enregistré un mot de passe et qu'il en enregistre un nouveau, la saisie automatique l'invite à mettre à jour le mot de passe existant au lieu d'en enregistrer un nouveau.
Améliorations de la classification des champs
Android 10 apporte les améliorations suivantes à l'API Field Classification.
Constructeur UserData.Builder
Le constructeur UserData.Builder a été modifié pour mieux s'aligner sur le modèle Builder.
Autoriser le mappage d'une valeur à plusieurs types d'ID de catégorie
Lorsque vous utilisez UserData.Builder sous Android 10, vous pouvez désormais mapper une valeur à plusieurs types d'ID de catégorie. Dans les versions précédentes, une exception était générée si une valeur était ajoutée plusieurs fois.
Amélioration de la compatibilité avec les numéros de carte de crédit
La classification des champs peut désormais détecter les nombres à quatre chiffres comme les quatre derniers chiffres d'un numéro de carte de crédit.
Prise en charge de la classification des champs spécifiques à l'application
Android 10 ajoute FillResponse.setUserData(), qui vous permet de définir des données utilisateur spécifiques à l'application pendant la durée de la session.
Cela aide le service de saisie automatique à détecter les types de champs contenant du contenu spécifique à l'application.
Commandes de l'interface utilisateur et du système
Android 10 apporte les améliorations suivantes à l'interface utilisateur :
Prise en charge des fonctionnalités PopFrame de JVMTI
Android 10 ajoute la prise en charge de la fonctionnalité can_pop_frames dans l'implémentation JVMTI Android. Lors du débogage, cette fonctionnalité vous permet de réexécuter des fonctions après avoir mis en pause l'exécution à un point d'arrêt et ajusté les variables locales, les variables globales ou l'implémentation d'une fonction. Pour en savoir plus, consultez la page de référence sur Pop Frame d'Oracle.
API SurfaceControl
Android 10 fournit une API SurfaceControl pour un accès de bas niveau au compositeur système (SurfaceFlinger). Pour la plupart des utilisateurs, SurfaceView est le moyen approprié d'exploiter le compositeur. L'API SurfaceControl peut être utile dans certains cas, par exemple :
- Synchronisation de plusieurs surfaces
- Intégration de surfaces interprocessus
- Gestion de la durée de vie de niveau inférieur
L'API SurfaceControl est disponible dans les liaisons SDK et NDK.
L'implémentation du NDK inclut une API pour l'échange manuel de tampons avec le compositeur. Cela offre une alternative aux utilisateurs qui ont atteint les limites de BufferQueue.
Détection des blocages du moteur de rendu WebView
Android 10 introduit la classe abstraite WebViewRenderProcessClient, que les applications peuvent utiliser pour détecter si un WebView ne répond plus. Pour utiliser cette classe :
- Définissez votre propre sous-classe et implémentez ses méthodes
onRenderProcessResponsive()etonRenderProcessUnresponsive(). - Associez une instance de votre
WebViewRenderProcessClientà un ou plusieurs objetsWebView. - Si le
WebViewne répond plus, le système appelle la méthodeonRenderProcessUnresponsive()du client, en transmettant leWebViewet leWebViewRenderProcess. (Si leWebViewest un processus unique, le paramètreWebViewRenderProcessest nul.) Votre application peut prendre les mesures appropriées, par exemple en affichant une boîte de dialogue demandant à l'utilisateur s'il souhaite interrompre le processus d'affichage.
Si le WebView ne répond toujours pas, le système appelle régulièrement onRenderProcessUnresponsive() (pas plus d'une fois toutes les cinq secondes), mais n'effectue aucune autre action.
Si le WebView redevient réactif, le système n'appelle onRenderProcessResponsive() qu'une seule fois.
Panneaux des paramètres
Android 10 introduit les panneaux de paramètres, une API qui permet aux applications d'afficher les paramètres aux utilisateurs dans le contexte de leur application. Les utilisateurs n'ont ainsi pas besoin d'accéder aux paramètres pour modifier des éléments tels que le NFC ou les données mobiles afin d'utiliser l'application.
Par exemple, supposons qu'un utilisateur ouvre un navigateur Web alors que son appareil est en mode Avion. Avant Android 10, l'application ne pouvait afficher qu'un message générique demandant à l'utilisateur d'ouvrir les paramètres pour rétablir la connectivité. Avec Android 10, l'application de navigateur peut afficher un panneau intégré présentant les principaux paramètres de connectivité, tels que le mode Avion, le Wi-Fi (y compris les réseaux à proximité) et les données mobiles. Grâce à ce panneau, les utilisateurs peuvent restaurer la connectivité sans quitter l'application.
Pour afficher un panneau de paramètres, déclenchez un intent avec l'une des actions Settings.Panel suivantes :
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type peut être l'une des valeurs suivantes :
ACTION_INTERNET_CONNECTIVITY- Affiche les paramètres liés à la connectivité Internet, tels que le mode Avion, le Wi-Fi et les données mobiles.
ACTION_WIFI- Affiche les paramètres Wi-Fi, mais pas les autres paramètres de connectivité. Cette option est utile pour les applications qui nécessitent une connexion Wi-Fi pour effectuer des importations ou des téléchargements volumineux.
ACTION_NFC- Affiche tous les paramètres liés à la technologie NFC(communication en champ proche).
ACTION_VOLUME- Affiche les paramètres de volume pour tous les flux audio.
Améliorations du partage
Android 10 apporte un certain nombre d'améliorations au partage :
API de raccourci de partage
L'API Sharing Shortcuts remplace les API Direct Share.
Au lieu de récupérer les résultats de manière réactive à la demande, l'API Sharing Shortcuts permet aux applications de publier des cibles de partage direct à l'avance. Voici comment fonctionne l'ShortcutManager.
Comme les deux API sont similaires, nous avons étendu l'API ShortcutInfo pour faciliter l'utilisation des deux fonctionnalités. L'API Sharing Shortcuts vous permet d'attribuer directement des catégories ou des personnes à une cible de partage. Les cibles de partage sont conservées dans le système jusqu'à ce que la même application les mette à jour ou qu'elle soit désinstallée.
L'ancien mécanisme de partage direct fonctionne toujours, mais les applications qui l'utilisent ont une priorité inférieure à celles qui utilisent l'API Sharing Shortcuts.
ShortcutInfo.Builder ajoute et améliore des méthodes pour fournir des informations supplémentaires sur la cible de partage.
Cibles de partage direct
Vous pouvez publier un raccourci dynamique en tant que cible de partage direct. Consultez Publier des cibles de partage direct.
ShortcutManagerCompat est une nouvelle API AndroidX qui assure la rétrocompatibilité avec l'ancienne API DirectShare. Il s'agit de la méthode recommandée pour publier des cibles de partage.
Prévisualiser du texte
Lorsqu'une application partage du contenu textuel, elle peut afficher un aperçu facultatif du contenu dans l'interface utilisateur de la feuille de partage.
Consultez Ajouter des aperçus de texte enrichi.
En savoir plus
Pour en savoir plus sur la façon dont les applications peuvent partager des données, consultez Envoyer des données simples vers d'autres applications et Recevoir des données simples depuis d'autres applications.
Thème sombre
Android 10 propose un thème sombre qui s'applique à la fois à l'interface utilisateur du système Android et aux applications exécutées sur l'appareil. Pour en savoir plus, consultez Thème sombre.
Types de services de premier plan
Android 10 introduit l'attribut de fichier manifeste XML foregroundServiceType, que vous incluez dans la définition de plusieurs services spécifiques. Il est possible, bien que rarement approprié, d'attribuer plusieurs types de services de premier plan à un service particulier.
Le tableau suivant présente les différents types de services de premier plan et les services pour lesquels il est approprié de déclarer un type spécifique :
| Type de service de premier plan | Exemple de cas d'utilisation d'un service devant déclarer ce type |
|---|---|
connectedDevice
| Surveiller un bracelet d'activité sport connecté |
dataSync
| Télécharger des fichiers depuis un réseau |
location
| Poursuivre une action initiée par l'utilisateur |
mediaPlayback
| Écouter un livre audio, un podcast ou de la musique |
mediaProjection
| Enregistrez une vidéo de l'écran de l'appareil sur une courte période. |
phoneCall
| Gérer l'appel téléphonique en cours |
Kotlin
Android 10 inclut les mises à jour suivantes pour le développement Kotlin.
Annotations de possibilité de valeur nulle pour les API libcore
Android 10 améliore la couverture des annotations de possibilité de valeur nulle dans le SDK pour les API libcore. Ces annotations permettent aux développeurs d'applications qui utilisent l'analyse de la possibilité de valeur nulle Kotlin ou Java dans Android Studio d'obtenir des informations sur la possibilité de valeur nulle lorsqu'ils interagissent avec ces API.
Normalement, les violations de contrat de possibilité de valeur nulle dans Kotlin entraînent des erreurs de compilation. Pour assurer la compatibilité avec votre code existant, seules les annotations @RecentlyNullable et @RecentlyNonNull sont ajoutées. Cela signifie que les cas de non-respect de la possibilité de valeur nulle entraînent des avertissements au lieu d'erreurs.
De plus, toutes les annotations @RecentlyNullable ou @RecentlyNonNull ajoutées dans Android 9 sont remplacées respectivement par @Nullable et @NonNull.
Cela signifie que, sous Android 10 et versions ultérieures, les violations de la possibilité de valeur nulle entraînent des erreurs au lieu d'avertissements.
Pour en savoir plus sur les modifications apportées aux annotations, consultez l'article Android Pie SDK is now more Kotlin-friendly (Le SDK Android Pie est désormais plus compatible avec Kotlin) sur le blog des développeurs Android.
NDK
Android 10 inclut les modifications suivantes du NDK.
Amélioration du débogage de la propriété des descripteurs de fichiers
Android 10 ajoute fdsan, qui vous aide à identifier et à résoudre plus facilement les problèmes de propriété des descripteurs de fichiers.
Les bugs liés à une mauvaise gestion de la propriété des descripteurs de fichiers, qui ont tendance à se manifester sous la forme d'utilisation après fermeture et de double fermeture, sont analogues aux bugs d'utilisation après libération et de double libération de l'allocation de mémoire, mais ils ont tendance à être beaucoup plus difficiles à diagnostiquer et à corriger. fdsan tente de détecter et/ou d'empêcher une mauvaise gestion des descripteurs de fichiers en appliquant la propriété des descripteurs de fichiers.
Pour en savoir plus sur les plantages liés à ces problèmes, consultez Erreur détectée par fdsan. Pour en savoir plus sur fdsan, consultez la page Googlesource sur fdsan.
ELF TLS
Les applications créées à l'aide du NDK avec un niveau d'API minimal de 29 peuvent utiliser ELF TLS au lieu de emutls. La compatibilité avec l'éditeur de liens dynamique et statique a été ajoutée pour prendre en charge cette méthode de gestion des variables locales de thread.
Pour les applications conçues pour le niveau d'API 28 et inférieur, des améliorations ont été apportées à libgcc/compiler-rt afin de contourner certains problèmes liés à emutls.
Pour en savoir plus, consultez Modifications d'Android pour les développeurs NDK.
Environnement d'exécution
Android 10 inclut la modification d'exécution suivante.
Déclenchement de la récupération de mémoire basé sur mallinfo
Lorsque de petits objets Java de la plate-forme font référence à des objets volumineux dans le tas de mémoire C++, les objets C++ ne peuvent souvent être récupérés que lorsque l'objet Java est collecté et, par exemple, finalisé. Dans les versions précédentes, la plate-forme estimait la taille de nombreux objets C++ associés à des objets Java. Cette estimation n'était pas toujours précise et entraînait parfois une augmentation considérable de l'utilisation de la mémoire, car la plate-forme ne parvenait pas à récupérer la mémoire lorsqu'elle aurait dû le faire.
Dans Android 10, le récupérateur de mémoire (GC) suit la taille totale du tas de mémoire alloué par le système malloc(), ce qui garantit que les allocations malloc() volumineuses sont toujours incluses dans les calculs de déclenchement du GC. Les applications qui entrelacent un grand nombre d'allocations C++ avec l'exécution Java peuvent voir la fréquence de récupération de mémoire augmenter. D'autres applications peuvent enregistrer une légère baisse.
Test et débogage
Android 10 inclut les améliorations suivantes pour les tests et le débogage.
Améliorations apportées au traçage système sur l'appareil
À partir d'Android 10, vous pouvez spécifier des limites pour la taille et la durée d'une trace lorsque vous effectuez une trace système sur l'appareil. Lorsque vous spécifiez l'une ou l'autre valeur, le système effectue un traçage long, en copiant régulièrement le tampon de trace dans le fichier de destination pendant l'enregistrement de la trace. La trace se termine lorsque les limites de taille ou de durée que vous avez spécifiées sont atteintes.
Utilisez ces paramètres supplémentaires pour tester des cas d'utilisation différents de ceux que vous testeriez avec une trace standard. Par exemple, vous pouvez diagnostiquer un bug de performances qui ne se produit qu'après une longue période d'exécution de votre application. Dans ce cas, vous pouvez enregistrer une trace longue sur une journée entière, puis analyser le planificateur de processeur, l'activité du disque, les threads d'application et d'autres données du rapport pour vous aider à déterminer la cause du bug.
Sous Android 10 et versions ultérieures, les fichiers de trace sont enregistrés dans un format qui peut être ouvert avec Perfetto, un projet Open Source d'instrumentation et de traçage des performances. Vous pouvez convertir les fichiers de trace Perfetto au format Systrace.
Améliorations de TextClassifier
Android 10 fournit des fonctionnalités de classification de texte supplémentaires dans l'interface TextClassifier.
Détection de la langue
La méthode detectLanguage() fonctionne de la même manière que les méthodes de classification existantes. Il reçoit un objet TextLanguage.Request et renvoie un objet TextLanguage.
Les objets TextLanguage sont constitués d'une liste de paires ordonnées. Chaque paire contient un paramètre régional et un score de confiance correspondant pour la classification.
Actions de conversation suggérées
La méthode suggestConversationActions() fonctionne de la même manière que les méthodes de classification existantes. Il reçoit un objet ConversationActions.Request et renvoie un objet ConversationActions.
Les objets ConversationActions sont constitués d'une liste d'objets ConversationAction. Chaque objet ConversationAction inclut une action suggérée potentielle et son score de confiance.
Réponses/Actions suggérées dans les notifications
Android 9 a introduit la possibilité d'afficher des réponses suggérées dans une notification. Android 10 va plus loin en permettant d'inclure des suggestions d'actions basées sur l'intent. De plus, la plate-forme est capable de générer ces suggestions automatiquement. Les applications peuvent toujours fournir leurs propres suggestions ou désactiver les suggestions générées par le système.L'API utilisée pour générer ces réponses fait partie de TextClassifier et a également été directement exposée aux développeurs dans Android 10.
Pour en savoir plus, consultez la section sur les améliorations apportées à TextClassifier.
Si votre application fournit ses propres suggestions, la plate-forme ne génère aucune suggestion automatique. Si vous ne souhaitez pas que les notifications de votre application affichent des réponses suggérées ou des actions, vous pouvez désactiver les réponses et actions générées par le système à l'aide de setAllowGeneratedReplies() et setAllowSystemGeneratedContextualActions().