Bienvenue sur Android 4.4 KitKat !
Android KitKat apporte toutes les fonctionnalités les plus innovantes, les plus belles et les plus utiles d'Android sur toujours plus d'appareils dans le monde entier.
Ce document donne un aperçu des nouveautés pour les développeurs.
Pour en savoir plus sur KitKat pour les consommateurs, consultez www.android.com.
Rendre Android accessible à tous
Android 4.4 est conçu pour s'exécuter rapidement, de manière fluide et réactive sur une gamme d'appareils beaucoup plus large que jamais, y compris sur des millions d'appareils d'entrée de gamme dans le monde qui disposent de seulement 512 Mo de RAM.
KitKat simplifie chaque composant majeur pour réduire l'utilisation de la mémoire et introduit de nouvelles API et de nouveaux outils pour vous aider à créer des applications innovantes, réactives et économes en mémoire.
Les OEM qui développent la prochaine génération d'appareils Android peuvent profiter des recommandations et options ciblées pour exécuter Android 4.4 efficacement, même sur les appareils à faible mémoire. Le réglage du cache de code JIT Dalvik, la fusion de pages du kernel (KSM), le swap vers la zRAM et d'autres optimisations permettent de gérer la mémoire. Les nouvelles options de configuration permettent aux OEM d'ajuster les niveaux de mémoire insuffisante pour les processus, de définir des tailles de cache graphique, de contrôler la récupération de mémoire, etc.
Dans Android lui-même, les modifications apportées au système améliorent la gestion de la mémoire et réduisent son empreinte. Les processus système principaux sont réduits pour utiliser moins de tas. Ils protègent désormais plus agressivement la mémoire système contre les applications qui consomment de grandes quantités de RAM. Lorsque plusieurs services démarrent en même temps (par exemple, en cas de modification de la connectivité réseau), Android lance les services de manière séquentielle, par petits groupes, pour éviter les pics de demande de mémoire.
Pour les développeurs, Android 4.4 vous aide à créer des applications efficaces et réactives sur tous les appareils. Une nouvelle API, ActivityManager.isLowRamDevice(), vous permet d'ajuster le comportement de votre application en fonction de la configuration de la mémoire de l'appareil. Vous pouvez modifier ou désactiver les fonctionnalités de grande mémoire selon les cas d'utilisation que vous souhaitez prendre en charge sur les appareils d'entrée de gamme. Pour en savoir plus sur l'optimisation de vos applications pour les appareils à faible mémoire, cliquez ici.
De nouveaux outils vous donnent également des informations précieuses sur l'utilisation de la mémoire de votre application. L'outil procstats détaille l'utilisation de la mémoire au fil du temps, avec les temps d'exécution et l'empreinte mémoire pour les applications de premier plan et les services en arrière-plan. Une nouvelle option pour les développeurs est également disponible : une vue sur l'appareil. L'outil meminfo a été amélioré pour faciliter la détection des tendances et des problèmes de mémoire. Il révèle également une surcharge de mémoire supplémentaire qui n'était pas visible auparavant.
Nouvelles fonctionnalités NFC via l'émulation de carte hôte
Android 4.4 introduit une nouvelle compatibilité de la plate-forme avec les transactions sécurisées basées sur la technologie NFC via l'émulation de carte hôte (HCE, Host Card Emulation), pour les paiements, les programmes de fidélité, l'accès aux cartes, les titres de transport et d'autres services personnalisés. Avec la technologie HCE, n'importe quelle application sur un appareil Android peut émuler une carte à puce NFC, ce qui permet aux utilisateurs d'appuyer pour lancer des transactions avec une application de leur choix. Aucun élément sécurisé (SE) provisionné sur l'appareil n'est nécessaire. Les applications peuvent également utiliser un nouveau mode Lecteur pour servir de lecteurs pour les cartes HCE et d'autres transactions basées sur la technologie NFC.
L'émulation de carte hôte Android émule les cartes à puce basées sur la norme ISO/CEI 7816 qui utilisent le protocole sans contact ISO/CEI 14443-4 (ISO-DEP) pour la transmission. Ces cartes sont utilisées par de nombreux systèmes aujourd'hui, y compris l'infrastructure de paiement NFC EMVCO existante. Android utilise les identifiants d'application (AID) tels que définis dans la norme ISO/CEI 7816-4 comme base pour acheminer les transactions vers les applications Android appropriées.
Les applications déclarent les AID qu'elles acceptent dans leurs fichiers manifestes, ainsi qu'un identifiant de catégorie indiquant le type d'assistance disponible (par exemple, "paiements"). Si plusieurs applications sont compatibles avec le même AID dans la même catégorie, Android affiche une boîte de dialogue permettant à l'utilisateur de choisir l'application à utiliser.
Lorsque l'utilisateur appuie pour payer sur un terminal de point de vente, le système extrait l'AID préféré et achemine la transaction vers la bonne application. L'application lit les données de transaction et peut utiliser n'importe quel service local ou basé sur un réseau pour valider et finaliser la transaction.
Android HCE nécessite la présence d'un contrôleur NFC sur l'appareil. La prise en charge de la technologie HCE est déjà largement disponible sur la plupart des contrôleurs NFC, qui offrent une prise en charge dynamique des transactions HCE et SE. Les appareils Android 4.4 compatibles avec la technologie NFC incluent le paiement sans contact pour effectuer des paiements faciles à l'aide de la technologie HCE.
Framework d'impression
Les applications Android peuvent désormais imprimer n'importe quel type de contenu via le Wi-Fi ou des services hébergés dans le cloud tels que Google Cloud Print. Dans les applications compatibles avec l'impression, les utilisateurs peuvent découvrir les imprimantes disponibles, modifier les formats de papier, choisir des pages spécifiques à imprimer et imprimer presque tous les types de documents, d'images ou de fichiers.
Android 4.4 introduit la prise en charge native de la plate-forme pour l'impression, ainsi que des API pour gérer l'impression et ajouter de nouveaux types de compatibilité avec les imprimantes. La plate-forme fournit un gestionnaire d'impression qui sert d'intermédiaire entre les applications qui demandent l'impression et les services d'impression installés qui gèrent les requêtes d'impression. Le gestionnaire d'impression fournit des services partagés et une UI système pour l'impression, ce qui permet aux utilisateurs de contrôler de manière cohérente l'impression à partir de n'importe quelle application. Le gestionnaire d'impression assure également la sécurité du contenu lorsqu'il est transmis entre les processus, d'une application à un service d'impression.
Les fabricants d'imprimantes peuvent utiliser de nouvelles API pour développer leurs propres services d'impression, des composants enfichables qui ajoutent une logique et des services spécifiques au fournisseur pour communiquer avec des types d'imprimantes spécifiques. Ils peuvent créer des services d'impression et les distribuer via Google Play, ce qui permet aux utilisateurs de les trouver et de les installer facilement sur leurs appareils. Comme pour les autres applications, vous pouvez mettre à jour les services d'impression en mode sans fil à tout moment.
Les applications clientes peuvent utiliser de nouvelles API pour ajouter des fonctionnalités d'impression à leurs applications avec un minimum de modifications de code. Dans la plupart des cas, vous devez ajouter une action d'impression à votre barre d'action et une UI pour choisir les éléments à imprimer. Vous devez également implémenter des API pour créer des tâches d'impression, interroger le gestionnaire d'impression sur l'état et annuler les tâches. Vous pouvez ainsi imprimer presque tous les types de contenus, des images et documents locaux aux données réseau ou à une vue affichée sur un canevas.
Pour une compatibilité maximale, Android utilise le format PDF comme format de fichier principal pour l'impression. Avant l'impression, votre application doit générer une version PDF correctement paginée de votre contenu. Pour plus de commodité, l'API d'impression fournit des classes d'assistance natives et WebView qui vous permettent de créer des PDF à l'aide d'API de dessin Android standards. Si votre application sait dessiner le contenu, elle peut rapidement créer un PDF à imprimer.
La plupart des appareils équipés d'Android 4.4 incluent Google Cloud Print préinstallé en tant que service d'impression, ainsi que plusieurs applications Google compatibles avec l'impression, y compris Chrome, Drive, Gallery et QuickOffice.
Storage Access Framework
Un nouveau framework d'accès au stockage permet aux utilisateurs de parcourir et d'ouvrir facilement des documents, des images et d'autres fichiers sur tous leurs fournisseurs de stockage de documents préférés. Une interface utilisateur standard et facile à utiliser permet aux utilisateurs de parcourir les fichiers et d'accéder aux éléments récents de manière cohérente entre les applications et les fournisseurs.
Les services de stockage cloud ou locaux peuvent participer à cet écosystème en implémentant une nouvelle classe de fournisseur de documents qui encapsule leurs services. La classe du fournisseur inclut toutes les API nécessaires pour enregistrer le fournisseur auprès du système et gérer la navigation, la lecture et l'écriture de documents dans le fournisseur. Le fournisseur de documents peut donner aux utilisateurs accès à toutes les données distantes ou locales pouvant être représentées sous forme de fichiers, du texte, des photos et des fonds d'écran aux vidéos, aux fichiers audio et plus encore.
Si vous créez un fournisseur de documents pour un service cloud ou local, vous pouvez le fournir aux utilisateurs dans le cadre de votre application Android existante. Une fois l'application téléchargée et installée, les utilisateurs auront un accès instantané à votre service depuis n'importe quelle application participant au framework. Cela peut vous aider à gagner en visibilité et à engager les utilisateurs, car ils trouveront plus facilement vos services.
Si vous développez une application cliente qui gère des fichiers ou des documents, vous pouvez l'intégrer au framework d'accès au stockage simplement en utilisant les nouveaux intents CREATE_DOCUMENT ou OPEN_DOCUMENT pour ouvrir ou créer des fichiers. Le système affiche automatiquement l'UI standard pour parcourir les documents, y compris tous les fournisseurs de documents disponibles.
Vous pouvez intégrer votre application cliente une seule fois, pour tous les fournisseurs, sans code spécifique au fournisseur. Lorsque les utilisateurs ajoutent ou suppriment des fournisseurs, ils continuent à avoir accès à leurs services préférés depuis votre application, sans avoir à modifier ou à mettre à jour votre code.
Storage Access Framework est intégré à l'intent GET_CONTENT existant. Les utilisateurs ont donc également accès à tous leurs contenus et sources de données précédents depuis la nouvelle interface utilisateur du système pour la navigation. Les applications peuvent continuer à utiliser GET_CONTENT pour permettre aux utilisateurs d'importer des données. Le framework d'accès au stockage et l'UI du système pour la navigation permettent aux utilisateurs de trouver et d'importer plus facilement leurs données à partir d'un plus grand nombre de sources.
La plupart des appareils exécutant Android 4.4 incluront Google Drive et le stockage local préintégrés en tant que fournisseurs de documents. Les applications Google qui fonctionnent avec des fichiers utilisent également le nouveau framework.
Capteurs basse consommation
Mise en lot des capteurs
Android 4.4 introduit la prise en charge de la plate-forme pour le traitement par lot des capteurs matériels, une nouvelle optimisation qui peut réduire considérablement la consommation d'énergie des activités de capteur en cours.
Avec le traitement par lots des capteurs, Android collabore avec le matériel de l'appareil pour collecter et diffuser efficacement les événements de capteurs par lots, plutôt que de manière individuelle lorsqu'ils sont détectés. Cela permet au processeur d'application de l'appareil de rester dans un état d'inactivité à faible consommation d'énergie jusqu'à ce que les lots soient distribués. Vous pouvez demander des événements groupés à partir de n'importe quel capteur à l'aide d'un écouteur d'événements standard, et vous pouvez contrôler l'intervalle à laquelle vous recevez des lots. Vous pouvez également demander la diffusion immédiate des événements entre les cycles de traitement par lot.
Le traitement par lot des capteurs est idéal pour les cas d'utilisation à faible consommation d'énergie et de longue durée, tels que le fitness, le suivi de position, la surveillance, etc. Il peut rendre votre application plus efficace et vous permet de suivre les événements des capteurs en continu, même lorsque l'écran est éteint et que le système est en veille.
Le traitement par lot des capteurs est actuellement disponible sur le Nexus 5. Nous collaborons avec nos partenaires de chipsets pour le proposer sur un plus grand nombre d'appareils dès que possible.
Détecteur de pas et compteur de pas
Android 4.4 ajoute également la prise en charge de deux nouveaux capteurs composites (détecteur de pas et compteur de pas) qui permettent à votre application de suivre les pas lorsque l'utilisateur marche, court ou monte des escaliers. Ces nouveaux capteurs sont implémentés en matériel pour une consommation d'énergie réduite.
Le détecteur de pas analyse l'entrée de l'accéléromètre pour reconnaître quand l'utilisateur a fait un pas, puis déclenche un événement à chaque pas. Le compteur de pas suit le nombre total de pas effectués depuis le dernier redémarrage de l'appareil et déclenche un événement à chaque modification du nombre de pas. Étant donné que la logique et la gestion des capteurs sont intégrées à la plate-forme et au matériel sous-jacent, vous n'avez pas besoin de gérer vos propres algorithmes de détection dans votre application.
Le détecteur de pas et les capteurs de compteur sont disponibles sur le Nexus 5. Nous collaborons avec nos partenaires de chipset pour les intégrer aux nouveaux appareils dès que possible.
Fournisseur de SMS
Si vous développez une application de messagerie qui utilise des SMS ou des MMS, vous pouvez désormais utiliser un fournisseur de SMS partagé et de nouvelles API pour gérer le stockage et la récupération des messages de votre application. Le nouveau fournisseur de SMS et les API définissent un modèle d'interaction standardisé pour toutes les applications qui gèrent des messages SMS ou MMS.
En plus du nouveau fournisseur et des nouvelles API, Android 4.4 introduit de nouvelles sémantiques pour la réception de messages et l'écriture au niveau du fournisseur. Lorsqu'un message est reçu, le système le redirige directement vers l'application de messagerie par défaut de l'utilisateur à l'aide du nouvel intent SMS_DELIVER. Les autres applications peuvent toujours écouter les messages entrants à l'aide de l'intent SMS_RECEIVED. De plus, le système n'autorise désormais que l'application par défaut à écrire des données de message au fournisseur, bien que d'autres applications puissent les lire à tout moment. Les applications qui ne sont pas l'application par défaut de l'utilisateur peuvent toujours envoyer des messages. Le système gère l'écriture de ces messages au fournisseur pour le compte de l'application afin que les utilisateurs puissent les voir dans l'application par défaut.
Le nouveau fournisseur et les nouvelles sémantiques contribuent à améliorer l'expérience utilisateur lorsque plusieurs applications de messagerie sont installées. Ils vous aident également à créer de nouvelles fonctionnalités de messagerie avec des API entièrement compatibles et évolutives.
Nouvelles façons de créer des applications attrayantes
Mode immersif plein écran
Vos applications peuvent désormais utiliser tous les pixels de l'écran de l'appareil pour présenter votre contenu et capturer les événements tactiles. Android 4.4 ajoute un nouveau mode immersif en plein écran qui vous permet de créer des UI pleines de bord à bord sur les téléphones et les tablettes, en masquant toute l'UI système, comme la barre d'état et la barre de navigation. Il est idéal pour les contenus visuels riches tels que les photos, les vidéos, les cartes, les livres et les jeux.
Dans le nouveau mode, l'UI du système reste masquée, même lorsque les utilisateurs interagissent avec votre application ou votre jeu. Vous pouvez capturer des événements tactiles n'importe où sur l'écran, même dans les zones qui seraient autrement occupées par les barres système. Vous pouvez ainsi créer une interface utilisateur plus grande, plus riche et plus immersive dans votre application ou votre jeu, tout en réduisant les distractions visuelles.
Pour s'assurer que les utilisateurs ont toujours un accès facile et cohérent à l'UI du système depuis le mode immersif en plein écran, Android 4.4 prend en charge un nouveau geste : en mode immersif, un balayage de l'écran en haut ou en bas révèle désormais l'UI du système.
Pour revenir au mode immersif, les utilisateurs peuvent appuyer sur l'écran en dehors des limites des barres ou attendre un court moment pour que les barres se cachent automatiquement. Pour une expérience utilisateur cohérente, le nouveau geste fonctionne également avec les méthodes précédentes de masquage de la barre d'état.
Framework de transitions pour animer des scènes
La plupart des applications structurent leurs flux autour de plusieurs états d'UI clés qui exposent différentes actions. De nombreuses applications utilisent également l'animation pour aider les utilisateurs à comprendre leur progression dans ces états et les actions disponibles dans chacun d'eux. Pour faciliter la création d'animations de haute qualité dans votre application, Android 4.4 introduit un nouveau framework de transitions.
Le framework de transitions vous permet de définir des scènes, généralement des hiérarchies de vues, et des transitions, qui décrivent comment animer ou transformer les scènes lorsque l'utilisateur y accède ou en sort. Vous pouvez utiliser plusieurs types de transitions prédéfinis pour animer vos scènes en fonction de propriétés spécifiques, telles que les limites de mise en page ou la visibilité. Il existe également un type de transition automatique qui estompe, déplace et redimensionne automatiquement les vues lors d'un changement de scène. En outre, vous pouvez définir des transitions personnalisées qui animent les propriétés les plus importantes pour votre application, et vous pouvez brancher vos propres styles d'animation si nécessaire.
Avec le framework de transitions, vous pouvez également animer les modifications apportées à votre UI, sans avoir à définir de scènes. Par exemple, vous pouvez apporter une série de modifications à une hiérarchie de vues, puis demander à TransitionManager d'exécuter automatiquement une transition différée sur ces modifications.
Une fois que vous avez configuré des transitions, il est facile de les appeler depuis votre application. Par exemple, vous pouvez appeler une seule méthode pour commencer une transition, apporter diverses modifications à votre hiérarchie de vues, et les animations commenceront automatiquement au prochain frame pour animer les modifications que vous avez spécifiées.
Pour contrôler les transitions exécutées entre des scènes spécifiques de votre flux d'application, vous pouvez utiliser TransitionManager. TransitionManager vous permet de définir la relation entre les scènes et les transitions exécutées pour des changements de scène spécifiques.
Style translucide de l'UI du système
Pour exploiter tout le potentiel de vos contenus, vous pouvez désormais utiliser de nouveaux styles de fenêtre et de thèmes pour demander une interface utilisateur système transparente, y compris la barre d'état et la barre de navigation. Pour assurer la lisibilité des boutons de la barre de navigation ou des informations de la barre d'état, des dégradés subtils sont affichés derrière les barres système. Un cas d'utilisation typique est une application qui doit s'afficher sur un fond d'écran.
Accès aux notifications amélioré
Les services d'écouteur de notification peuvent désormais afficher plus d'informations sur les notifications entrantes créées à l'aide des API de création de notifications. Les services d'écouteur peuvent accéder aux actions d'une notification, ainsi qu'aux nouveaux champs supplémentaires (texte, icône, image, progression, chronomètre, etc.) pour extraire des informations plus claires sur la notification et les présenter différemment.
WebView Chromium
Android 4.4 inclut une implémentation entièrement nouvelle de WebView basée sur Chromium. La nouvelle WebView Chromium vous offre les dernières fonctionnalités de compatibilité, de performances et de prise en charge des normes pour créer et afficher vos contenus Web.
Chromium WebView est compatible avec de nombreux langages HTML5, CSS3 et JavaScript. Il est compatible avec la plupart des fonctionnalités HTML5 disponibles dans Chrome pour Android 30. Il propose également une version mise à jour du moteur JavaScript (V8) qui offre des performances JavaScript considérablement améliorées.
De plus, la nouvelle WebView Chromium est compatible avec le débogage à distance à l'aide de DevTools Chrome. Par exemple, vous pouvez utiliser les outils pour les développeurs Chrome sur votre ordinateur de développement pour inspecter, déboguer et analyser votre contenu WebView en direct sur un appareil mobile.
La nouvelle WebView Chromium est incluse sur tous les appareils compatibles équipés d'Android 4.4 ou version ultérieure. Vous pouvez profiter immédiatement de la nouvelle WebView, avec un minimum de modifications apportées aux applications et contenus existants. Dans la plupart des cas, votre contenu sera migré vers la nouvelle implémentation sans interruption.
Nouvelles fonctionnalités multimédias
Enregistrement de l'écran
Vous pouvez désormais créer facilement des vidéos de haute qualité de votre application, directement depuis votre appareil Android. Android 4.4 est compatible avec l'enregistrement d'écran et fournit un utilitaire d'enregistrement d'écran qui vous permet de démarrer et d'arrêter l'enregistrement sur un appareil connecté à votre environnement Android SDK via USB. C'est un excellent moyen de créer des tutoriels et des guides pour votre application, des supports de test, des vidéos marketing, et plus encore.
Avec l'utilitaire d'enregistrement d'écran, vous pouvez enregistrer une vidéo du contenu de l'écran de votre appareil et la stocker sous forme de fichier MP4 sur l'appareil. Vous pouvez enregistrer à n'importe quelle résolution et débit binaire compatibles avec l'appareil, et la sortie conserve le format de l'écran. Par défaut, l'utilitaire sélectionne une résolution égale ou proche de la résolution d'affichage de l'appareil dans l'orientation actuelle. Lorsque vous avez terminé l'enregistrement, vous pouvez partager la vidéo directement depuis votre appareil ou extraire le fichier MP4 sur votre ordinateur hôte pour la post-production.
Si votre application lit une vidéo ou un autre contenu protégé que vous ne souhaitez pas que l'enregistreur d'écran capture, vous pouvez utiliser SurfaceView.setSecure() pour marquer le contenu comme sécurisé.
Vous pouvez accéder à l'enregistrement d'écran via l'outil adb inclus dans le SDK Android, à l'aide de la commande adb shell screenrecord. Vous pouvez également le lancer via Logcat dans Android Studio.
Changement de résolution via la lecture adaptative
Android 4.4 offre une prise en charge officielle de la lecture adaptative dans le framework multimédia Android. La lecture adaptative est une fonctionnalité facultative des décodeurs vidéo pour MPEG-DASH et d'autres formats qui permet de modifier facilement la résolution pendant la lecture. Le client peut commencer à alimenter le décodeur avec des images vidéo d'une nouvelle résolution, et la résolution des tampons de sortie change automatiquement, sans écart significatif.
Le changement de résolution sous Android 4.4 permet aux applications multimédias de proposer une expérience de streaming vidéo nettement meilleure. Les applications peuvent vérifier la compatibilité avec la lecture adaptative au moment de l'exécution à l'aide des API existantes et implémenter le changement de résolution à l'aide des nouvelles API introduites dans Android 4.4.
Chiffrement commun pour DASH
Android est désormais compatible avec le chiffrement commun (CENC) pour MPEG-DASH, ce qui fournit un schéma DRM multiplate-forme standard pour gérer et protéger les contenus. Les applications peuvent tirer parti du CENC via le framework DRM modulaire d'Android et les API de plate-forme pour prendre en charge DASH.
HTTP Live Streaming
Android 4.4 met à jour la compatibilité de la plate-forme avec HTTP Live Streaming (HLS) en la remplaçant par un sur-ensemble de la version 7 de la spécification HLS (version 4 du protocole). Pour en savoir plus, consultez le brouillon de l'IETF.
Tunneling audio vers le DSP
Pour une lecture audio hautes performances et moins énergivore, Android 4.4 ajoute la prise en charge de la plate-forme pour le tunnellisation audio vers un processeur de signal numérique (DSP) dans le chipset de l'appareil. Avec le tunnellisation, le décodage audio et les effets de sortie sont transférés vers le DSP, ce qui réveille le processeur de l'application moins souvent et consomme moins de batterie.
Le tunnel audio peut considérablement améliorer l'autonomie de la batterie dans les cas d'utilisation tels que l'écoute de musique via un casque lorsque l'écran est éteint. Par exemple, avec le tunnel audio, le Nexus 5 offre une durée de lecture audio hors réseau pouvant aller jusqu'à 60 heures, soit une augmentation de plus de 50% par rapport à l'audio non tunnelisé.
Les applications multimédias peuvent tirer parti du tunnel audio sur les appareils compatibles sans avoir à modifier le code. Le système applique le tunneling pour optimiser la lecture audio dès qu'elle est disponible sur l'appareil.
Le tunnel audio nécessite une compatibilité matérielle de l'appareil. Actuellement, le tunnel audio est disponible sur le Nexus 5. Nous travaillons avec nos partenaires de chipset pour le rendre disponible sur un plus grand nombre d'appareils dès que possible.
Surveillance audio
Les applications peuvent utiliser de nouveaux outils de surveillance dans l'effet Visualizer pour obtenir des informations sur les niveaux de crête et RMS de tout contenu audio en cours de lecture sur l'appareil. Par exemple, vous pouvez l'utiliser de manière créative dans des visualiseurs de musique ou pour implémenter la mesure de la lecture dans un lecteur multimédia.
Amélioration du volume
Les applications de lecture multimédia peuvent augmenter le volume du contenu parlé à l'aide du nouvel effet LoudnessEnhancer, qui agit comme un compresseur avec des constantes temporelles spécifiquement adaptées à la parole.
Horodatages audio pour une meilleure synchronisation audio-visuelle
Le framework audio peut désormais signaler des codes temporels de présentation depuis le HAL de sortie audio aux applications, pour une meilleure synchronisation audio-vidéo. Les codes temporels audio permettent à votre application de déterminer quand un frame audio spécifique sera (ou a été) présenté à l'utilisateur en dehors de l'appareil. Vous pouvez utiliser les informations de code temporel pour synchroniser plus précisément l'audio avec les frames vidéo.
Wi-Fi CERTIFIED Miracast™
Les appareils Android 4.4 peuvent désormais être certifiés comme compatibles avec Miracast conformément aux spécifications d'affichage Wi-Fi de la Wi-Fi Alliance. Pour faciliter les tests, une nouvelle option pour les développeurs d'affichage sans fil expose les commandes et paramètres de configuration avancés pour la certification d'affichage sans fil. Pour y accéder, accédez à Paramètres > Options pour les développeurs > Certification de l'affichage sans fil. Le Nexus 5 est un appareil d'affichage sans fil certifié Miracast.
Calcul RenderScript
Amélioration continue des performances
Lorsque vos applications utilisent RenderScript, elles bénéficient d'un réglage continu des performances dans l'environnement d'exécution RenderScript lui-même, sans avoir à recompiler. Le graphique de droite montre les gains de performances d'Android 4.4 sur deux chipsets populaires.
Accélération GPU
Toute application utilisant RenderScript sur un appareil compatible bénéficie de l'accélération du GPU, sans modification du code ni recompilation. Depuis que le Nexus 10 a lancé l'accélération GPU RenderScript, divers autres partenaires matériels ont ajouté la prise en charge.
Avec Android 4.4, l'accélération du GPU est désormais disponible sur le Nexus 5, ainsi que sur les Nexus 4, Nexus 7 (2013) et Nexus 10. Nous collaborons avec nos partenaires pour la proposer sur davantage d'appareils dès que possible.
RenderScript dans le NDK Android
Vous pouvez désormais profiter de RenderScript directement à partir de votre code natif. Une nouvelle API C++ dans le kit de développement natif Android (NDK) vous permet d'accéder aux mêmes fonctionnalités RenderScript disponibles via les API du framework, y compris les intrinsèques de script, les noyaux personnalisés, etc.
Si vous devez gérer des tâches volumineuses et gourmandes en performances dans le code natif, vous pouvez les effectuer à l'aide de RenderScript et les intégrer à votre code natif. RenderScript offre d'excellentes performances sur une large gamme d'appareils, avec une prise en charge automatique des processeurs multicœurs, des GPU et d'autres processeurs.
Lorsque vous créez une application qui utilise RenderScript via le NDK, vous pouvez la distribuer sur n'importe quel appareil équipé d'Android 2.2 ou version ultérieure, comme avec la bibliothèque d'assistance RenderScript disponible pour les API de framework.
Graphiques
GLES2.0 SurfaceFlinger
Android 4.4 met à niveau SurfaceFlinger d'OpenGL ES 1.0 vers OpenGL ES 2.0.
Nouvelle prise en charge de Hardware Composer pour les écrans virtuels
La dernière version d'Android Hardware Composer, HWComposer 1.3, prend en charge la composition matérielle d'un écran virtuel en plus de l'écran externe principal (par exemple, HDMI), et améliore l'interopérabilité OpenGL ES.
Nouveaux types de connectivité
Nouveaux profils Bluetooth
Compatibilité avec deux nouveaux profils Bluetooth sous Android 4.4 pour permettre aux applications de prendre en charge un plus grand nombre d'interactions multimédias et à faible consommation d'énergie. Bluetooth HID over GATT (HOGP) permet aux applications d'établir une liaison à faible latence avec des périphériques à faible consommation d'énergie tels que les souris, les joysticks et les claviers. Le profil d'accès aux messages Bluetooth permet à vos applications d'échanger des messages avec un appareil à proximité, par exemple un terminal automobile pour une utilisation mains libres ou un autre appareil mobile. En tant qu'extension de Bluetooth AVRCP 1.3, les utilisateurs peuvent désormais définir le volume absolu sur le système à partir de leurs appareils Bluetooth.
La prise en charge de la plate-forme pour HOGP, MAP et AVRCP est basée sur la pile Bluetooth Bluedroid introduite par Google et Broadcom dans Android 4.2. La compatibilité est disponible immédiatement sur les appareils Nexus et les autres appareils Android compatibles qui offrent des fonctionnalités Bluetooth compatibles.
Blasters infrarouges
Android 4.4 introduit la prise en charge de la plate-forme pour les blasters infrarouges intégrés, ainsi qu'une nouvelle API et un nouveau service système qui vous permettent de créer des applications pour en profiter.
Grâce à la nouvelle API, vous pouvez créer des applications permettant aux utilisateurs de contrôler à distance les téléviseurs, les tuners, les commutateurs et d'autres appareils électroniques à proximité. L'API permet à votre application de vérifier si le téléphone ou la tablette dispose d'un émetteur infrarouge, d'interroger ses fréquences porteuses, puis d'envoyer des signaux infrarouges.
Étant donné que l'API est standard sur les appareils Android équipés d'Android 4.4 ou version ultérieure, votre application peut prendre en charge la plus large gamme de fournisseurs possible sans écrire de code d'intégration personnalisé.
Compatibilité avec le Wi-Fi TDLS
Android 4.4 offre un moyen simple de diffuser des contenus multimédias et d'autres données plus rapidement entre des appareils déjà connectés au même réseau Wi-Fi en prenant en charge la configuration du lien direct en tunnel Wi-Fi (TDLS).
Accessibilité
Paramètres système pour les sous-titres
Android 4.4 offre désormais une meilleure expérience d'accessibilité dans les applications en ajoutant des préférences pour le sous-titrage pour l'ensemble du système. Les utilisateurs peuvent accéder à Paramètres > Accessibilité > Sous-titres pour définir des préférences globales de sous-titrage, par exemple s'ils doivent être affichés, ainsi que la langue, la taille et le style de texte à utiliser.
Les applications qui utilisent des vidéos peuvent désormais accéder aux paramètres de sous-titrage de l'utilisateur et ajuster la présentation en fonction de ses préférences. Une nouvelle API de gestion des sous-titres vous permet de vérifier et de surveiller les préférences de l'utilisateur concernant les sous-titres. Le gestionnaire de sous-titres vous indique l'état de sous-titrage préféré de l'utilisateur, ainsi que les paramètres régionaux, le facteur de mise à l'échelle et le style de texte préférés. Le style de texte inclut les couleurs de premier plan et d'arrière-plan, les propriétés de bordure et la police de caractères.
De plus, les applications qui utilisent VideoView peuvent utiliser une nouvelle API pour transmettre un flux de sous-titres avec un flux vidéo à afficher. Le système gère automatiquement l'affichage des sous-titres sur les images vidéo en fonction des paramètres système de l'utilisateur. Actuellement, VideoView n'est compatible qu'avec l'affichage automatique des sous-titres au format WebVTT.
Toutes les applications qui affichent des sous-titres doivent s'assurer de vérifier les préférences de sous-titrage de l'utilisateur au niveau du système et d'afficher les sous-titres aussi près que possible de ces préférences. Pour en savoir plus sur l'apparence de certaines combinaisons de paramètres, vous pouvez prévisualiser les sous-titres dans différentes langues, tailles et styles directement dans l'application Paramètres.
API d'accessibilité améliorée
Android 4.4 étend les API d'accessibilité pour prendre en charge une description structurelle et sémantique plus précise et l'observation des éléments à l'écran. Grâce aux nouvelles API, les développeurs peuvent améliorer la qualité des commentaires accessibles en fournissant aux services d'accessibilité plus d'informations sur les éléments à l'écran.
Dans les nœuds d'accessibilité, les développeurs peuvent désormais déterminer si un nœud est un pop-up, obtenir son type d'entrée, et plus encore. Vous pouvez également utiliser de nouvelles API pour travailler avec des nœuds contenant des informations de type grille, telles que des listes et des tableaux. Par exemple, vous pouvez désormais spécifier de nouvelles actions acceptées, des informations de collection, des modes de région en direct et plus encore.
Les nouveaux événements d'accessibilité permettent aux développeurs de suivre plus précisément les modifications apportées au contenu de la fenêtre. Ils peuvent désormais écouter les modifications apportées au mode d'exploration tactile sur l'appareil.
Prise en charge des utilisateurs internationaux
Duplication de drawables pour les paramètres régionaux de ce type
Si votre application cible des utilisateurs qui utilisent des scripts de droite à gauche, vous pouvez utiliser une nouvelle API pour déclarer qu'un drawable doit être mis en miroir automatiquement lorsque le paramètre régional de l'utilisateur inclut une langue de droite à gauche.
Déclarer un drawable comme miroir automatique vous permet d'éviter la duplication d'éléments dans votre application et de réduire la taille de votre APK. Lorsque vous disposez de drawables réutilisables pour les présentations LTR et RTL, vous pouvez déclarer les versions par défaut comme mises en miroir automatique, puis omettre ces drawables de vos ressources RTL.
Vous pouvez déclarer différents types de drawables comme des miroirs automatiques dans le code de votre application, tels que des bitmaps, des neuf-patch, des calques, des listes d'états et d'autres drawables. Vous pouvez également déclarer un drawable comme miroir automatique dans vos fichiers de ressources à l'aide d'un nouvel attribut.
Forcer l'orientation de droite à gauche
Pour faciliter le test et le débogage des problèmes de mise en miroir de la mise en page sans passer à une langue de droite à gauche, Android inclut une nouvelle option pour les développeurs permettant de forcer la direction de mise en page de droite à gauche dans toutes les applications.
L'option "Forcer la mise en page RTL" bascule l'appareil en mode RTL pour tous les paramètres régionaux et affiche le texte dans votre langue actuelle. Cela peut vous aider à identifier les problèmes de mise en page dans votre application, sans avoir à l'afficher dans une langue à sens de lecture de droite à gauche. Vous pouvez accéder à cette option dans Paramètres > Options pour les développeurs > Forcer écriture droite à gauche.
Renforcement de la sécurité
SELinux (mode d'application forcée)
Android 4.4 met à jour sa configuration SELinux de "permissive" à "enforcing". Cela signifie que les cas potentiels de non-respect des règles dans un domaine SELinux doté d'une stratégie d'application seront bloqués.
Amélioration des algorithmes de chiffrement
Android a encore amélioré sa sécurité en ajoutant la compatibilité avec deux autres algorithmes cryptographiques. La prise en charge de l'algorithme de signature numérique à courbe elliptique (ECDSA) a été ajoutée au fournisseur de keystore pour améliorer la sécurité de la signature numérique, applicable à des scénarios tels que la signature d'une application ou d'une connexion de données. La fonction de dérivation de clé Scrypt est implémentée pour protéger les clés cryptographiques utilisées pour le chiffrement de disque complet.
Autres améliorations
Sur les appareils multi-utilisateurs, les VPN sont désormais appliqués par utilisateur. Cela peut permettre à un utilisateur d'acheminer tout le trafic réseau via un VPN sans affecter les autres utilisateurs de l'appareil. De plus, Android est désormais compatible avec le niveau 2 de FORTIFY_SOURCE, et tout le code est compilé avec ces protections. FORTIFY_SOURCE a été amélioré pour fonctionner avec clang.
Outils d'analyse de l'utilisation de la mémoire
Procstats
Un nouvel outil appelé procstats vous aide à analyser les ressources de mémoire utilisées par votre application, ainsi que les ressources utilisées par d'autres applications et services exécutés sur le système.
Procstats suit l'exécution des applications au fil du temps, en fournissant des données sur leur durée d'exécution et leur utilisation de la mémoire pour déterminer leur efficacité. Cela est particulièrement important pour les applications qui démarrent des services exécutés en arrière-plan, car cela vous permet de surveiller la durée d'exécution et la quantité de RAM utilisée. Procstats collecte également des données sur l'utilisation de la mémoire au fil du temps pour les applications de premier plan afin de déterminer le profil de mémoire global de l'application.
Procstats peut vous aider à identifier les services en arrière-plan lancés par votre application. Vous pouvez suivre la durée d'exécution de ces services et la quantité de RAM qu'ils utilisent pendant cette période. Procstats vous permet également de profiler votre application lorsqu'elle est au premier plan, en utilisant son utilisation de la mémoire au fil du temps pour déterminer son profil de mémoire global.
Vous pouvez accéder à procstats à partir de l'outil adb inclus dans le SDK Android, adb shell dumpsys procstats. Pour le profilage sur l'appareil, consultez l'option pour les développeurs "Process Stats" (Statistiques de processus) ci-dessous.
État et profilage de la mémoire sur l'appareil
Android 4.4 inclut une nouvelle option pour les développeurs qui permet d'analyser plus facilement le profil de mémoire de votre application lorsqu'elle s'exécute sur n'importe quel appareil ou émulateur. Il est particulièrement utile d'obtenir une vue de la façon dont votre application utilise la mémoire et de ses performances sur les appareils à faible mémoire vive. Pour y accéder, accédez à Paramètres > Options pour les développeurs > Statistiques de processus.
L'option Process Stats (Statistiques sur les processus) affiche diverses métriques de haut niveau sur l'utilisation de la mémoire de votre application, en fonction des données collectées à l'aide du nouveau service procstats. Sur l'écran principal, vous pouvez consulter un résumé de l'état de la mémoire système. Le vert indique la durée relative passée avec une utilisation faible de la RAM, le jaune indique une utilisation modérée de la RAM et le rouge une utilisation élevée (critique) de la RAM.
Sous le résumé se trouve une liste récapitulant la charge de mémoire de chaque application sur le système. Pour chaque application, une barre bleue indique la charge de mémoire calculée relative (durée d'exécution x avg_pss) de son processus, et un pourcentage indique la durée relative passée en arrière-plan. Vous pouvez filtrer la liste pour n'afficher que les processus de premier plan, d'arrière-plan ou mis en cache, et vous pouvez inclure ou exclure les processus système. Vous pouvez également modifier la durée des données collectées sur trois, six, 12 ou 24 heures, et inclure ou exclure la mémoire uss.
Pour examiner de plus près l'utilisation de la mémoire d'une application spécifique, appuyez sur l'application. Pour chaque application, vous pouvez désormais consulter un résumé de la mémoire consommée et du pourcentage de l'intervalle de collecte pendant lequel l'application a été exécutée. Vous pouvez également consulter l'utilisation moyenne et maximale sur la période de collecte, ainsi que les services de l'application et le pourcentage de temps pendant lequel ils ont été exécutés.
L'analyse de votre application à l'aide des données des statistiques de processus peut révéler des problèmes et suggérer des optimisations possibles pour votre application. Par exemple, si votre application s'exécute plus longtemps que prévu ou utilise trop de mémoire sur une période donnée, il peut y avoir des bugs dans votre code que vous pouvez résoudre pour améliorer les performances de votre application, en particulier lorsqu'elle s'exécute sur un appareil avec une faible quantité de RAM.