Android 9 (niveau d'API 28) offre de nouvelles fonctionnalités intéressantes pour utilisateurs et développeurs. Ce document présente les nouveautés pour les développeurs.
Pour en savoir plus sur les nouvelles API, consultez le rapport de différences de l'API ou consultez le Documentation de référence de l'API Android Pensez également à consulter Changements de comportement d'Android 9 pour en savoir plus sur les domaines où les changements de plate-forme peuvent affecter vos applications.
Positionnement intérieur avec texte en temps réel Wi-Fi
![De nouvelles API de texte en temps réel prennent en charge le positionnement en intérieur dans vos applications.](https://developer.android.google.cn/static/images/about/versions/pie/rtt-nav.png?authuser=19&hl=fr)
Android 9 est désormais compatible avec la plate-forme pour le Wi-Fi IEEE 802.11-2016 ou Wi-Fi Round-Trip-Time (RTT), pour vous permettre du positionnement à l'intérieur de vos applications.
Sur les appareils équipés d'Android 9 avec prise en charge matérielle, vos applications peuvent utiliser le
les API DAR pour mesurer
la distance des points d'accès (PA) Wi-Fi compatibles avec le texte en temps réel à proximité ; L'appareil doit avoir
services de localisation et recherche Wi-Fi activés (sous
Paramètres > des données de localisation) et que votre application
ACCESS_FINE_LOCATION
l'autorisation. L'appareil n'a pas besoin de se connecter aux points d'accès pour utiliser le texte en temps réel.
Pour des raisons de confidentialité, seul le téléphone peut déterminer la distance jusqu'à
point d'accès les points d'accès ne
disposent pas de ces informations.
Si votre appareil mesure la distance à trois points d'accès ou plus, vous pouvez utiliser un l'algorithme de multilatération pour estimer la position de l'appareil la mieux adaptée des mesures. En règle générale, le résultat est précis dans un rayon d'un à deux mètres.
Avec cette précision, vous pouvez créer de nouvelles expériences, comme la navigation dans le bâtiment et des services basés sur la localisation ultraprécis, comme le contrôle vocal clarifié (par exemple, "Allume cette lumière") et des informations basées sur votre position (comme "Existe-t-il des offres spéciales pour ce produit ?").
Pour savoir quelle API de DAR Wi-Fi est utilisée, consultez les <ph type="x-smartling-placeholder"></ph> Application de démonstration Android WifiRttScan
Pour en savoir plus, consultez Localisation Wi-Fi: avec la latence DAR.
Compatibilité avec l'encoche
![Écran des options pour les développeurs montrant différentes tailles d'encoche](https://developer.android.google.cn/static/images/about/versions/pie/emulator-devoptions-cutout_2x.png?authuser=19&hl=fr)
Tester l'encoche à l'aide de l'émulateur
Android 9 est compatible avec les derniers écrans bord à bord
qui contiennent des encoches pour
écrans pour caméras et haut-parleurs. La
DisplayCutout
permet de déterminer l'emplacement et la forme des zones non fonctionnelles
le contenu ne doit pas s'afficher. Pour déterminer l'existence et le placement
ces zones d'encoche, utilisez la
getDisplayCutout()
.
Un nouvel attribut de mise en page de fenêtre :
layoutInDisplayCutoutMode
,
permet à votre application d'organiser son contenu autour des encoches d'un appareil. Vous pouvez définir
cet attribut à l'une des valeurs suivantes:
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
Vous pouvez simuler une découpe d'écran sur n'importe quel appareil ou émulateur sous Android 9. comme suit:
- Activez les options pour les développeurs.
- Faites défiler l'écran Developer options (Options pour les développeurs) vers le bas jusqu'à la section Drawing (Dessin). puis sélectionnez Simuler un écran avec une encoche.
- Sélectionnez la taille de l'encoche.
Notifications
Android 9 propose plusieurs améliorations des notifications, qui sont toutes disponibles pour les développeurs ciblant le niveau d'API 28 ou supérieur.
![Notifications de messagerie](https://developer.android.google.cn/static/images/about/versions/pie/p-messaging.jpg?authuser=19&hl=fr)
MessagingStyle avec une photo en pièce jointe.
![Notification de messagerie](https://developer.android.google.cn/static/images/about/versions/pie/p-replies.jpg?authuser=19&hl=fr)
MessagingStyle avec réponses et conversation.
Pour obtenir un exemple de code qui utilise des notifications, y compris les fonctionnalités d'Android 9, consultez le Personnes Exemple.
Expérience de messagerie améliorée
À partir d'Android 7.0 (niveau d'API 24), vous pouvez ajouter une action pour répondre à ou saisir du texte directement depuis une notification. Amélioration d'Android 9 cette fonctionnalité, avec les améliorations suivantes:
Assistance simplifiée pour les participants aux conversations :
Person
classe permet d'identifier les personnes impliquées dans une conversation, y compris leur des avatars et des URI. De nombreuses autres API, telles queaddMessage()
, Utilisez désormais la classePerson
au lieu d'uneCharSequence
. La classePerson
est également compatible avec le modèle de conception Builder.Prise en charge des images: Android 9 affiche désormais les images dans les notifications SMS/MMS. sur les téléphones. Vous pouvez utiliser
setData()
sur le message pour afficher une image. L'extrait de code suivant montre comment pour créer unPerson
et un message contenant une image.
Kotlin
// Create new Person. val sender = Person() .setName(name) .setUri(uri) .setIcon(null) .build() // Create image message. val message = Message("Picture", time, sender) .setData("image/", imageUri) val style = Notification.MessagingStyle(getUser()) .addMessage("Check this out!", 0, sender) .addMessage(message)
Java
// Create new Person. Person sender = new Person() .setName(name) .setUri(uri) .setIcon(null) .build(); // Create image message. Message message = new Message("Picture", time, sender) .setData("image/", imageUri); Notification.MessagingStyle style = new Notification.MessagingStyle(getUser()) .addMessage("Check this out!", 0, sender) .addMessage(message);
Enregistrer les réponses en tant que brouillons: votre application peut récupérer les
EXTRA_REMOTE_INPUT_DRAFT
envoyé par le système lorsqu'un utilisateur ferme par inadvertance une notification de messagerie. Vous pouvez utiliser cet extra pour préremplir les champs de texte dans l'application afin que les utilisateurs terminer sa réponse.Pour déterminer si une conversation est une conversation de groupe: vous pouvez utiliser
setGroupConversation()
pour identifier délibérément une conversation en tant que conversation de groupe ou non.Définissez l'action sémantique d'un intent :
setSemanticAction()
vous permet d'attribuer une signification sémantique à une action, comme « marquer comme lu », « supprimer », « répondre », et ainsi de suite.SmartResponse: Android 9 prend en charge les mêmes suggestions de réponses que celles disponibles dans votre application de chat. Utilisez
RemoteInput.setChoices()
pour fournir à l'utilisateur un tableau de réponses standards.
Paramètres de la chaîne, diffusions et Ne pas déranger
Les canaux de notification ont été introduits dans Android 8.0. ce qui vous permet de créer et personnalisable pour chaque type de notification que vous souhaitez afficher. Android 9 simplifie les paramètres des canaux de notification grâce aux modifications suivantes:
Blocage de groupes de chaînes: les utilisateurs peuvent désormais bloquer des groupes de chaînes entiers dans les paramètres de notification d'une application. Vous pouvez utiliser
isBlocked()
permettant d'identifier quand un groupe est bloqué et, par conséquent, de n'envoyer des notifications pour les chaînes de ce groupe.De plus, votre application peut interroger les paramètres actuels du groupe de canaux à l'aide de le nouveau
getNotificationChannelGroup()
.Nouveaux types d'intents de diffusion: le système Android envoie désormais des intents de diffusion lorsque l'état de blocage des canaux de notification et des groupes de canaux change. L'application propriétaire du canal ou du groupe bloqué peut écouter ces intents et et réagissent en conséquence. Pour en savoir plus sur ces extras et actions d'intent, reportez-vous à la liste des constantes mise à jour
NotificationManager
référence. Pour en savoir plus sur les réactions aux intents de diffusion, consultez Diffusions :NotificationManager.Policy
comporte trois nouvelles catégories de priorité "Ne pas déranger" :PRIORITY_CATEGORY_ALARMS
donne la priorité aux alarmes.PRIORITY_CATEGORY_MEDIA
donne la priorité aux sons provenant de sources multimédias, comme les contenus multimédias et la navigation vocale.PRIORITY_CATEGORY_SYSTEM
donne la priorité aux sons du système.
NotificationManager.Policy
dispose également de sept nouvelles constantes "Ne pas déranger" pour supprimer les interruptions visuelles:SUPPRESSED_EFFECT_FULL_SCREEN_INTENT
empêche la notification de lancer l'activité en plein écran.SUPPRESSED_EFFECT_LIGHTS
bloque les voyants de notification.SUPPRESSED_EFFECT_PEEK
empêche les notifications de s'afficher brièvement ("aperçu").SUPPRESSED_EFFECT_STATUS_BAR
empêche l'affichage des notifications dans la barre d'état des appareils compatibles.SUPPRESSED_EFFECT_BADGE
bloque les badges sur les appareils compatibles avec les badges. Pour en savoir plus, consultez Modifier un badge de notificationSUPPRESSED_EFFECT_AMBIENT
bloque les notifications sur les appareils compatibles avec l'affichage en mode Veille.SUPPRESSED_EFFECT_NOTIFICATION_LIST
empêche les notifications de s'afficher sous forme de liste sur les appareils compatibles, tels que le volet des notifications ou l'écran de verrouillage.
Compatibilité multi-caméra et mises à jour de la caméra
Sur les appareils équipés d'Android 9, vous pouvez accéder aux flux simultanément depuis deux ou plusieurs caméras. Sur les appareils équipés d'une caméra frontale ou d'une caméra double arrière, vous pouvez créer des fonctionnalités innovantes ne suffit pas avec une seule caméra, comme la fluidité Zoom, bokeh et vision stéréo. L'API vous permet également d'appeler un opérateur logique flux vidéo qui alterne automatiquement entre deux caméras ou plus.
D'autres améliorations ont été apportées à l'appareil photo : les sessions paramètres qui aident à réduire les délais lors de la capture initiale, et le partage de surface qui permet gèrent différents cas d'utilisation sans devoir s'arrêter et démarrer le flux de la caméra. Nous avons également ajouté des API pour les activités Flash assistance et l'accès à l'OIS codes temporels pour la stabilisation de l'image et les effets spéciaux au niveau de l'application.
Sous Android 9, la fonctionnalité multi-appareil photo
API
est compatible avec les appareils photo monochromes pour les appareils
FULL
ou
LIMITED
.
La sortie monochrome est obtenue via la
YUV_420_888
le format avec Y pour les nuances de gris, U (Cb) pour 128 et V (Cr) pour 128.
Android 9 est également compatible avec les ports USB/UVC externes. caméras activées appareils compatibles.
ImageDecoder pour les drawables et les bitmaps
Android 9 introduit le
ImageDecoder
, qui offre une approche modernisée du décodage des images. Utiliser ce cours
au lieu de BitmapFactory
et BitmapFactory.Options
API.
ImageDecoder
vous permet de créer un
Drawable
ou un
Bitmap
à partir d'un tampon d'octets, d'un fichier
ou un URI. Pour décoder une image, vous devez d'abord
createSource()
avec la source de l'image encodée. Appelez ensuite
decodeDrawable()
ou decodeBitmap()
en transmettant ImageDecoder.Source
pour créer un objet Drawable
ou Bitmap
. Pour modifier le paramètre
paramètres par défaut, transmettez OnHeaderDecodedListener
à
decodeDrawable()
ou decodeBitmap()
. ImageDecoder
appels
onHeaderDecoded()
avec la largeur et la hauteur par défaut de l'image, une fois qu'elles sont connues.
Si l'image encodée est un GIF animé ou un WebP, decodeDrawable()
renvoie une
Drawable
, qui est une instance de
AnimatedImageDrawable
.
Il existe différentes méthodes pour définir les propriétés de l'image:
- Pour obtenir une taille exacte de l'image décodée, transmettez les dimensions cibles dans
setTargetSize()
Vous pouvez également mettre à l'échelle les images en utilisant une taille d'échantillon. Transmettez la taille d'échantillon directement àsetTargetSampleSize()
- Pour recadrer une image dans la plage de l'image mise à l'échelle, appelez
setCrop()
- Pour créer un bitmap modifiable, transmettez
true
àsetMutableRequired()
ImageDecoder
vous permet également d'ajouter des effets personnalisés et complexes à une image.
comme les coins arrondis ou
des masques circulaires. Utilisez
setPostProcessor()
avec une instance
PostProcessor
pour exécuter les commandes de dessin de votre choix.
Animation
Android 9 introduit le
AnimatedImageDrawable
permettant de dessiner et d'afficher des images animées GIF et WebP.
AnimatedImageDrawable
fonctionne de façon semblable à
AnimatedVectorDrawable
en ce sens que le thread de rendu pilote les animations de AnimatedImageDrawable
.
Le thread de rendu utilise également un thread de travail pour le décodage, de sorte que le décodage n'est pas
interférer avec d'autres opérations sur le thread de rendu. Cette implémentation permet
votre application pour afficher une image animée sans gérer ses mises à jour ou
interférer avec d'autres événements du thread UI de votre application.
Un AnimatedImageDrawable
peut être décodé à l'aide d'une instance de
ImageDecoder
Les éléments suivants :
l'extrait de code montre comment utiliser ImageDecoder
pour décoder vos
AnimatedImageDrawable
:
Kotlin
@Throws(IOException::class) private fun decodeImage() { val decodedAnimation = ImageDecoder.decodeDrawable( ImageDecoder.createSource(resources, R.drawable.my_drawable)) // Prior to start(), the first frame is displayed. (decodedAnimation as? AnimatedImageDrawable)?.start() }
Java
private void decodeImage() throws IOException { Drawable decodedAnimation = ImageDecoder.decodeDrawable( ImageDecoder.createSource(getResources(), R.drawable.my_drawable)); if (decodedAnimation instanceof AnimatedImageDrawable) { // Prior to start(), the first frame is displayed. ((AnimatedImageDrawable) decodedAnimation).start(); } }
ImageDecoder
propose plusieurs méthodes pour modifier l'image.
Par exemple, vous pouvez utiliser la méthode
setPostProcessor()
pour modifier l'apparence de l'image, par exemple en appliquant un masque circulaire ou
et des angles arrondis.
Vidéo HDR VP9, compression d'image HEIF et API multimédias
Android 9 est compatible avec le VP9 Profile 2 High Dynamic Range (HDR) afin de proposer à vos utilisateurs des films compatibles HDR depuis YouTube, Play Films et d'autres sources sur des appareils compatibles HDR.
Android 9 prend également en charge l'encodage des images à l'aide de l'image haute efficacité.
Format de fichier (HEIF)
ou HEIC), ce qui améliore la compression et réduit l'espace de stockage et les données réseau
sur l'utilisation de l'IA générative. Les échantillons d'images fixes HEIF sont acceptés dans la
MediaMuxer
et MediaExtractor
classes. Grâce à la prise en charge de la plate-forme sur les appareils Android 9, il est facile d'envoyer et
des images HEIF de votre serveur backend. Après vous être assuré que votre
L'appli est compatible avec ce format de données pour le partage et l'affichage, essayez HEIF
comme format de stockage d'images dans votre application. Vous pouvez effectuer une conversion jpeg vers heic.
à l'aide de ImageDecoder
ou
BitmapFactory
(qui obtient
bitmap à partir d'un fichier JPEG). Vous pouvez ensuite utiliser
HeifWriter
pour écrire des valeurs HEIF
des images fixes de tampons d'octets YUV ou des instances
Surface
ou
Bitmap
Les métriques sur les médias sont également disponibles dans les
AudioTrack
,
AudioRecord
,
et MediaDrm
.
Android 9 introduit des méthodes pour
La classe MediaDRM
pour obtenir des métriques, HDCP
les niveaux de sécurité et le nombre de sessions, et pour mieux contrôler
des niveaux de sécurité et des arrêts sécurisés. Consultez la section Différences entre les API
rapport pour en savoir plus.
Sous Android 9, l'API AAudio ajoute
Compatibilité avec plusieurs attributs AAudioStream supplémentaires, y compris l'utilisation, le contenu
le type et le préréglage d'entrée. Ces attributs vous permettent de créer des flux
pour les applications VoIP
ou caméscope. Vous pouvez également définir l'ID de session sur
associer un flux AAudio à un sous-mix pouvant inclure des effets. Utilisez les
l'API AudioEffect
pour contrôler
les effets.
Android 9 introduit le
API AudioEffect
pour
traitement dynamique.
Dans ce cours, vous pouvez créer des effets audio basés sur les chaînes,
l'égalisation, la compression multibande et le limiteur, sur plusieurs étapes. La
le nombre de bandes et d'étapes actives est configurable, et la plupart des paramètres peuvent être
en temps réel.
Sensibilité des coûts liés aux données dans JobScheduler
À partir d'Android 9, JobScheduler
peuvent utiliser les signaux d'état du réseau fournis par les opérateurs pour améliorer la gestion
des emplois liés aux réseaux.
Les jobs peuvent déclarer la taille estimée de leurs données, signaler le préchargement et spécifier
configuration réseau requise. JobScheduler
gère ensuite le travail en fonction
l'état du réseau. Par exemple, lorsque le réseau signale
qu'il est encombré,
JobScheduler
peut différer les requêtes réseau volumineuses. Sur un
réseau illimité, JobScheduler
peut exécuter des jobs de préchargement
améliorer l'expérience utilisateur, par exemple en préchargeant les titres ;
Lorsque vous ajoutez des tâches, veillez à utiliser setEstimatedNetworkBytes()
.
setPrefetch()
,
et setRequiredNetwork()
le cas échéant, afin de
JobScheduler
gèrent le travail correctement. Lorsque votre job s'exécute,
veillez à utiliser l'objet Network
renvoyé par
JobParameters.getNetwork()
Sinon, vous utiliserez implicitement
le réseau par défaut de l'appareil, ce qui
risque de ne pas répondre à vos exigences, ce qui entraîne une utilisation inattendue des données.
API Neural Networks 1.1
Introduction de l'API Neural Networks d'Android 8.1 (niveau d'API 27) pour accélérer le machine learning sur l'appareil Android Android 9 développe et améliore l'API, en ajoutant neuf nouvelles opérations:
- Opérations mathématiques au niveau des éléments: <ph type="x-smartling-placeholder">
- Opérations de tableau: <ph type="x-smartling-placeholder">
Problème connu:lors de la transmission
ANEURALNETWORKS_TENSOR_QUANT8_ASYMM
aux Tensors vers
ANEURALNETWORKS_PAD
(disponible sur Android 9 ou version ultérieure).
il est possible que le résultat de NNAPI ne corresponde pas à celui d'une machine de niveau supérieur
les cadres d'apprentissage, tels que
TensorFlow Lite : Toi
doit être transmis uniquement
<ph type="x-smartling-placeholder"></ph>
ANEURALNETWORKS_TENSOR_FLOAT32
jusqu'à ce que le problème soit résolu.
De plus, l'API introduit également une nouvelle fonction :
ANeuralNetworksModel_relaxComputationFloat32toFloat16()
,
qui vous permet de spécifier s'il faut calculer
ANEURALNETWORKS_TENSOR_FLOAT32
avec une plage et une précision aussi basses que celles de la norme IEEE 754 16 bits à virgule flottante
.
Autofill Framework
Android 9 introduit plusieurs améliorations concernant la saisie automatique services peuvent mettre en œuvre pour améliorer davantage l'expérience utilisateur lors des formulaires. Pour en savoir plus sur l'utilisation des fonctionnalités de saisie automatique dans votre application, consultez les guide Autofill Framework.
Renforcement de la sécurité
Android 9 introduit un certain nombre de fonctionnalités de sécurité, les sections suivantes résument:
Confirmation de protection Android
Les appareils compatibles équipés d'Android 9 ou version ultérieure vous offrent les avantages suivants : la possibilité d'utiliser Confirmation de protection Android. Lorsque vous utilisez ce workflow, affiche une invite demandant à l'utilisateur d'approuver une courte déclaration. Cette instruction permet à l'application de réaffirmer que l'utilisateur souhaite une transaction sensible, comme un paiement.
Si l'utilisateur accepte l'instruction, Android Keystore reçoit et stocke un
signature cryptographique protégée par une authentification de message par hachage
(HMAC). Une fois qu'Android Keystore a confirmé la validité du message, votre application
peut utiliser la clé générée à partir de trustedConfirmationRequired
dans le compte
environnement d'exécution (TEE) pour signer le message que l'utilisateur a accepté. La
signature indique, avec un fort degré de certitude, que l'utilisateur a vu
déclaration et l’a acceptée.
Attention : Confirmation de protection Android ne fournit pas de canal d'informations sécurisé à l'utilisateur. Votre application ne peut pas supposer des garanties de confidentialité autres que celles offertes par la plateforme Android. En particulier, n'utilisez pas ce workflow pour afficher des informations sensibles que vous n'afficheriez habituellement pas sur l'appareil de l'utilisateur.
Pour obtenir des conseils sur la prise en charge de Confirmation de protection Android, consultez la Protection Android Confirmation .
Boîte de dialogue d'authentification biométrique unifiée
Sous Android 9, le système fournit des boîtes de dialogue d'authentification biométrique de votre application. Cette fonctionnalité crée une apparence et un emplacement pour la boîte de dialogue, ce qui renforce la confiance des utilisateurs quant à leur authentification un vérificateur biométrique de confiance.
Si votre application utilise
FingerprintManager
pour afficher une boîte de dialogue d'authentification par empreinte digitale, passez à
BiometricPrompt
à la place. BiometricPrompt
s'appuie sur le système pour afficher l'authentification
. Il modifie également son comportement
pour s'adapter au type de données biométriques
d’authentification
qu’un utilisateur a choisie.
Module matériel de sécurité
Les appareils compatibles équipés d'Android 9 ou version ultérieure peuvent StrongBox Keymaster, une implémentation du HAL Keymaster qui se trouve dans un module matériel de sécurité. Le module contient les éléments suivants :
- Son propre processeur.
- Stockage sécurisé.
- Un véritable générateur de nombres aléatoires
- Mécanismes supplémentaires pour empêcher la falsification des packages et le téléchargement indépendant non autorisé d'applications.
Lors de la vérification des clés stockées dans StrongBox Keymaster, le système confirme une l'intégrité de la clé à l'aide du TEE (Trusted Execution Environment).
Pour en savoir plus sur l'utilisation de Strongbox Keymaster, consultez la page Sécurité du matériel d'assistance.
Sécuriser l'importation de clés dans le keystore
Android 9 renforce la sécurité du déchiffrement des clés en ajoutant la possibilité d'importer des clés chiffrées dans le keystore à l'aide d'un Format de clé encodée ASN.1. Le Keymaster déchiffre ensuite les clés dans le Keystore : le contenu des clés n'apparaît jamais en texte brut dans la mémoire hôte de l'appareil.
Découvrez comment importer des clés chiffrées. en toute sécurité.
Schéma de signature d'APK avec rotation des clés
Android 9 est compatible avec APK Signature Scheme v3. Ce schéma offre l'option inclure un enregistrement de preuve de rotation dans son bloc de signature pour chaque signature certificat. Cette fonctionnalité permet de signer votre application avec une nouvelle en associant les anciens certificats de signature du fichier APK à celui avec lequel qu'il est maintenant signé.
En savoir plus sur la rotation des clés à l'aide de
apksigner
Option permettant d'autoriser le déchiffrement de clé uniquement sur les appareils déverrouillés
Android 9 introduit l'indicateur unlockedDeviceRequired
. Cette option détermine
si le keystore nécessite le déverrouillage de l'écran avant d'autoriser
le déchiffrement de toutes les données en cours
de transfert ou stockées à l’aide de la clé spécifiée. Ces types
sont adaptées au chiffrement des données sensibles à stocker sur le disque,
ou des données d'entreprise. Cet indicateur offre aux utilisateurs une plus grande garantie que
les données ne peuvent pas être déchiffrées lorsque l'appareil est verrouillé en cas de perte du téléphone
ou volés.
Pour empêcher le déchiffrement lorsque l'appareil est verrouillé, activez l'indicateur
en transmettant true
à setUnlockedDeviceRequired()
. Une fois cette étape terminée, lorsque l'écran de l'utilisateur est verrouillé,
les tentatives de déchiffrement ou de signature
de données à l'aide de cette clé échouent. Un appareil verrouillé nécessite un
Code, mot de passe, empreinte digitale ou tout autre facteur de confiance
y accéder.
Compatibilité avec l'ancien chiffrement
Appareils Android 9 livrés avec Keymaster 4 et compatibles avec la fonctionnalité Triple Data l’algorithme de chiffrement, ou Triple DES. Si votre application fonctionne avec les anciennes qui nécessitent le Triple DES, utilisez ce type de chiffrement lors du cryptage à l'aide d'identifiants sensibles.
Pour savoir comment renforcer la sécurité de votre application, consultez Sécurité pour Android Développeurs
Abandon du WPS
WPS (Wi-Fi Protected Setup) est obsolète pour des raisons de sécurité.
Sauvegardes Android
Android 9 ajoute de nouvelles fonctionnalités et options pour les développeurs pour la sauvegarde et la restauration. Vous trouverez des informations détaillées sur ces modifications dans .
Sauvegardes avec chiffrement côté client
Android 9 prend en charge le chiffrement des sauvegardes Android avec un secret côté client. Cette prise en charge est activée automatiquement lorsque les si les conditions suivantes sont remplies:
- L'utilisateur a activé sauvegarde avec Android 9 ou supérieur.
- L'utilisateur a défini un écran le verrouillage de leur appareil. qui nécessite un code, un schéma ou un mot de passe pour déverrouiller l'appareil.
Lorsque cette mesure de confidentialité est activée, le code, le schéma ou le mot de passe de l'appareil est requises pour restaurer les données à partir des sauvegardes effectuées par l'appareil de l'utilisateur. Pour apprendre sur la technologie à l'origine de cette fonctionnalité, consultez le document Google Cloud Key Vault d'assistance.
Définir les conditions de l'appareil requises pour la sauvegarde
Si les données de votre application incluent des informations ou des préférences sensibles, Android 9 vous permet de définir l'appareil conditions dans lesquelles les données de votre application sont incluses dans la sauvegarde de l'utilisateur (côté client, par exemple). le chiffrement est activé ou un transfert local d'appareil à appareil est en cours.
Pour en savoir plus sur la sauvegarde de données sur les appareils Android, voir Données Présentation de la sauvegarde
Accessibilité
Android 9 améliore l'accessibilité qui permettent d'offrir des expériences encore meilleures aux utilisateurs de votre application.
Sémantique de navigation
Les attributs ajoutés dans Android 9 vous permettent de définir plus facilement aux services d'accessibilité, en particulier les lecteurs d'écran, l'écran à un autre. Ces attributs peuvent aider les utilisateurs malvoyants parcourir rapidement du texte dans l'UI de votre appli et lui permettre de faire une sélection.
Par exemple, dans une application d'achat, un lecteur d'écran peut aider les utilisateurs à naviguer directement d'une catégorie d'offres à la suivante, sans utiliser de lecteur d'écran de lire tous les éléments d'une catégorie avant de passer à la suivante.
Titres accessibles pour les volets
Sur Android 8.1 (niveau d'API 27) ou version antérieure, les services d'accessibilité ne peuvent pas toujours déterminer quand un volet spécifique de l'écran a été mis à jour, par exemple lorsqu'une activité a remplacé un fragment par un autre fragment. Les volets sont constitués de éléments d'interface utilisateur liés visuellement et regroupés de manière logique, qui comprennent généralement Fragment.
Sous Android 9, vous pouvez fournir les titres des volets d'accessibilité, ou individuellement des titres identifiables, pour ces volets. Si un volet a un titre de volet d'accessibilité, les services d'accessibilité reçoivent des informations plus détaillées lorsque le volet change. Cette fonctionnalité permet aux services de fournir des informations plus précises à l'utilisateur sur les modifications apportées à l'interface utilisateur.
Pour spécifier le titre d'un volet, utilisez la
android:accessibilityPaneTitle
. Vous pouvez également modifier le titre d'un volet d'interface utilisateur qui est remplacé dans
à l'aide de setAccessibilityPaneTitle()
.
Par exemple, vous pouvez donner un titre à la zone de contenu d'une
objet Fragment
.
Navigation par titre
Si votre application affiche du contenu textuel comprenant des en-têtes logiques, définissez
android:accessibilityHeading
à true
pour les instances de
View
qui représentent ces titres. Par
en ajoutant ces titres, vous autorisez les services d'accessibilité à aider les utilisateurs à naviguer
directement d'un titre à l'autre. Tous les services d'accessibilité peuvent utiliser cette
d'améliorer les performances Expérience de navigation dans l'interface utilisateur
Navigation et résultats de groupe
Les lecteurs d'écran utilisent traditionnellement
android:focusable
à
déterminer quand il doit lire
ViewGroup
, ou une collection de
View
, comme une seule unité. De cette façon,
que les utilisateurs puissent comprendre
que les vues étaient liées de manière logique les unes aux autres.
Sous Android 8.1 et versions antérieures, vous devez marquer chaque objet View
dans un
ViewGroup
comme non sélectionnable et ViewGroup
elle-même comme sélectionnable. Ce
la disposition de certaines instances de View
a été marquée comme sélectionnable, de sorte que
rendu la navigation au clavier plus fastidieuse.
À partir d'Android 9, vous pouvez utiliser le
android:screenReaderFocusable
à la place de l'attribut android:focusable
dans les cas où
Rendre un objet View
sélectionnable a des conséquences indésirables. Lecteurs d'écran
placer le curseur sur tous les éléments qui ont défini android:screenReaderFocusable
ou android:focusable
à true
.
Actions pratiques
Android 9 permet désormais d'effectuer des actions pratiques pour le compte des utilisateurs:
- Interaction avec les info-bulles
- Les fonctionnalités supplémentaires du framework d'accessibilité vous permettent d'accéder aux
info-bulles dans l'interface utilisateur d'une application. Utilisez
getTooltipText()
pour lire le texte d'une info-bulle et utiliser laACTION_SHOW_TOOLTIP
etACTION_HIDE_TOOLTIP
pour demander aux instances deView
d'afficher ou masquer leurs info-bulles. - Actions globales ajoutées
- Android 9 permet d'effectuer deux actions supplémentaires sur l'appareil dans le
AccessibilityService
. Votre service peut aider les utilisateurs à verrouiller leurs appareils et à faire des captures d'écran à l'aide duGLOBAL_ACTION_LOCK_SCREEN
etGLOBAL_ACTION_TAKE_SCREENSHOT
des actions, respectivement.
Détails des modifications de la fenêtre
Android 9 facilite le suivi des mises à jour des fenêtres d'une application
redessine plusieurs fenêtres simultanément. Lorsqu'un
TYPE_WINDOWS_CHANGED
l'événement, utilisez la méthode
getWindowChanges()
pour déterminer les modifications des fenêtres. Lors d'une mise à jour multifenêtre, chaque
génère son propre ensemble d'événements.
getSource()
renvoie la vue racine de la fenêtre associée à chaque événement.
Si une application a défini des titres de volet d'accessibilité pour son
objets View
, votre service peut reconnaître
lorsque l'UI de l'application est mise à jour. Lorsqu'un
TYPE_WINDOW_STATE_CHANGED
se produit, utilisez les types renvoyés par
getContentChangeTypes()
pour déterminer l'évolution de la fenêtre. Par exemple, le framework peut
détecter si un volet a un nouveau titre ou lorsqu'il a disparu.
Rotation
Pour éliminer les rotations involontaires, nous avons ajouté un mode qui épingle le même si la position de l'appareil change. Les utilisateurs peuvent déclencher la rotation manuellement en cas de besoin en appuyant sur un bouton de la barre système.
Dans la plupart des cas, l'impact sur la compatibilité des applications est minime. Toutefois, si votre l'application a un comportement de rotation personnalisé ou utilise une orientation d'écran inhabituelle ; vous risquez de rencontrer des problèmes qui n'auraient pas été remarqués auparavant, la préférence de rotation des utilisateurs a toujours été définie sur portrait. Nous vous invitons à suivre Examinez le comportement de rotation dans toutes les activités clés de votre application assurez-vous que tous les paramètres d'orientation de votre écran une expérience optimale.
Pour en savoir plus, consultez le comportement associé modifications.
![Rotation de l'application mobile affichant un nouveau mode de rotation permettant aux utilisateurs de déclencher manuellement la rotation](https://developer.android.google.cn/static/images/about/versions/pie/rotate-changes.gif?authuser=19&hl=fr)
Un nouveau mode de rotation permet aux utilisateurs de déclencher la rotation manuellement en cas de besoin à l'aide d'un bouton dans la barre système.
Texte
Android 9 apporte les fonctionnalités de texte suivantes au plate-forme:
Texte précalculé : La classe
PrecomputedText
s'améliore d'affichage de texte en vous permettant de calculer et de mettre en cache des informations à l'avance. Cela permet également à votre application de désactiver la mise en page le thread principal.Loupe: la classe
Magnifier
est de plate-forme, qui fournit une API Loupe, permettant une cohérence avec la loupe dans toutes les applications.Smart Linkify: Android 9 améliore la classe
TextClassifier
, qui exploite le machine learning pour identifier certaines entités dans un texte sélectionné suggérer des actions. Par exemple,TextClassifier
peut permettre à votre application de détecter que l'utilisateur a sélectionné un numéro de téléphone. Votre application peut alors suggérer à l'utilisateur l'utilisateur passe un appel téléphonique à l'aide de ce numéro. Fonctionnalités deTextClassifier
remplacer la fonctionnalité de la classeLinkify
.Mise en page du texte: plusieurs méthodes et attributs pratiques facilitent mettre en œuvre la conception de votre interface utilisateur. Pour en savoir plus, consultez la documentation de référence
TextView
Conversion anticipée des fichiers DEX via ART
Sur les appareils équipés d'Android 9 ou version ultérieure, l'environnement d'exécution Android Le compilateur en amont (ART) optimise davantage l'exécutable Dalvik Executable compressé (DEX) en convertissant les fichiers DEX d'un package d'application en un fichier représentation compacte. Ce changement permet à votre appli de démarrer plus rapidement moins d'espace disque et de RAM.
Cette amélioration profite particulièrement aux appareils bas de gamme avec des E/S disque plus lentes en ligne.
Traçage système sur l'appareil
Android 9 vous permet d'enregistrer les traces système de votre appareil, puis partagez un rapport de ces enregistrements avec votre équipe de développement. Ce rapport est compatible avec plusieurs formats, dont HTML.
En collectant ces traces, vous pouvez capturer des données temporelles liées aux processus et threads, et découvrez d'autres types d'appareils d'importance mondiale différents états.
Pour en savoir plus sur cet outil, consultez Exécuter un système sur l'appareil Traçage.