Fonctionnalités et API d'Android 10

Android 10 offre d'excellentes fonctionnalités pour les utilisateurs et développeurs. Ce document présente les fonctionnalités à la disposition des 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 ajoutées au niveau d'API 29. Pensez également à vérifier le comportement d'Android 10 (pour les applications ciblant le niveau d'API 29 et pour toutes les applications), ainsi que les règles de confidentialité , pour identifier les domaines dans lesquels les changements de plate-forme peuvent sur vos applications.

Renforcement de la sécurité

Android 10 introduit un certain nombre de fonctionnalités de sécurité, 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 :

  • Vérification de la capacité d'authentification biométrique.
  • 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 sa saisie biométrique.
  • Indice indiquant au système de ne pas exiger de confirmation de l'utilisateur une fois celui-ci s'est authentifié à l'aide d'une modalité biométrique implicite. Par exemple, vous pouvez indiquer au système qu'aucune autre confirmation ne doit être requise une fois qu'un utilisateur s'est authentifié à l'aide de l'authentification faciale.

Exécuter le code DEX intégré directement à partir de l'APK

À partir d'Android 10, vous pouvez demander à la plate-forme d'exécuter des fichiers DEX intégrés. directement depuis le fichier APK de votre application. Cette option peut aider à prévenir une attaque si un attaquant parvient un jour à falsifier le code compilé localement sur le 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 Norme TLS qui offre des avantages en termes de performances et une sécurité renforcée. Notre les analyses comparatives indiquent que les connexions sécurisées peuvent être établies jusqu'à 40% plus rapide avec TLS 1.3 qu’avec TLS 1.2.

Pour plus d'informations sur notre mise en œuvre de TLS 1.3, consultez la section TLS dans les changements de comportement de toutes les applications .

API Public Conscrypt

À partir d'Android 10, le fournisseur de sécurité Conscrypt inclut un une API publique pour la fonctionnalité TLS.

L'ensemble des classes sous android.net.ssl contient des valeurs statiques pour accéder à des fonctionnalités qui ne sont pas disponibles javax.net.ssl. Les noms de ces classes peuvent être déduits au pluriel de la classe javax.net.ssl correspondante. Par exemple, le code qui fonctionne sur Les instances de javax.net.ssl.SSLSocket peuvent à la place utiliser des méthodes de SSLSockets

Fonctionnalités de connectivité

Android 10 inclut plusieurs améliorations liées à la mise en réseau et à la connectivité.

API de connexion réseau Wi-Fi

Android 10 prend désormais en charge les connexions peer-to-peer. Ce permet à votre application d'inviter l'utilisateur à modifier le point d'accès l'appareil auquel il est connecté à l'aide de WifiNetworkSpecifier pour décrire les propriétés d'un réseau demandé. La connexion peer-to-peer est utilisé à des fins autres que l'accès au réseau, comme la configuration d'amorçage pour des appareils secondaires comme Chromecast et le matériel Google Home.

Pour en savoir plus, reportez-vous à la section API Wi-Fi Network Request pour les connexions peer-to-peer. connectivité.

API Wi-Fi network Suggestion

Android 10 prend en charge votre application afin d'inviter l'utilisateur à se connecter. à un point d'accès Wi-Fi. Vous pouvez fournir des suggestions pour le réseau à connecter auxquelles vous souhaitez vous connecter. La plate-forme choisit le point d'accès à accepter en fonction les entrées provenant de vos applications et d'autres applications.

Pour en savoir plus sur cette fonctionnalité, consultez Suggestion Wi-Fi.

Améliorations apportées aux modes Wi-Fi hautes performances et à faible latence

Android 10 vous permet de fournir des indications sur le modem sous-jacent afin de réduire la latence.

Android 10 étend l'API Wi-Fi Lock pour assurer une compatibilité optimale avec les hautes performances et à faible latence. Le mode Économie d'énergie Wi-Fi est désactivé pour des performances élevées et mode à faible latence, et une optimisation de la latence supplémentaire peut être activée dans ce mode en fonction de la compatibilité du modem.

Le mode à faible latence n'est activé que lorsque l'application acquiert le verrou qui s'exécute 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 DNS de la plate-forme ne prend en charge que les enregistrements A et AAAA, ce qui permet de rechercher uniquement l'adresse IP des adresses associées à un nom, mais qui ne prenait en charge aucun autre type d'enregistrement. L'API DnsResolver fournit la résolution 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 homologue, en remplacement du protocole WPS, qui est obsolète. Les applications peuvent intégrer Easy Connect dans leur flux de configuration et de provisionnement en utilisant la ACTION_PROCESS_WIFI_EASY_CONNECT_URI l'intention.

Pour en savoir plus sur cette fonctionnalité, consultez Wi-Fi Easy Connect

API Wi-Fi Direct Connection

Les classes d'API WifiP2pConfig et WifiP2pManager ont été mises à jour dans Android 10 pour prendre en charge les fonctionnalités d'établissement rapide de connexion au Wi-Fi Direct à l'aide d'informations prédéterminées. Ces informations sont partagées via un canal secondaire, tel que comme le Bluetooth ou le NFC.

L'exemple de code suivant montre comment créer un groupe à l'aide de données informations:

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 de vos identifiants, remplacez manager.createGroup() par le suivantes:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Canaux orientés connexion Bluetooth LE (CoC)

Android 10 permet à votre appli d'utiliser des connexions CoC BLE pour transférer des données plus volumineuses entre deux appareils BLE. Cette interface ne fait pas abstraction du 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'appel et affichage du numéro de l'appelant

Android 10 permet à votre application d'identifier les appels non dans le carnet d'adresses de l'utilisateur en tant qu'appels indésirables potentiels, et recevoir des appels indésirables refusé sans notification au nom de l'utilisateur. Informations sur ces appels bloqués est consigné en tant qu'appel bloqué dans le journal d'appels afin d'offrir une plus grande transparence lorsqu'il manque des appels. Avec cette API, il n'est plus nécessaire pour obtenir de l'utilisateur l'autorisation READ_CALL_LOG afin d'effectuer un filtrage d'appel et l'affichage du numéro 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 La diffusion NEW_OUTGOING_CALL est obsolète et est remplacée par la API CallRedirectionService. L'API CallRedirectionService fournit permettant de modifier les appels sortants passés par la plate-forme Android. Pour Par exemple, les applications tierces peuvent annuler les appels et les rediriger via VoIP.

Amélioration de la création de fichiers sur le stockage externe

En plus d'introduire des objectifs stockage, Android 10 ajoute les fonctionnalités suivantes liées aux connexions externes stockage:

  • Vous pouvez utiliser le IS_PENDING l'indicateur pour attribuer à votre application un accès exclusif à un fichier multimédia tel qu’il est écrit sur le disque.
  • Si vous connaissez un emplacement spécifique où stocker les fichiers, vous pouvez fournir au système un indice où stocker les nouveaux fichiers écrits.
  • Chaque périphérique de stockage externe possède un volume unique nom.

Multimédia et images

Android 10 introduit les nouvelles fonctionnalités et API pour les contenus multimédias et graphiques:

Partage de l'entrée audio

Android 10 permet à deux applications de partager simultanément l'entrée audio. Pour en savoir plus, consultez Partager l'entrée audio.

Capture de la lecture audio

Android 10 permet à une application d'enregistrer la lecture audio d'autres applications. Pour en savoir plus, consultez Capture de lecture.

Barre de défilement dans les notifications MediaStyle

À partir d'Android 10, les notifications MediaStyle affichent une barre de recherche. La barre de recherche affiche la progression de la lecture PlaybackState.getPosition(), Dans certains cas, la barre de recherche peut être utilisée programme. L'apparence et le comportement de la barre de recherche sont contrôlés par les règles suivantes:

  • La barre de recherche apparaît s'il existe un MediaSession actif et sa durée (spécifiée par MediaMetadata.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 des diffusions en direct et des émissions radio.
  • Si la session implémente ACTION_SEEK_TO, l'utilisateur peut faire glisser la barre de recherche vers contrôler le contexte de lecture.

API MIDI native

L'API Android Native MIDI (AMidi) permet aux développeurs d'applications pour envoyer et recevoir des données MIDI avec du code C/C++, en intégrant plus étroitement leur logique audio/contrôle C/C++ et réduire le besoin de JNI.

Pour en savoir plus, consultez la page API MIDI native Android.

Améliorations apportées à MediaCodecInfo

Android 10 ajoute des méthodes pour MediaCodecInfo pour en savoir plus sur un codec.

Pour en savoir plus, consultez la section 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. Applis avec des graphismes complexes de calcul ou d'une activité réseau soutenue sont plus susceptibles de rencontrer des problèmes ceux-ci peuvent varier d’un appareil à l’autre en fonction du chipset et des fréquences centrales, de l'intégration, ainsi que de l'emballage et du facteur de forme de l'appareil.

Sous Android 10, les applications et les jeux peuvent utiliser une API thermique pour surveiller les modifications sur l'appareil et de prendre les mesures nécessaires pour maintenir une consommation d'énergie faible afin de rétablir température. Les applications enregistrent un écouteur. dans PowerManager, via lequel le système signale un état thermique continu, allant de léger à 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 s'éloignant activités en cours afin de 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 caméra peut désactiver le flash ou l'amélioration intensive des images, un jeu pourrait réduire la fréquence d'images ou la génération de polygones, une application multimédia peut réduire le volume des haut-parleurs, et une application de cartographie pourrait désactiver le GPS.

L'API thermique nécessite une nouvelle couche HAL d'appareil. Elle est actuellement compatible sur les appareils Pixel fonctionnant sous Android 10 et nous travaillons pour apporter un vaste soutien à 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 l'appareil photo monochrome

Android 9 (niveau d'API 28) a d'abord introduit la fonctionnalité d'appareil photo monochrome. Android 10 apporte plusieurs améliorations à la prise en charge des appareils photo 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 d'énumérations CFA MONO et NIR pour distinguer les caméras monochromes standards des caméras infrarouges proches.

Vous pouvez utiliser cette fonctionnalité pour capturer une image monochrome native. Une logique un appareil multi-caméra peut utiliser une caméra monochrome comme sous-caméra améliorer la qualité d'image par faible luminosité.

Format de profondeur dynamique

À partir d'Android 10, les appareils photo peuvent stocker les données de profondeur d'une image dans un à l'aide d'un nouveau schéma appelé format DDF (Dynamic Depth Format). Les applications peuvent demander à la fois l'image JPG et ses métadonnées de profondeur, en utilisant ces informations pour appliquer le floutage souhaité lors du post-traitement sans modifier l'original ; données d'image.

Pour lire les spécifications de ce format, consultez Format de profondeur dynamique :

Format de fichier image à hautes performances

Le format HEIF (High Efficiency Image File) est un format d'image et de vidéo standard. qui introduit un encodage de meilleure qualité et une taille de fichier plus petite d'autres formats de fichiers.

Pour en savoir plus sur le format de fichier, consultez HEIC :

Améliorations apportées à la multicaméra

Android 10 améliore la fusion de plusieurs appareils photo 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 :

API des services d'accessibilité

Android 10 introduit le nouveau service d'accessibilité suivant fonctionnalités et API:

Option de clé 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 clavier numérique.

Commentaires audio de la boîte de dialogue d'accessibilité

Si les utilisateurs ont besoin d'utiliser le raccourci d'accessibilité pour démarrer une service d'accessibilité, Android 10 permet à la boîte de dialogue et 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é Navigation par gestes est activée sous Android 10, l'accessibilité bouton n'est pas visibles ou sélectionnables. Pour accéder au menu des services d'accessibilité, les utilisateurs doivent effectuez l'un des gestes suivants:

  • Balayez l'écran vers le haut avec deux doigts.
  • Balayez l'écran vers le haut avec deux doigts et appuyez de manière prolongée.

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 de la manette de clavier virtuel

Dans Android 10, les services d'accessibilité peuvent demander que le logiciel clavier s'affiche même si l'appareil détecte qu'un clavier physique est connecté. Les utilisateurs peuvent ignorer ce comportement.

Délais d'expiration définis par l'utilisateur pour l'accessibilité

Android 10 introduit l'API getRecommendedTimeoutMillis(). Cette méthode prend en charge les délais d'inactivité définis par l'utilisateur pour les interactions d'éléments d'interface utilisateur non interactifs. La valeur renvoyée dépend à la fois de l'utilisateur préférences et API des services d'accessibilité.

Améliorations apportées à la saisie automatique

Android 10 contient les améliorations suivantes apportées au service de saisie automatique.

Requêtes de saisie automatique liées à la compatibilité

Vous pouvez utiliser FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST pour déterminer si une requête de saisie automatique a été générée via la compatibilité .

Enregistrer le nom d'utilisateur et le mot de passe simultanément

Vous pouvez répondre aux demandes d'assistance lorsqu'une application utilise plusieurs activités pour affichez le nom d'utilisateur, le mot de passe et d'autres champs à l'aide des SaveInfo.FLAG_DELAY_SAVE .

Interaction de l'utilisateur avec l'interface d'enregistrement

Vous pouvez afficher et masquer un champ de mot de passe dans une boîte de dialogue d'enregistrement en définissant une action écouteur sur la boîte de dialogue et modifier la visibilité du mot de passe correspondant l'affichage à distance.

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à a stocké un mot de passe et en enregistre un nouveau, la saisie automatique invite l'utilisateur mettre à jour le mot de passe existant au lieu d’en enregistrer un nouveau.

Améliorations de la classification des champs

Android 10 contient les améliorations suivantes apportées à l'API Field Classification.

Constructeur UserData.Builder

Le constructeur UserData.Builder a été modifié pour mieux s'adapter au modèle Builder.

Autoriser le mappage d'une valeur avec plusieurs types d'ID de catégorie

Lorsque vous utilisez UserData.Builder po Sur Android 10, vous pouvez désormais associer une valeur à plusieurs types d'ID de catégorie. Dans dans les versions précédentes, une exception était levée si une valeur était ajoutée plusieurs fois.

Meilleure compatibilité avec les numéros de carte de crédit

La classification des champs peut désormais détecter les nombres à quatre chiffres en tant que quatre derniers chiffres d'un numéro de carte de crédit.

Prise en charge de la classification des champs spécifiques à l'application

Ajouts d'Android 10 FillResponse.setUserData(), qui vous permet de définir des données utilisateur spécifiques à l'application pour la durée de la session. Cela permet au service de saisie automatique de détecter les types de champs avec des valeurs contenus.

UI et commandes système

Android 10 apporte les améliorations suivantes au niveau de l'interface utilisateur:

Prise en charge des limites JVMTI PopFrame

Android 10 est désormais compatible avec 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 une pause au niveau d'un point d'arrêt et en ajustant locaux, globaux ou l'implémentation d'une fonction. Pour en savoir plus, consultez Page de référence Pop Frame d'Oracle.

API Surface Control

Android 10 offre API SurfaceControl un accès de bas niveau au compositeur système (SurfaceFlinger). Pour pour la plupart des utilisateurs, SurfaceView est la solution idéale pour exploiter le compositeur. La L'API SurfaceControl peut être utile dans certains cas, par exemple:

  • Synchronisation de plusieurs surfaces
  • Représentation vectorielle continue de surfaces multiprocessus
  • Gestion du cycle de vie de niveau inférieur

L'API SurfaceControl est disponible à la fois dans les liaisons SDK et NDK. L'implémentation du NDK comprend une API permettant l'échange manuel des tampons avec le compositeur. Cela offre une alternative aux utilisateurs qui se sont heurtés aux limites de BufferQueue.

Détection du moteur de rendu WebView avec affinement

Android 10 introduit WebViewRenderProcessClient que les applications peuvent utiliser pour détecter WebView ne répond plus. À utilisez cette classe:

  1. Définissez votre propre sous-classe et implémentez sa fonction onRenderProcessResponsive() et onRenderProcessUnresponsive() méthodes.
  2. Associez une instance de votre WebViewRenderProcessClient à un ou plusieurs Objets WebView.
  3. Si le WebView ne répond plus, le système appelle la méthode onRenderProcessUnresponsive() du client, en transmettant les WebView et WebViewRenderProcess. (Si la WebView est à un seul processus, WebViewRenderProcess est nul.) Votre application peut prendre les mesures appropriées, par exemple afficher un à l'utilisateur pour lui demander s'il souhaite interrompre le processus d'affichage.

Si WebView ne répond toujours pas, le système appelle onRenderProcessUnresponsive(). régulièrement (pas plus d'une fois toutes les cinq secondes), mais n'effectue aucune autre action. Si WebView devient responsif Là encore, le système n'appelle onRenderProcessResponsive() qu'une seule fois.

Panneaux de paramètres

Android 10 introduit les Settings Panels, une API qui permet aux applications d'afficher aux utilisateurs dans le contexte de leur application. Ainsi, les utilisateurs n'ont pas besoin pour accéder aux Paramètres et modifier des paramètres comme NFC ou Données mobiles dans pour utiliser l'application.

Figure 1. L'utilisateur tente d'ouvrir une page Web alors que l'appareil n'est pas connecté au réseau. Chrome affiche la page Connectivité Internet panneau des paramètres...

Figure 2. L'utilisateur peut activer le Wi-Fi et sélectionner un réseau sans quitter l'application Chrome.

Par exemple, supposons qu'un utilisateur ouvre un navigateur Web alors que son appareil se trouve dans mode Avion. Avant Android 10, l'appli 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é montrant les principaux paramètres de connectivité. comme le mode Avion, le Wi-Fi (y compris les réseaux à proximité) et les données mobiles. Avec 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'un des éléments suivants Actions Settings.Panel:

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:

ACTION_INTERNET_CONNECTIVITY
Affiche les paramètres liés à la connectivité Internet, comme 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é. C'est utile pour les applications qui ont besoin d'une connexion Wi-Fi pour effectuer des importations volumineuses ou en temps réel.
ACTION_NFC
Affiche tous les paramètres liés à la communication en champ proche (NFC).
ACTION_VOLUME
Affiche les paramètres de volume pour tous les flux audio.

Amélioration du partage

Android 10 apporte un certain nombre d'améliorations concernant le partage:

API Raccourcis de partage

L'API Share Shortcuts remplace la fonctionnalité Partage direct API.

Au lieu de récupérer les résultats de façon réactive à la demande, l'API Share Shortcuts permet aux applications de publier à l'avance les cibles de partage direct. Voici comment ShortcutManager fonctionne. Étant donné que les deux API sont similaires, nous avons développé ShortcutInfo Google Cloud pour utiliser à la fois de Google Cloud. L'API Share 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 ne soit désinstallée.

L'ancien mécanisme de partage direct fonctionne toujours, mais les applications qui l'utilisent ont une par rapport aux applications 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 les cibles de partage direct.

ShortcutManagerCompat est une nouvelle API AndroidX qui offre une rétrocompatibilité avec l'ancienne API DirectShare. Ce est le moyen privilégié pour publier les cibles de partage.

Aperçu du texte

Lorsqu'une application partage du contenu textuel, elle peut afficher un aperçu facultatif de le contenu de l'interface utilisateur de Sharesheet.

Consultez la section 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 la section Envoyer des données simples à 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'UI du système et les applications s'exécutant sur l'appareil. Pour obtenir des informations complètes, consultez la section Thème sombre.

Types de services de premier plan

Android 10 introduit foregroundServiceType de l'attribut manifeste XML, que vous incluez dans la définition de plusieurs services. Il est possible, bien que rarement approprié, d'attribuer plusieurs 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 pour un service devant déclarer ce type
connectedDevice Surveiller un bracelet pour la forme au quotidien
dataSync Télécharger des fichiers à partir d'un réseau
location Continuer une action déclenchée par l'utilisateur
mediaPlayback Lire un livre audio, un podcast ou de la musique
mediaProjection Enregistrer 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 Analyse de la possibilité de valeur nulle en Kotlin ou Java dans Android Studio pour obtenir la valeur nulle lors de l'interaction avec ces API.

En règle générale, les cas de non-respect du contrat de possibilité de valeur nulle en Kotlin entraînent des erreurs de compilation. Pour assurer la compatibilité avec votre code existant, seul le Les annotations @RecentlyNullable et @RecentlyNonNull sont ajoutées. Cela signifie que les violations de possibilité de valeur nulle entraînent des avertissements au lieu d'erreurs.

De plus, les éventuelles annotations @RecentlyNullable ou @RecentlyNonNull qui ont été ajoutés dans Android 9 sont remplacés respectivement par @Nullable et @NonNull. Cela signifie que, sur Android 10 ou version ultérieure, les cas de non-respect de la possibilité de valeur nulle entraîner des erreurs au lieu d'avertissements.

Pour en savoir plus sur les modifications d'annotation, consultez 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 fichier

Android 10 ajoute fdsan, qui vous aide à trouver et à corriger la propriété du descripteur de fichier des problèmes plus facilement.

Bugs liés à une mauvaise gestion de la propriété du descripteur de fichier, qui ont tendance à se manifester use-after-close et double-close, sont analogues à l'allocation de mémoire use-after-free et double-free, mais sont généralement beaucoup plus difficiles à corriger pour les diagnostiquer et les corriger. fdsan tente de détecter et/ou d'empêcher le descripteur de fichier une mauvaise gestion en appliquant la propriété du descripteur de fichier.

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 Page Googlesource sur fdsan.

TLS ELF

Les applications créées à l'aide du NDK avec un niveau d'API minimal 29 peuvent utiliser ELF TLS au lieu de emutls. La prise en charge du linker dynamique et statique a été ajoutée pour prendre en charge cette méthode de gestion des variables locales de thread.

Pour les applications compilées pour le niveau d'API 28 ou inférieur, des améliorations ont été apportées à libgcc/compiler-rt pour contourner certains problèmes emutls.

Pour en savoir plus, consultez les modifications apportées à Android pour les développeurs du NDK.

Runtime

Android 10 inclut la modification d'environnement d'exécution suivante.

Déclenchement de la récupération de mémoire basée sur Mallinfo

Lorsque de petits objets Java de 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é. par exemple finalisées. Dans les versions précédentes, la plate-forme estimait les tailles de nombreux objets C++ associés à des objets Java. Cette estimation n’a pas toujours été exacte et entraînait parfois une augmentation considérable de l'utilisation de la mémoire, car le n'a pas réussi à récupérer la mémoire alors qu'elle aurait dû.

Dans Android 10, le récupérateur de mémoire suit la taille totale du tas de mémoire alloué par le système malloc(), ce qui garantit que les malloc() volumineuses sont toujours incluses dans les calculs du déclenchement de la récupération de mémoire. Entrelacement d'applications un grand nombre d'allocations C++ avec exécution Java peut constater une augmentation de récupération de mémoire. D'autres applications peuvent constater une légère baisse.

Tester et déboguer

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 d'une trace lorsque vous effectuez une trace système sur l'appareil. Lorsque vous spécifiez l'une ou l'autre des valeurs, le système exécute une longue trace en copiant régulièrement la 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 différents cas d'utilisation avec une trace standard. Par exemple, vous diagnostiquez peut-être un bug de performances qui ne se produit qu'après l'exécution de votre application pendant une longue période. Dans dans ce cas, vous pouvez enregistrer une longue trace sur une journée entière, puis analyser le programmeur 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 ou version ultérieure, les fichiers de suivi sont enregistrés dans un format qui peut être ouvert avec Perfetto, un Open Source pour l'instrumentation et le traçage des performances. Vous pouvez convertir les fichiers de suivi Perfetto en fichiers de sortie.

Améliorations apportées à TextClassifier

Android 10 offre des fonctionnalités de classification de texte supplémentaires dans l'interface TextClassifier.

Détection de la langue

La detectLanguage() fonctionne de la même manière que les méthodes de classification existantes. Il reçoit une TextLanguage.Request et renvoie un TextLanguage .

Les objets TextLanguage sont constitués d'une liste de paires ordonnées. Chaque paire contient des paramètres régionaux et le score de confiance correspondant à la classification.

Actions de conversation suggérées

La suggestConversationActions() fonctionne de la même manière que les méthodes de classification existantes. Il reçoit une ConversationActions.Request et renvoie un ConversationActions .

ConversationActions les objets sont constitués d'une liste ConversationAction d'objets. Chaque objet ConversationAction inclut un champ l'action suggérée et son score de confiance.

Réponses/actions suggérées dans les notifications

Android 9 permet d'afficher les réponses suggérées dans un . Android 10 développe cette fonctionnalité en permettant incluent des suggestions d'actions basées sur l'intention. De plus, la plate-forme peut générer automatiquement ces suggestions. Les applications peuvent toujours fournir ou désactiver celles générées par le système.

L'API utilisée pour générer ces réponses fait partie TextClassifier, et a également été directement exposé aux développeurs d'Android 10. Veuillez lire la section sur les améliorations de TextClassifier. pour en savoir plus.

Si votre application fournit ses propres suggestions, la plate-forme n'en génère aucune des suggestions automatiques. Si vous ne souhaitez pas que les notifications de votre application s'affichent les réponses ou actions suggérées, vous pouvez désactiver les réponses générées par le système et des actions en utilisant setAllowGeneratedReplies() et setAllowSystemGeneratedContextualActions()