Android 4.3
Bienvenue dans Android 4.3, une version plus sucrée d'Jelly Bean.
Android 4.3 inclut des optimisations de performances et de nouvelles fonctionnalités pour les utilisateurs et les développeurs. Ce document donne un aperçu des nouveautés pour les développeurs.
Consultez le document API Android 4.3 pour en savoir plus sur les nouvelles API pour les développeurs.
Pour en savoir plus sur les nouvelles fonctionnalités Jelly Bean pour les utilisateurs, consultez le site www.android.com.
Plus rapide, plus fluide, plus réactif
Android 4.3 s'appuie sur les améliorations de performances déjà incluses dans Jelly Bean (synchronisation vsync, triple tampon, latence tactile réduite, boost de l'entrée du processeur et rendu 2D accéléré par matériel) et ajoute de nouvelles optimisations qui rendent Android encore plus rapide.
Pour améliorer les performances graphiques, le moteur de rendu 2D accéléré par le matériel optimise désormais le flux de commandes de dessin, en le transformant en format GPU plus efficace en réorganisant et en fusionnant les opérations de dessin. Pour le traitement multithread, le moteur de rendu peut désormais également utiliser le multithreading sur plusieurs cœurs de processeur pour effectuer certaines tâches.
Android 4.3 améliore également le rendu des formes et du texte. Les formes telles que les cercles et les rectangles arrondis sont désormais affichées avec une qualité supérieure et de manière plus efficace. Les optimisations pour le texte incluent une meilleure qualité de rendu lors de la mise à l'échelle du texte et un rendu plus rapide des ombres portées.
L'amélioration de l'allocation de la mémoire tampon de la fenêtre permet d'accélérer l'allocation de la mémoire tampon d'image pour vos applications, ce qui réduit le temps nécessaire pour démarrer le rendu lorsque vous créez une fenêtre.
Pour des graphismes de hautes performances, Android 4.3 prend en charge OpenGL ES 3.0 et le rend accessible aux applications via le framework et les API natives. Sur les appareils compatibles, le moteur de rendu 2D avec accélération matérielle exploite OpenGL ES 3.0 pour optimiser la gestion des textures et améliorer la fidélité du rendu des dégradés.
OpenGL ES 3.0 pour les graphismes haute performance
Android 4.3 est compatible avec Khronos OpenGL ES 3.0, ce qui offre aux jeux et aux autres applications les fonctionnalités graphiques 2D et 3D les plus performantes sur les appareils compatibles. Vous pouvez tirer parti d'OpenGL ES 3.0 et des extensions EGL associées à l'aide d'API de framework ou de liaisons d'API natives via le kit de développement natif (NDK) Android.
Les nouvelles fonctionnalités clés fournies dans OpenGL ES 3.0 incluent l'accélération des effets visuels avancés, la compression de texture ETC2/EAC de haute qualité en tant que fonctionnalité standard, une nouvelle version du langage de nuanceur GLSL ES avec prise en charge des entiers et des nombres à virgule flottante 32 bits, le rendu de texture avancé, ainsi que des formats de taille et de tampon de rendu normalisés.
Vous pouvez utiliser les API OpenGL ES 3.0 pour créer des graphiques très complexes et très efficaces qui s'exécutent sur une gamme d'appareils Android compatibles. Vous pouvez également prendre en charge un seul format de compression de texture standard sur ces appareils.
OpenGL ES 3.0 est une fonctionnalité facultative qui dépend du matériel graphique sous-jacent. Cette fonctionnalité est déjà disponible sur les appareils Nexus 7 (2013), Nexus 4 et Nexus 10.
Connectivité Bluetooth améliorée
Connectivité avec les appareils et capteurs Bluetooth Smart
Vous pouvez désormais concevoir et créer des applications qui interagissent avec la dernière génération d'appareils et de capteurs de petite taille et à faible consommation d'énergie qui utilisent la technologie Bluetooth Smart.
Android 4.3 introduit la prise en charge intégrée de la plate-forme pour Bluetooth Smart Ready dans le rôle central et fournit un ensemble standard d'API que les applications peuvent utiliser pour détecter les appareils à proximité, interroger les services GATT et lire/écrire des caractéristiques.
Grâce aux nouvelles API, vos applications peuvent rechercher efficacement les appareils et services qui vous intéressent. Pour chaque appareil, vous pouvez rechercher les services GATT compatibles par UUID et gérer les connexions par ID de l'appareil et intensité du signal. Vous pouvez vous connecter à un serveur GATT hébergé sur l'appareil et lire ou écrire des caractéristiques, ou enregistrer un écouteur pour recevoir des notifications chaque fois que ces caractéristiques changent.
Vous pouvez implémenter la prise en charge de n'importe quel profil GATT. Vous pouvez lire ou écrire des caractéristiques standards, ou ajouter la prise en charge de caractéristiques personnalisées si nécessaire. Votre application peut fonctionner en tant que client ou serveur, et peut transmettre et recevoir des données dans les deux modes. Les API étant génériques, vous pourrez prendre en charge les interactions avec divers appareils tels que des tags de proximité, des montres, des podomètres, des manettes de jeu, des télécommandes, des appareils de santé et plus encore.
La compatibilité avec la technologie Bluetooth Smart Ready est déjà disponible sur les appareils Nexus 7 (2013) et Nexus 4, et sera compatible avec un nombre croissant d'appareils compatibles avec Android dans les mois à venir.
Profil AVRCP 1.3
Android 4.3 est compatible avec le Bluetooth AVRCP 1.3 intégré, ce qui permet à vos applications de prendre en charge des interactions plus riches avec les appareils multimédias de streaming à distance. Les applications telles que les lecteurs multimédias peuvent tirer parti d'AVRCP 1.3 via les API client de télécommande introduites dans Android 4.0. En plus d'exposer les commandes de lecture sur les appareils à distance connectés via Bluetooth, les applications peuvent désormais transmettre des métadonnées telles que le nom du titre, le compositeur et d'autres types de métadonnées multimédias.
La compatibilité de la plate-forme avec AVRCP 1.3 repose 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 compatibles avec Android qui offrent la fonctionnalité A2DP/AVRCP.
Compatibilité avec les profils limités
Android 4.3 étend la fonctionnalité multi-utilisateur aux tablettes avec des profils limités, une nouvelle façon de gérer les utilisateurs et leurs fonctionnalités sur un seul appareil. Avec les profils restreints, les propriétaires de tablettes peuvent rapidement configurer des environnements distincts pour chaque utilisateur, et gérer des restrictions plus précises dans les applications disponibles dans ces environnements. Les profils limités sont parfaits pour les amis et la famille, les utilisateurs invités, les bornes, les appareils de point de vente, etc.
Chaque profil limité offre un espace isolé et sécurisé avec son propre espace de stockage local, ses propres écrans d'accueil, ses propres widgets et ses propres paramètres. Contrairement aux utilisateurs, les profils sont créés à partir de l'environnement du propriétaire de la tablette, en fonction des applications installées et des comptes système du propriétaire. Le propriétaire contrôle les applications installées qui sont activées dans le nouveau profil. L'accès aux comptes du propriétaire est désactivé par défaut.
Les applications qui doivent accéder aux comptes du propriétaire (pour la connexion, les préférences ou d'autres utilisations) peuvent s'activer en déclarant un attribut de fichier manifeste. Le propriétaire peut examiner et gérer ces applications à partir des paramètres de configuration du profil.
Pour les développeurs, les profils restreints offrent une nouvelle façon de proposer plus de valeur et de contrôle à vos utilisateurs. Vous pouvez implémenter des restrictions d'application (contrôles de contenu ou de fonctionnalités compatibles avec votre application) et les annoncer aux propriétaires de tablettes dans les paramètres de configuration du profil.
Vous pouvez ajouter des restrictions d'application directement aux paramètres de configuration du profil à l'aide de types booléens, de sélection et de multisélection prédéfinis. Si vous souhaitez plus de flexibilité, vous pouvez même lancer votre propre UI à partir des paramètres de configuration du profil pour proposer n'importe quel type de restriction.
Lorsque votre application s'exécute dans un profil, elle peut vérifier les restrictions configurées par le propriétaire et les appliquer de manière appropriée. Par exemple, une application multimédia peut proposer une restriction permettant au propriétaire de définir un niveau de maturité pour le profil. Au moment de l'exécution, l'application peut vérifier le paramètre de maturité, puis gérer le contenu en fonction du niveau de maturité souhaité.
Si votre application n'est pas conçue pour être utilisée dans des profils limités, vous pouvez désactiver complètement cette fonctionnalité afin qu'elle ne puisse pas être activée dans un profil limité.
Fonctionnalités de position et de capteur optimisées
Les services Google Play proposent des API de localisation avancées que vous pouvez utiliser dans vos applications. Android 4.3 optimise ces API sur les appareils compatibles grâce à de nouvelles fonctionnalités matérielles et logicielles qui réduisent l'utilisation de la batterie.
Le géorepérage matériel optimise l'efficacité énergétique en effectuant le calcul de la position dans le matériel de l'appareil, et non dans le logiciel. Sur les appareils compatibles avec le géorepérage matériel, les API de géorepérage des services Google Play pourront tirer parti de cette optimisation pour économiser de la batterie lorsque l'appareil est en mouvement.
Le mode Recherche Wi-Fi uniquement est une nouvelle optimisation de la plate-forme qui permet aux utilisateurs de laisser la recherche Wi-Fi activée sans se connecter à un réseau Wi-Fi, afin d'améliorer la précision de la localisation tout en économisant la batterie. Les applications qui dépendent du Wi-Fi pour les services de localisation peuvent désormais demander aux utilisateurs d'activer le mode "Scan only" (Analyse uniquement) dans les paramètres avancés du Wi-Fi. Le mode de recherche Wi-Fi uniquement ne dépend pas du matériel de l'appareil et est disponible dans la plate-forme Android 4.3.
Les nouveaux types de capteurs permettent aux applications de mieux gérer les mesures des capteurs. Un vecteur de rotation de jeu permet aux développeurs de jeux de détecter la rotation de l'appareil sans avoir à se soucier des interférences magnétiques. Les capteurs gyroscope non étalonné et magnétomètre non étalonné envoient des mesures brutes ainsi que des biais estimés aux applications.
Les nouvelles fonctionnalités matérielles sont déjà disponibles sur les appareils Nexus 7 (2013) et Nexus 4. Tout fabricant d'appareils ou fournisseur de chipsets peut les intégrer à ses appareils.
Nouvelles fonctionnalités pour les nouveaux médias
Framework DRM modulaire
Pour répondre aux besoins de la prochaine génération de services multimédias, Android 4.3 introduit un framework DRM modulaire qui permet aux développeurs d'applications multimédias d'intégrer plus facilement la DRM dans leurs propres protocoles de streaming, tels que MPEG DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1).
Grâce à une combinaison de nouvelles API et d'améliorations des API existantes, le framework DRM multimédia fournit un ensemble de services intégré pour gérer les licences et le provisionnement, accéder aux codecs de bas niveau et décoder les données multimédias chiffrées. Une nouvelle API MediaExtractor vous permet d'obtenir les métadonnées PSSH pour les contenus multimédias DASH. Les applications qui utilisent le framework DRM multimédia gèrent la communication réseau avec un serveur de licences et gèrent le streaming de données chiffrées à partir d'une bibliothèque de contenus.
Encodeur VP8
Android 4.3 introduit la prise en charge intégrée de l'encodage VP8, accessible depuis le framework et les API natives. Pour les applications qui utilisent des API natives, la plate-forme inclut des en-têtes d'extension OpenMAX 1.1.2 pour prendre en charge les profils et niveaux VP8. La prise en charge de l'encodage VP8 inclut des paramètres pour le débit cible, le contrôle de débit, la fréquence d'images, la partitionnement de jetons, la résilience aux erreurs, la reconstruction et les filtres en boucle. L'API de la plate-forme introduit la prise en charge de l'encodeur VP8 dans une gamme de formats, ce qui vous permet de profiter du meilleur format pour votre contenu.
L'encodage VP8 est disponible en logiciel sur tous les appareils compatibles exécutant Android 4.3. Pour des performances optimales, la plate-forme prend également en charge l'encodage VP8 accéléré par matériel sur les appareils compatibles.
Encodage vidéo à partir d'une surface
À partir d'Android 4.3, vous pouvez utiliser une surface comme entrée d'un encodeur vidéo. Par exemple, vous pouvez désormais diriger un flux à partir d'une surface OpenGL ES vers l'encodeur, au lieu d'avoir à copier entre les tampons.
Muxeur multimédia
Les applications peuvent utiliser de nouvelles API de multiplexeur multimédia pour combiner des flux audio et vidéo élémentaires en un seul fichier de sortie. Actuellement, les applications peuvent multiplexer un seul flux audio MPEG-4 et un seul flux vidéo MPEG-4 dans un fichier de sortie MPEG-4 unique. Les nouvelles API correspondent aux API de démultiplexage multimédia introduites dans Android 4.2.
Progression de la lecture et contrôle de la vitesse dans les clients de télécommande
Depuis Android 4.0, les lecteurs multimédias et les applications similaires peuvent proposer des commandes de lecture à partir de clients de télécommande tels que l'écran de verrouillage de l'appareil, les notifications et les appareils à distance connectés via Bluetooth. À partir d'Android 4.3, ces applications peuvent également exposer la progression et la vitesse de la lecture via leurs clients de télécommande, et recevoir des commandes pour accéder à une position de lecture spécifique.
Nouvelles façons de créer des applications attrayantes
Accès aux notifications
Les notifications sont depuis longtemps une fonctionnalité populaire d'Android, car elles permettent aux utilisateurs de voir les informations et les mises à jour du système au même endroit. Désormais, sous Android 4.3, les applications peuvent observer le flux de notifications avec l'autorisation de l'utilisateur et afficher les notifications de la manière qu'il souhaite, y compris en les envoyant aux appareils à proximité connectés via Bluetooth.
Vous pouvez accéder aux notifications via de nouvelles API qui vous permettent d'enregistrer un service d'écouteur de notifications et, avec l'autorisation de l'utilisateur, de recevoir les notifications telles qu'elles s'affichent dans la barre d'état. Les notifications vous sont envoyées intégralement, avec tous les détails sur l'application d'origine, l'heure de publication, l'affichage et le style du contenu, ainsi que la priorité. Vous pouvez évaluer les champs d'intérêt dans les notifications, traiter ou ajouter du contexte à partir de votre application, et les acheminer pour les afficher de la manière de votre choix.
La nouvelle API vous envoie des rappels lorsqu'une notification est ajoutée, mise à jour et supprimée (soit parce que l'utilisateur l'a ignorée, soit parce que l'application d'origine l'a retirée). Vous pourrez lancer tous les intents associés à la notification ou à ses actions, ainsi que la fermer du système, ce qui permettra à votre application de fournir une interface utilisateur complète pour les notifications.
Les utilisateurs restent maîtres de la liste des applications pouvant recevoir des notifications. Ils peuvent consulter les paramètres à tout moment pour voir quelles applications ont accès aux notifications et activer ou désactiver l'accès selon les besoins. L'accès aux notifications est désactivé par défaut. Les applications peuvent utiliser un nouvel intent pour rediriger l'utilisateur directement vers les paramètres afin d'activer le service d'écouteur après l'installation.
Afficher les superpositions
Vous pouvez désormais créer des superpositions transparentes au-dessus des vues et des ViewGroups pour afficher une hiérarchie de vues temporaire ou des effets d'animation temporaires sans perturber la hiérarchie de mise en page sous-jacente. Les superpositions sont particulièrement utiles lorsque vous souhaitez créer des animations, par exemple faire glisser une vue en dehors de son conteneur ou faire glisser des éléments à l'écran sans affecter la hiérarchie des vues.
Mode de mise en page des contours optiques
Un nouveau mode de mise en page vous permet de gérer le positionnement des vues dans les ViewGroups en fonction de leurs limites optiques plutôt que de leurs limites de découpe. Les limites de clip représentent la limite extérieure réelle d'un widget, tandis que les nouvelles limites optiques décrivent l'emplacement du widget tel qu'il apparaît, dans les limites du clip. Vous pouvez utiliser le mode de mise en page des limites optiques pour aligner correctement les widgets qui utilisent des effets visuels externes tels que les ombres et les halos.
Types d'animations de rotation personnalisées
Les applications peuvent désormais définir les types d'animation de sortie et d'entrée utilisés sur une fenêtre lorsque l'appareil est pivoté. Vous pouvez définir les propriétés de la fenêtre pour activer le montage, le fondu enchaîné ou la rotation standard de la fenêtre. Le système utilise les types d'animation personnalisés lorsque la fenêtre est en plein écran et qu'elle n'est pas recouverte par d'autres fenêtres.
Modes d'orientation de l'écran
Les applications peuvent définir de nouveaux modes d'orientation pour les activités afin de s'assurer qu'elles s'affichent dans la bonne orientation lorsque l'appareil est retourné. De plus, les applications peuvent utiliser un nouveau mode pour verrouiller l'écran dans son orientation actuelle. Cela est utile pour les applications qui utilisent l'appareil photo et qui souhaitent désactiver la rotation lors de l'enregistrement d'une vidéo.
Intent pour gérer les réponses rapides
Android 4.3 introduit un nouvel intent public qui permet à n'importe quelle application de gérer les réponses rapides, c'est-à-dire les messages texte envoyés par l'utilisateur en réponse à un appel entrant, sans avoir à prendre l'appel ni à déverrouiller l'appareil. Votre application peut écouter l'intent et envoyer le message à l'appelant via votre système de messagerie. L'intent inclut le destinataire (appelant) ainsi que le message lui-même.
Assistance pour les utilisateurs internationaux
Améliorations apportées à la lecture RTL
Android 4.3 inclut des améliorations des performances en mode RTL et une compatibilité plus large avec le mode RTL dans les widgets d'UI du framework, y compris ProgressBar/Spinner et ExpandableListView. Plus d'informations de débogage visibles via l'outil uiautomatorviewer
. De plus, davantage de composants d'UI système sont désormais compatibles avec l'écriture RTL, comme les notifications, la barre de navigation et la barre d'action.
Pour offrir une meilleure expérience système dans les scripts RTL, davantage d'applications système par défaut sont désormais compatibles avec les mises en page RTL, y compris le lanceur d'applications, les paramètres rapides, le téléphone, les contacts, l'assistant de configuration, l'horloge, les téléchargements, etc.
Utilitaires de localisation
Android 4.3 inclut également de nouvelles utilitaires et API permettant de créer de meilleures chaînes RTL et de tester vos UI localisées. Une nouvelle classe BidiFormatter fournit une API simple pour encapsuler des chaînes Unicode, de sorte que les données de script RTL s'affichent comme prévu dans les messages de paramètres régionaux LTR et inversement. Pour vous permettre d'utiliser cet utilitaire plus largement dans vos applications, l'API BidiFormatter est désormais également disponible pour les versions antérieures de la plate-forme via le package d'assistance du SDK Android.
Pour vous aider à gérer la mise en forme des dates dans différentes langues, Android 4.3 inclut une nouvelle méthode getBestDateTimePattern() qui génère automatiquement la forme localisée la plus adaptée d'une date UTS Unicode pour une langue que vous spécifiez. C'est un moyen pratique d'offrir une expérience plus localisée à vos utilisateurs.
Pour vous aider à tester plus facilement votre application dans d'autres langues, Android 4.3 introduit les pseudo-langues en tant que nouvelle option pour les développeurs. Les pseudo-paramètres régionaux simulent la langue, l'écriture et les caractéristiques d'affichage associées à un paramètre régional ou à un groupe de langues. Actuellement, vous pouvez effectuer des tests avec une pseudo-locale pour l'anglais avec accents, ce qui vous permet de voir comment votre UI fonctionne avec les accents et les caractères utilisés dans diverses langues européennes.
Accessibilité et UI Automation
À partir d'Android 4.3, les services d'accessibilité peuvent observer et filtrer les événements de touche, par exemple pour gérer les raccourcis clavier ou fournir une parité de navigation avec la saisie gestuelle. Le service reçoit les événements et peut les traiter si nécessaire avant qu'ils ne soient transmis au système ou à d'autres applications installées.
Les services d'accessibilité peuvent déclarer de nouveaux attributs de capacité pour décrire ce que leurs services peuvent faire et quelles fonctionnalités de la plate-forme ils utilisent. Par exemple, ils peuvent déclarer la possibilité de filtrer les événements de touche, de récupérer le contenu de la fenêtre, d'activer l'exploration par commande tactile ou d'activer les fonctionnalités d'accessibilité Web. Dans certains cas, les services doivent déclarer un attribut de capacité avant de pouvoir accéder aux fonctionnalités de la plate-forme associées. Le système utilise les attributs de capacité du service pour générer une boîte de dialogue d'acceptation pour les utilisateurs afin qu'ils puissent voir et accepter les fonctionnalités avant le lancement.
S'appuyant sur le framework d'accessibilité d'Android 4.3, un nouveau framework d'automatisation de l'UI permet aux tests d'interagir avec l'UI de l'appareil en simulant les actions des utilisateurs et en inspectant le contenu de l'écran. Grâce au framework d'automatisation de l'UI, vous pouvez effectuer des opérations de base, définir la rotation de l'écran, générer des événements d'entrée, prendre des captures d'écran, et bien plus encore. Il s'agit d'un moyen efficace d'automatiser les tests dans des scénarios utilisateur réalistes, y compris des actions ou des séquences couvrant plusieurs applications.
Entreprise et sécurité
Configuration Wi-Fi pour les réseaux WPA2-Enterprise
Les applications peuvent désormais configurer les identifiants Wi-Fi dont elles ont besoin pour se connecter aux points d'accès d'entreprise WPA2. Les développeurs peuvent utiliser de nouvelles API pour configurer les identifiants EAP (Extensible Authentication Protocol) et EAP encapsulé (Phase 2) pour les méthodes d'authentification utilisées dans l'entreprise. Les applications autorisées à accéder au Wi-Fi et à le modifier peuvent configurer des identifiants d'authentification pour diverses méthodes d'authentification EAP et de phase 2.
Bac à sable Android renforcé avec SELinux
Android utilise désormais SELinux, un système de contrôle d'accès obligatoire (MAC) dans le noyau Linux pour renforcer le bac à sable d'application basé sur l'UID. Cela protège le système d'exploitation contre les failles de sécurité potentielles.
Améliorations apportées à KeyChain
L'API KeyChain fournit désormais une méthode permettant aux applications de confirmer que les clés à l'échelle du système sont liées à une racine de confiance matérielle pour l'appareil. Cela permet de créer ou de stocker des clés privées qui ne peuvent pas être exportées depuis l'appareil, même en cas de compromission du root ou du kernel.
Fournisseur Android Keystore
Android 4.3 introduit un fournisseur Keystore et des API qui permettent aux applications de créer des clés à usage exclusif. À l'aide des API, les applications peuvent créer ou stocker des clés privées qui ne peuvent pas être vues ni utilisées par d'autres applications, et qui peuvent être ajoutées au keystore sans aucune interaction utilisateur.
Le fournisseur de keystore offre les mêmes avantages de sécurité que l'API KeyChain pour les identifiants à l'échelle du système, tels que la liaison d'identifiants à un appareil. Les clés privées du keystore ne peuvent pas être exportées de l'appareil.
Limiter Setuid à partir d'applications Android
La partition /system
est désormais montée nosuid
pour les processus créés par zygote, ce qui empêche les applications Android d'exécuter des programmes setuid
. Cela réduit la surface d'attaque racine et la probabilité de failles de sécurité potentielles.
Nouvelles méthodes d'analyse des performances
Journalisation Systrace améliorée
Android 4.3 est compatible avec une version améliorée de l'outil Systrace, qui est plus facile à utiliser et qui vous permet d'accéder à davantage de types d'informations pour profiler les performances de votre application. Vous pouvez désormais collecter des données de trace à partir des modules matériels, des fonctions du noyau et de la VM Dalvik, y compris le garbage collection, le chargement de ressources, etc.
Android 4.3 inclut également de nouvelles API Trace que vous pouvez utiliser dans vos applications pour marquer des sections de code spécifiques à tracer à l'aide des événements de début/fin Systrace. Lorsque les sections de code marquées sont exécutées, le système écrit les événements de début/fin dans le journal de trace. L'impact sur les performances de votre application est minimal. Les temps indiqués vous donnent donc une vue précise de ce que fait votre application.
Vous pouvez visualiser les événements spécifiques à l'application dans une chronologie dans le fichier de sortie Systrace et analyser les événements dans le contexte d'autres données de trace du noyau et de l'espace utilisateur. En plus des balises Systrace existantes, les sections d'application personnalisées peuvent vous offrir de nouvelles façons de comprendre les performances et le comportement de vos applications.
Profilage du GPU à l'écran
Android 4.3 ajoute de nouvelles options pour les développeurs afin de vous aider à analyser les performances de votre application et à identifier les problèmes de rendu sur n'importe quel appareil ou émulateur.
Dans l'option Profile GPU rendering (Rendu GPU du profil), vous pouvez désormais visualiser le frame rate effectif de votre application à l'écran, pendant son exécution. Vous pouvez choisir d'afficher les données de profilage sous forme de graphiques à barres ou à courbes à l'écran, avec des couleurs indiquant le temps passé à créer des commandes de dessin (bleu), à les émettre (orange) et à attendre qu'elles soient exécutées (jaune). Le système met à jour les graphiques à l'écran en continu, en affichant un graphique pour chaque activité visible, y compris la barre de navigation et la barre de notification.
Une ligne verte met en évidence le seuil de 16 ms pour les opérations de rendu. Vous pouvez ainsi évaluer la fréquence d'images effective de votre application par rapport à un objectif de 60 FPS (car 1/60e de seconde équivaut à environ 16 ms). Si vous voyez des opérations qui croisent la ligne verte, vous pouvez les analyser plus en détail à l'aide de Systrace et d'autres outils.
Sur les appareils équipés d'Android 4.2 ou version ultérieure, les options pour les développeurs sont masquées par défaut. Vous pouvez les afficher à tout moment en appuyant sept fois sur Paramètres > À propos du téléphone > Numéro de version sur n'importe quel appareil Android compatible.
Avertissement StrictMode pour les URI de fichiers
La dernière nouveauté de l'outil StrictMode est une contrainte de stratégie qui émet un avertissement lorsque votre application expose un URI file://
au système ou à une autre application. Dans certains cas, l'application destinataire peut ne pas avoir accès au chemin d'URI file://
. Par conséquent, lorsque vous partagez des fichiers entre des applications, un URI content://
doit être utilisé (avec l'autorisation appropriée). Cette nouvelle règle vous aide à détecter et à corriger ces cas. Si vous recherchez un moyen pratique de stocker et d'exposer des fichiers à d'autres applications, essayez d'utiliser le fournisseur de contenu FileProvider
disponible dans la bibliothèque Support.
Android 4.2
Bienvenue dans Android 4.2, la dernière version de Jelly Bean.
Android 4.2 offre des optimisations de performances, une interface utilisateur système actualisée et de nouvelles fonctionnalités pour les utilisateurs et les développeurs. Ce document donne un aperçu des nouveautés pour les développeurs.
Pour en savoir plus sur les nouvelles API pour les développeurs, consultez la documentation sur les API Android 4.2.
Pour en savoir plus sur les nouvelles fonctionnalités Jelly Bean pour les utilisateurs, consultez le site www.android.com.
Plus rapide, plus fluide, plus réactif
Android 4.2 s'appuie sur les améliorations de performances déjà incluses dans Jelly Bean (synchronisation vsync, triple tampon, latence tactile réduite et boost de l'entrée du processeur) et ajoute de nouvelles optimisations qui rendent Android encore plus rapide.
Les améliorations apportées au moteur de rendu 2D accéléré par le matériel rendent les animations courantes telles que le défilement et le balayage plus fluides et plus rapides. En particulier, le dessin est optimisé pour les calques, le recadrage et certaines formes (rectangles arrondis, cercles et ovales).
Diverses optimisations de rendu WebView rendent le défilement des pages Web plus fluide, sans à-coups ni retards.
Le calcul RenderScript d'Android est la première plate-forme de calcul portée pour s'exécuter directement sur un GPU d'appareil mobile. Il exploite automatiquement les ressources de calcul GPU dans la mesure du possible, ce qui améliore considérablement les performances pour le traitement graphique et des images. Toute application utilisant RenderScript sur un appareil compatible peut bénéficier immédiatement de cette intégration du GPU sans recompilation.
Interface utilisateur affinée et actualisée
Android 4.2 améliore l'expérience utilisateur Jelly Bean et apporte des modèles d'UI Android familiers, tels que la barre d'état, la barre système et la fenêtre de notifications, à toutes les tablettes.
La barre d'état est désormais située en haut de tous les écrans, avec un accès déroulant aux notifications et un nouveau menu Paramètres rapides. La barre système familière s'affiche en bas, avec des boutons facilement accessibles de chaque côté. Le barre d'applications est également disponible sur toutes les tailles d'écran.
Une tablette, plusieurs utilisateurs
Plusieurs utilisateurs peuvent désormais partager une même tablette Android, et chacun d'eux a accès à un espace utilisateur dédié. Les utilisateurs peuvent passer à leurs espaces d'un simple geste depuis l'écran de verrouillage.
Sur un appareil multi-utilisateur, Android attribue à chaque utilisateur un environnement distinct, y compris un espace de stockage sur carte SD émulée spécifique à l'utilisateur. Les utilisateurs disposent également de leurs propres écrans d'accueil, widgets, comptes, paramètres, fichiers et applications, et le système les sépare. Tous les utilisateurs partagent les services système de base, mais le système garantit que les applications et les données de chaque utilisateur restent isolées. En effet, chacun des utilisateurs dispose de son propre appareil Android.
Les utilisateurs peuvent installer et désinstaller des applications à tout moment dans leurs propres environnements. Pour économiser de l'espace de stockage, Google Play ne télécharge un APK que s'il n'est pas déjà installé par un autre utilisateur sur l'appareil. Si l'application est déjà installée, Google Play enregistre l'installation du nouvel utilisateur de la manière habituelle, mais ne télécharge pas une autre copie de l'application. Plusieurs utilisateurs peuvent exécuter la même copie d'un APK, car le système crée une instance pour chaque utilisateur, y compris un répertoire de données spécifique à l'utilisateur.
Pour les développeurs, la compatibilité multi-utilisateur est transparente : vos applications n'ont pas besoin d'effectuer d'opérations spéciales pour s'exécuter normalement dans un environnement multi-utilisateur, et aucune modification n'est requise dans vos APK existants ou publiés. Le système gère votre application dans chaque espace utilisateur comme dans un environnement mono-utilisateur.
De nouvelles façons d'engager les utilisateurs
Widgets pour l'écran de verrouillage
Sous Android 4.2, les utilisateurs peuvent placer des widgets d'application directement sur leur écran de verrouillage pour accéder instantanément au contenu de leurs applications préférées sans avoir à déverrouiller leur appareil. Les utilisateurs peuvent ajouter jusqu'à cinq widgets d'écran de verrouillage, en choisissant parmi les widgets fournis par les applications installées. L'écran de verrouillage affiche chaque widget dans son propre panneau, ce qui permet aux utilisateurs de balayer l'écran de gauche à droite pour afficher différents panneaux et leurs widgets.
Comme tous les widgets d'application, les widgets de l'écran de verrouillage peuvent afficher n'importe quel type de contenu et accepter une interaction directe avec l'utilisateur. Ils peuvent être entièrement autonomes, comme un widget qui propose des commandes pour lire de la musique, ou permettre aux utilisateurs d'accéder directement à une activité de votre application, après avoir déverrouillé au fur et à mesure, si nécessaire.
Pour les développeurs, les widgets de l'écran de verrouillage sont un excellent moyen d'engager les utilisateurs. Elles vous permettent de présenter vos contenus aux utilisateurs dans un emplacement qu'ils verront souvent, et vous offrent plus d'opportunités de les rediriger directement vers votre application.
Vous pouvez profiter de cette nouvelle fonctionnalité en créant un widget d'application ou en étendant un widget d'écran d'accueil existant. Si votre application inclut déjà des widgets d'écran d'accueil, vous pouvez les étendre à l'écran de verrouillage avec un minimum de modifications. Pour offrir aux utilisateurs une expérience optimale, vous pouvez mettre à jour le widget pour qu'il utilise toute la zone de l'écran de verrouillage lorsqu'elle est disponible et le redimensionner si nécessaire sur les écrans plus petits. Vous pouvez également ajouter des fonctionnalités à vos widgets qui peuvent être particulièrement utiles ou pratiques sur l'écran de verrouillage.
Daydream
Daydream est un mode économiseur d'écran interactif qui se lance lorsque l'appareil d'un utilisateur est sur un socle ou en charge. Dans ce mode, le système lance un rêve éveillé (un service de contenu à distance fourni par une application installée) comme économiseur d'écran de l'appareil. Un utilisateur peut activer Daydream dans l'application Paramètres, puis choisir le rêve éveillé à afficher.
Les Daydreams combinent les meilleures fonctionnalités des fonds d'écran animés et des widgets de l'écran d'accueil, mais ils sont plus puissants. Elles vous permettent de proposer n'importe quel type de contenu dans un contexte complètement nouveau, avec des interactions utilisateur telles que feuilleter des photos, lire des contenus audio ou vidéo, ou accéder directement à votre application d'un simple geste.
Étant donné que les Daydreams peuvent démarrer automatiquement lorsqu'un appareil est en charge ou sur une station d'accueil, elles permettent également à votre application de prendre en charge de nouveaux types d'expériences utilisateur, tels que le mode leanback ou d'exposition, le mode démonstration ou kiosque, et le mode "attract", le tout sans matériel spécial.
Les Daydreams sont semblables aux activités et peuvent faire tout ce que les activités peuvent faire, du rendu d'une hiérarchie d'UI (sans utiliser RemoteViews) au dessin direct à l'aide de Canvas, OpenGL, SurfaceTexture, etc. Ils peuvent lire des vidéos et de l'audio, et même accepter des interactions directes avec l'utilisateur. Toutefois, les rêveries ne sont pas des activités. Elles n'affectent donc pas la pile "Retour", n'apparaissent pas dans "Récents" et ne peuvent pas être lancées directement depuis votre application.
L'implémentation d'un rêve éveillé est simple. Vous pouvez utiliser les composants et les ressources d'UI que vous avez déjà créés pour d'autres parties de votre application. Vous pouvez fournir plusieurs rêves éveillés dans votre application et proposer des contenus et des paramètres d'affichage distincts pour chacun d'eux.
Compatibilité avec les écrans externes
Android 4.2 introduit la compatibilité de la plate-forme avec les écrans externes, qui va bien au-delà du mirroring. Les applications peuvent désormais cibler du contenu unique sur un ou plusieurs écrans connectés à un appareil Android. Les applications peuvent s'appuyer sur cela pour proposer aux utilisateurs de nouveaux types d'interactions et d'expériences de divertissement.
Gestionnaire d'affichage
Les applications interagissent avec les écrans via un nouveau service système de gestion d'affichage. Votre application peut énumérer les écrans et vérifier les fonctionnalités de chacun, y compris la taille, la densité, le nom à afficher, l'ID, la compatibilité avec la vidéo sécurisée, etc. Votre application peut également recevoir des rappels lorsque des écrans sont ajoutés ou supprimés, ou lorsque leurs fonctionnalités changent, afin de mieux gérer votre contenu sur les écrans externes.
Fenêtre de présentation
Pour faciliter l'affichage de contenu sur un écran externe, le framework fournit un nouvel objet d'UI appelé Présentation, un type de boîte de dialogue qui représente une fenêtre pour le contenu de votre application sur un écran externe spécifique. Votre application indique simplement l'écran à utiliser, un thème pour la fenêtre et tout contenu unique à afficher. La présentation gère l'inflation des ressources et l'affichage de votre contenu en fonction des caractéristiques de l'écran ciblé.
Une présentation donne à votre application un contrôle total sur la fenêtre d'affichage à distance et son contenu, et vous permet de la gérer en fonction des événements d'entrée utilisateur tels que les pressions sur les touches, les gestes, les événements de mouvement, etc. Vous pouvez utiliser tous les outils normaux pour créer une UI et afficher du contenu dans la présentation, de la création d'une hiérarchie de vues arbitraire à l'utilisation de SurfaceView ou de SurfaceTexture pour dessiner directement dans la fenêtre pour le contenu en streaming ou les aperçus de l'appareil photo.
Sélection de l'affichage préféré
Lorsque plusieurs écrans externes sont disponibles, vous pouvez créer autant de présentations que nécessaire, chacune affichant un contenu unique sur un écran spécifique. Dans de nombreux cas, vous ne souhaitez peut-être afficher votre contenu que sur un seul écran externe, mais toujours celui qui est le plus adapté au contenu de la présentation. Pour ce faire, le système peut aider votre application à choisir le meilleur écran à utiliser.
Pour trouver l'écran le plus adapté, votre application peut interroger le gestionnaire d'affichage pour obtenir l'écran de présentation préféré du système et recevoir des rappels lorsque cet écran change. Vous pouvez également utiliser le service de routeur multimédia, étendu dans Android 4.2, pour recevoir des notifications lorsqu'un chemin vidéo système change. Votre application peut afficher du contenu par défaut dans l'activité principale jusqu'à ce qu'un écran de présentation préféré soit associé. Elle peut alors passer automatiquement au contenu de la présentation sur l'écran préféré. Vos applications peuvent également utiliser MediaRouteActionProvider et MediaRouteButton du routeur multimédia pour proposer une UI de sélection d'affichage standard.
Contenu protégé
Pour les applications qui gèrent du contenu protégé ou chiffré, l'API Display indique désormais les fonctionnalités vidéo sécurisées des écrans connectés. Votre application interroge un écran pour savoir s'il propose une sortie vidéo sécurisée ou fournit des tampons graphiques protégés, puis choisit le flux de contenu ou le décodage approprié pour rendre le contenu visible. Pour une sécurité supplémentaire sur les objets SurfaceView, votre application peut définir un indicateur de sécurité pour indiquer que le contenu ne doit jamais apparaître sur les captures d'écran ni sur une sortie d'affichage non sécurisée, même en mode miroir.
Affichage sans fil
À partir d'Android 4.2, les utilisateurs d'appareils compatibles peuvent se connecter à un écran externe via Wi-Fi à l'aide de Wi-Fi Display (une solution d'affichage sans fil point à point conforme au programme de certification Miracast™). Lorsqu'un écran sans fil est connecté, les utilisateurs peuvent diffuser n'importe quel type de contenu sur le grand écran, y compris des photos, des jeux, des cartes, etc.
Les applications peuvent utiliser les écrans sans fil de la même manière que les autres écrans externes, sans effort supplémentaire. Le système gère la connexion réseau et diffuse votre présentation ou d'autres contenus d'application sur l'écran sans fil si nécessaire.
Prise en charge native des langues qui se lisent de droite à gauche
Android 4.2 offre une compatibilité native complète avec les mises en page RTL (de droite à gauche), y compris la mise en miroir de la mise en page. Grâce à la prise en charge native du mode RTL, vous pouvez offrir la même expérience d'application à tous vos utilisateurs, que leur langue utilise un script lu de droite à gauche ou de gauche à droite.
Lorsque l'utilisateur définit la langue du système sur un script de droite à gauche, le système met désormais en miroir automatiquement les mises en page de l'interface utilisateur de l'application et tous les widgets d'affichage, en plus de la mise en miroir bidirectionnelle des éléments de texte à la fois pour la lecture et la saisie de caractères.
Votre application peut utiliser la mise en miroir de la mise en page de droite à gauche avec un minimum d'effort. Si vous souhaitez que l'application soit en miroir, il vous suffit de déclarer un nouvel attribut dans le fichier manifeste de votre application et de remplacer toutes les propriétés de mise en page "gauche/droite" par de nouveaux équivalents "début/fin". Le système gère ensuite le mirroring et l'affichage de votre UI en fonction des besoins.
Pour un contrôle précis de l'interface utilisateur de votre application, Android 4.2 inclut de nouvelles API qui vous permettent de gérer l'orientation de la mise en page, l'orientation du texte, l'alignement du texte, la gravité et l'orientation des paramètres régionaux dans les composants View. Vous pouvez même créer des versions personnalisées de la mise en page, des drawables et d'autres ressources à afficher lorsqu'un script de droite à gauche est utilisé.
Pour vous aider à déboguer et optimiser vos mises en page personnalisées de droite à gauche, l'outil HierarchyViewer vous permet désormais d'afficher les propriétés de début/fin, l'orientation de la mise en page, l'orientation du texte et l'alignement du texte pour toutes les vues de la hiérarchie.
Améliorations pour les langues internationales
Android 4.2 inclut diverses optimisations de polices et de caractères pour les utilisateurs internationaux:
- Pour les utilisateurs coréens, une nouvelle police est disponible : Nanum (나눔글꼴) Gothic, une police Unicode conçue spécialement pour l'écriture coréenne.
- Amélioration de la compatibilité avec le texte vertical en japonais affiché dans les WebViews.
- Amélioration du crénage et du positionnement des polices par défaut en arabe, hébreu, thaï et indien.
Le clavier Android par défaut inclut également un ensemble de dictionnaires mis à jour:
- Dictionnaires améliorés pour le français (avec prise en charge des bigrammes), l'anglais et le russe
- Nouveaux dictionnaires en danois, grec, finnois, lituanien, letton, polonais, slovène, serbe, suédois et turc
Nouvelles façons de créer une interface utilisateur attrayante
Fragments imbriqués
Pour mieux contrôler vos composants d'UI et les rendre plus modulaires, Android 4.2 vous permet d'imbriquer des fragments dans des fragments. Pour tout fragment, un nouveau gestionnaire de fragments vous permet d'insérer d'autres fragments en tant que nœuds enfants dans la hiérarchie des vues.
Vous pouvez utiliser des fragments imbriqués de différentes manières, mais ils sont particulièrement utiles pour implémenter des composants d'UI dynamiques et réutilisables dans un composant d'UI qui est lui-même dynamique et réutilisable. Par exemple, si vous utilisez ViewPager pour créer des fragments qui balayent l'écran vers la gauche et la droite, vous pouvez désormais insérer des fragments dans chaque fragment du pager de vues.
Pour vous permettre de profiter plus largement des fragments imbriqués dans votre application, cette fonctionnalité est ajoutée à la dernière version de la bibliothèque Android Support.
Accessibilité
Le système aide désormais les services d'accessibilité à faire la distinction entre l'exploration tactile et les gestes d'accessibilité en mode exploration tactile. Lorsqu'un utilisateur appuie sur l'écran, le système informe le service qu'une interaction tactile générique a commencé. Il suit ensuite la vitesse de l'interaction tactile et détermine s'il s'agit d'une exploration tactile (lente) ou d'un geste d'accessibilité (rapide), puis informe le service. À la fin de l'interaction tactile, le système en informe le service.
Le système fournit une nouvelle option d'accessibilité globale qui permet à un service d'accessibilité d'ouvrir le menu "Réglages rapides" en fonction d'une action de l'utilisateur. Android 4.2 ajoute également un nouveau type de commentaires d'accessibilité pour les appareils braille.
Pour fournir aux services d'accessibilité des informations sur la signification des vues à des fins d'accessibilité, le framework fournit de nouvelles API permettant d'associer une vue en tant que libellé d'une autre vue. Le libellé de chaque vue est disponible pour les services d'accessibilité via AccessibilityNodeInfo.
Appareil photo amélioré avec HDR
Android 4.2 introduit une nouvelle interface et un nouveau pipeline matériel de la caméra pour améliorer les performances. Sur les appareils compatibles, les applications peuvent utiliser un nouveau mode scène de l'appareil photo HDR pour capturer une image à l'aide de techniques d'imagerie à plage dynamique élevée.
De plus, le framework fournit désormais une API permettant aux applications de vérifier si le son de l'obturateur de l'appareil photo peut être désactivé. Les applications peuvent ensuite permettre à l'utilisateur de désactiver le son ou de choisir un autre son à la place du son de l'obturateur standard, ce qui est recommandé.
Calcul RenderScript
Dans Android 4.2, RenderScript Compute introduit de nouvelles fonctionnalités de script, de nouveaux optimisations et une intégration directe du GPU pour des performances optimales dans les opérations de calcul.
Filterscript
Filterscript est un sous-ensemble de Renderscript axé sur le traitement optimisé des images sur un large éventail de chipsets d'appareils. Les développeurs peuvent écrire leurs opérations de traitement d'image en Filterscript à l'aide de l'API d'exécution Renderscript standard, mais dans des contraintes plus strictes qui garantissent une compatibilité plus large et une optimisation améliorée sur les processeurs, les GPU et les DSP.
Filterscript est idéal pour accélérer matériellement des opérations de traitement d'image et de calcul simples, telles que celles qui peuvent être écrites pour les nuanceurs de fragments OpenGL ES. Étant donné qu'il impose un ensemble de contraintes plus souples au matériel, vos opérations sont optimisées et accélérées sur davantage de types de chipsets d'appareils. N'importe quelle application ciblant le niveau d'API 17 ou supérieur peut utiliser Filterscript.
Fonctionnalités intrinsèques du script
Dans Android 4.2, Renderscript prend en charge un ensemble d'attributs intrinsèques de script, c'est-à-dire des primitives de filtrage préimplémentées accélérées pour réduire la quantité de code que vous devez écrire et vous assurer que votre application bénéficie du gain de performances maximal possible.
Les intrinsèques sont disponibles pour les mélanges, le flou, la matrice de couleurs, la convolution 3x3 et 5x5, la table de recherche par canal et la conversion d'un tampon YUV Android en RVB.
Groupes de scripts
Vous pouvez désormais créer des groupes de scripts Renderscript et les exécuter tous avec un seul appel, comme s'ils faisaient partie d'un seul script. Cela permet à Renderscript d'optimiser l'exécution des scripts d'une manière qu'il ne pourrait pas faire si les scripts étaient exécutés individuellement.
Les benchmarks de traitement d'image RenderScript s'exécutent sur différentes versions de la plate-forme Android (Android 4.0, 4.1 et 4.2) dans le processeur uniquement sur un appareil Galaxy Nexus.
Benchmarks de traitement d'image RenderScript comparant les opérations exécutées avec GPU + CPU à celles exécutées en CPU uniquement sur le même appareil Nexus 10.
Si vous disposez d'un graphe orienté acyclique d'opérations Renderscript à exécuter, vous pouvez utiliser une classe de création pour créer un groupe de scripts définissant les opérations. Au moment de l'exécution, Renderscript optimise l'ordre d'exécution et les connexions entre ces opérations pour optimiser les performances.
Améliorations continues de l'optimisation
Lorsque vous utilisez RenderScript pour les opérations de calcul, vos applications bénéficient des améliorations continues des performances et de l'optimisation dans le moteur RenderScript lui-même, sans aucun impact sur le code de votre application ni besoin de recompilation.
À mesure que l'optimisation s'améliore, vos opérations s'exécutent plus rapidement et sur davantage de chipsets, sans effort de votre part. Le graphique de droite met en évidence l'amélioration des performances apportée par les améliorations continues de l'optimisation de RenderScript dans les versions successives de la plate-forme Android.
Calcul GPU
Renderscript Compute est la première plate-forme de calcul portée pour s'exécuter directement sur le GPU d'un appareil mobile. Il exploite désormais automatiquement les ressources de calcul du GPU dans la mesure du possible pour améliorer les performances. Grâce à l'intégration du GPU, même les calculs les plus complexes pour le traitement graphique ou d'image peuvent s'exécuter avec des performances considérablement améliorées.
Toute application utilisant RenderScript sur un appareil compatible peut immédiatement bénéficier de cette intégration du GPU, sans recompilation. La tablette Nexus 10 est le premier appareil à prendre en charge cette intégration.
Nouvelles options pour les développeurs intégrées
Le système Android 4.2 inclut de nombreuses nouvelles options pour les développeurs, qui facilitent la création d'applications attrayantes et performantes. Les nouvelles options exposent des fonctionnalités de débogage et de profilage de votre application depuis n'importe quel appareil ou émulateur.
Sur les appareils exécutant Android 4.2, les options pour les développeurs sont masquées par défaut, ce qui permet d'améliorer l'expérience utilisateur. Vous pouvez afficher les options pour les développeurs à tout moment en appuyant sept fois sur Paramètres > À propos du téléphone > Numéro de version sur n'importe quel appareil Android compatible.
Les nouvelles options pour les développeurs d'Android 4.2 incluent les suivantes:
- Créer un rapport de bug : prend immédiatement une capture d'écran et vide les informations sur l'état de l'appareil dans l'espace de stockage de fichiers local, puis les joint à un nouveau message e-mail sortant.
- Rapports de bug dans le menu Marche/Arrêt : ajoute une nouvelle option au menu Marche/Arrêt et aux paramètres rapides de l'appareil pour créer un rapport de bug (voir ci-dessus).
- Vérifier les applications via USB : vous permet de désactiver les vérifications des applications pour le téléchargement parallèle via USB, tout en vérifiant les applications provenant d'autres sources telles que le navigateur. Cela peut accélérer le processus de développement tout en laissant la fonctionnalité de sécurité activée.
- Afficher les mises à jour des couches matérielles : fait clignoter les couches matérielles en vert lors des mises à jour.
- Afficher les dépassements GPU : met en évidence les zones de dépassement GPU.
- Force MSAA 4x (Forcer MSAA 4x) : active MSAA 4x dans les applications Open GL ES 2.0.
- Simulate secondary displays (Simuler des écrans secondaires) : crée une ou plusieurs fenêtres superposées non sécurisées sur l'écran actuel à utiliser comme écran distant simulé. Vous pouvez contrôler la taille et la densité de l'écran simulé.
- Activer les traces OpenGL : vous permet de suivre l'exécution d'OpenGL à l'aide de Logcat, Systrace ou de la pile d'appels sur glGetError.
Nouvelles technologies de plate-forme
Android 4.2 inclut de nombreuses technologies de plate-forme améliorées pour prendre en charge des cas d'utilisation innovants de la communication sur un large éventail d'appareils matériels. Dans la plupart des cas, les nouvelles technologies et améliorations de la plate-forme n'affectent pas directement vos applications. Vous pouvez donc en profiter sans aucune modification.
Renforcement de la sécurité
Chaque version d'Android comprend des dizaines d'améliorations de sécurité pour protéger les utilisateurs. Voici quelques-unes des améliorations apportées dans Android 4.2:
- Validation des applications : les utilisateurs peuvent choisir d'activer "Vérifier les applications" et de faire filtrer les applications par un outil de validation des applications avant leur installation. La validation des applications peut alerter l'utilisateur s'il tente d'installer une application potentiellement dangereuse. Si une application est particulièrement dangereuse, elle peut bloquer l'installation.
- Contrôle accru des SMS premium : Android envoie une notification si une application tente d'envoyer un SMS à un numéro court qui utilise des services premium pouvant entraîner des frais supplémentaires. L'utilisateur peut choisir d'autoriser l'application à envoyer le message ou de le bloquer.
- VPN permanent : le VPN peut être configuré de sorte que les applications n'aient pas accès au réseau tant qu'une connexion VPN n'est pas établie. Cela empêche les applications d'envoyer des données sur d'autres réseaux.
- Épinglage de certificat : l'implémentation SSL de libcore est désormais compatible avec l'épinglage de certificat. Les domaines épinglés recevront un échec de validation de certificat si le certificat ne se lie pas à un ensemble de certificats attendus. Cela permet d'éviter tout piratage potentiel des autorités de certification.
- Affichage amélioré des autorisations Android : les autorisations ont été organisées en groupes plus faciles à comprendre pour les utilisateurs. Lors de l'examen des autorisations, l'utilisateur peut cliquer sur l'autorisation pour afficher des informations plus détaillées à son sujet.
- durcissement installd : le daemon installd ne s'exécute pas en tant qu'utilisateur racine, ce qui réduit la surface d'attaque potentielle pour l'escalade des privilèges racine.
- Durcissement des scripts d'initialisation : les scripts d'initialisation appliquent désormais la sémantique O_NOFOLLOW pour éviter les attaques liées aux liens symboliques.
- FORTIFY_SOURCE : Android implémente désormais FORTIFY_SOURCE. Les bibliothèques système et les applications l'utilisent pour éviter la corruption de la mémoire.
- Configuration par défaut de ContentProvider : pour les applications qui ciblent le niveau d'API 17, la valeur "export" est définie sur "false" par défaut pour chaque ContentProvider, ce qui réduit la surface d'attaque par défaut des applications.
- Cryptographie : modification des implémentations par défaut de SecureRandom et Cipher.RSA pour utiliser OpenSSL. Ajout de la compatibilité SSLSocket avec TLSv1.1 et TLSv1.2 à l'aide d'OpenSSL 1.0.1
- Corrections de sécurité : les bibliothèques Open Source mises à niveau avec des correctifs de sécurité incluent WebKit, libpng, OpenSSL et LibXML. Android 4.2 inclut également des correctifs pour les failles spécifiques à Android. Des informations sur ces failles ont été fournies aux membres de l'Open Handset Alliance, et des correctifs sont disponibles dans le projet Android Open Source. Pour améliorer la sécurité, certains appareils équipés de versions antérieures d'Android peuvent également inclure ces correctifs.
Nouvelle pile Bluetooth
Android 4.2 introduit une nouvelle pile Bluetooth optimisée pour les appareils Android. La nouvelle pile Bluetooth développée en collaboration entre Google et Broadcom remplace la pile basée sur BlueZ et offre une compatibilité et une fiabilité améliorées.Audio à faible latence
Android 4.2 améliore la compatibilité avec la lecture audio à faible latence, à partir des améliorations apportées à la version Android 4.1 pour la latence de sortie audio à l'aide des API OpenSL ES, Soundpool et tone generator. Ces améliorations dépendent de la compatibilité matérielle. Les appareils qui proposent ces fonctionnalités audio à faible latence peuvent en faire la promotion auprès des applications via une constante de fonctionnalité matérielle. De nouvelles API AudioManager sont fournies pour interroger le taux d'échantillonnage audio natif et la taille de la mémoire tampon, à utiliser sur les appareils qui revendiquent cette fonctionnalité.
Nouvelle interface matérielle de l'appareil photo
Android 4.2 introduit une nouvelle implémentation de la pile de l'appareil photo. Le sous-système de la caméra inclut les implémentations des composants du pipeline de la caméra, comme la capture en mode rafale avec des commandes de traitement.Nouvelle interface matérielle NFC et interface de contrôleur
Android 4.2 est compatible avec les contrôleurs basés sur la norme NCI du NFC-Forum. NCI fournit un protocole de communication standard entre un contrôleur NFC (NFCC) et un hôte d'appareil. La nouvelle pile NFC développée en collaboration entre Google et Broadcom est compatible avec ce protocole.Optimisations d'exécution Dalvik
L'environnement d'exécution Dalvik inclut des améliorations des performances et de la sécurité sur une plus large gamme d'architectures:
- Compatibilité avec le JIT x86 d'Intel et le JIT MIPS de MIPS
- Paramètres de récupération de mémoire optimisés pour les appareils de plus de 512 Mo
- Les implémentations par défaut de SecureRandom et Cipher.RSA utilisent désormais OpenSSL
- Compatibilité de SSLSocket avec TLSv1.1 et TLSv1.2 via OpenSSL 1.0.1
- Nouvelle prise en charge intrinsèque des méthodes abs, min, max et sqrt de StrictMath
- Mise à jour de BouncyCastle vers la version 1.47
- zlib mis à jour vers la version 1.27
- Mise à jour de dlmalloc vers la version 2.8.6
Android 4.1
Bienvenue dans Android 4.1, la première version de Jelly Bean !
Android 4.1 est la version d'Android la plus rapide et la plus fluide à ce jour. Nous avons apporté des améliorations à la plate-forme et ajouté de nouvelles fonctionnalités pour les utilisateurs et les développeurs. Ce document donne un aperçu des nouveautés pour les développeurs.
Pour en savoir plus sur les nouvelles API pour les développeurs, consultez la documentation sur les API Android 4.1.
Pour en savoir plus sur les fonctionnalités Jelly Bean pour les utilisateurs, consultez www.android.com.
Plus rapide, plus fluide, plus réactif
Android 4.1 est optimisé pour offrir les meilleures performances et la latence tactile la plus faible d'Android, avec une interface utilisateur intuitive et simple.
Pour garantir un framerate cohérent, Android 4.1 étend le calendrier vsync à tous les dessins et animations effectués par le framework Android. Tout s'exécute en synchronisation avec un rythme cardiaque vsync de 16 millisecondes (rendu de l'application, événements tactiles, composition de l'écran et actualisation de l'écran), de sorte que les frames ne soient pas en avance ni en retard.
Android 4.1 ajoute également la mise en mémoire tampon triple dans le pipeline graphique pour un rendu plus cohérent qui rend tout plus fluide, du défilement à la pagination et aux animations.
Android 4.1 réduit la latence tactile non seulement en synchronisant les interactions tactiles avec le timing de la synchronisation verticale, mais aussi en anticipant l'emplacement de votre doigt au moment de l'actualisation de l'écran. Cela permet d'obtenir une réponse tactile plus réactive et uniforme. De plus, après des périodes d'inactivité, Android applique un boost d'entrée du processeur au prochain événement tactile pour s'assurer qu'il n'y a pas de latence.
Les outils peuvent vous aider à exploiter tout le potentiel de vos applications. Android 4.1 est conçu pour fonctionner avec un nouvel outil appelé systrace, qui collecte des données directement à partir du noyau Linux pour produire une vue d'ensemble des activités système. Les données sont représentées sous la forme d'un groupe de graphiques de séries temporelles empilées verticalement, ce qui permet d'identifier les interruptions de rendu et d'autres problèmes. L'outil est désormais disponible dans le SDK Android (Tools R20 ou version ultérieure).
Accessibilité améliorée
Les nouvelles API pour les services d'accessibilité vous permettent de gérer les gestes et le focus d'accessibilité lorsque l'utilisateur parcourt les éléments à l'écran et les boutons de navigation à l'aide de gestes d'accessibilité, d'accessoires et d'autres entrées. Le système TalkBack et la navigation par balayage ont été repensés pour utiliser la fonctionnalité d'accessibilité afin de faciliter l'utilisation et d'offrir un ensemble complet d'API aux développeurs.
Les services d'accessibilité peuvent associer leurs propres tutoriels aux paramètres d'accessibilité pour aider les utilisateurs à configurer et à utiliser leurs services.
Les applications qui utilisent des composants de vue standards héritent de la prise en charge des nouvelles fonctionnalités d'accessibilité automatiquement, sans modification de leur code. Les applications qui utilisent des vues personnalisées peuvent utiliser de nouvelles API de nœud d'accessibilité pour indiquer les parties de la vue qui intéressent les services d'accessibilité.
Assistance pour les utilisateurs internationaux
Prise en charge du texte bidirectionnel et d'autres langues
Android 4.1 vous permet de toucher plus d'utilisateurs grâce à la prise en charge du texte bidirectionnel dans les éléments TextView et EditText. Les applications peuvent afficher du texte ou gérer la modification de texte dans des scripts de gauche à droite ou de droite à gauche. Les applications peuvent utiliser les nouvelles langues arabes et hébreux, ainsi que les polices associées.
Voici d'autres types de nouvelles langues compatibles:
- Autres langues indiennes: kannada, télougou et malayalam
- Nouveaux caractères emoji de la version 6.0 d'Unicode
- Meilleure compatibilité avec les glyphes pour les utilisateurs japonais (affiche des versions spécifiques au japonais lorsque la langue du système est définie sur le japonais)
- Caractères arabes optimisés pour les WebViews en plus des caractères arabes pour les TextViews
- Compatibilité avec le texte vertical dans les WebViews, y compris le texte Ruby et des glyphes de texte vertical supplémentaires
- L'italique synthétique est désormais disponible pour toutes les polices qui ne disposent pas de glyphes en gras dédiés.
Mappages de clavier installables par l'utilisateur
La plate-forme est désormais compatible avec les cartes de clavier installables par l'utilisateur, par exemple pour les claviers internationaux supplémentaires et les types de mise en page spéciaux. Par défaut, Android 4.1 inclut 27 mappages de clavier internationales, y compris Dvorak. Lorsque les utilisateurs connectent un clavier, ils peuvent accéder à l'application Paramètres et sélectionner une ou plusieurs dispositions de clavier à utiliser pour ce clavier. Lorsque vous saisissez du texte, vous pouvez passer d'une disposition de clavier à une autre à l'aide d'un raccourci (Ctrl+Espace).
Vous pouvez créer une application pour publier des claviers supplémentaires dans le système. L'APK inclura les ressources de mise en page du clavier, basées sur le format de mappage de clavier Android standard. L'application peut proposer des claviers supplémentaires à l'utilisateur en déclarant un broadcast receiver approprié pour ACTION_QUERY_KEYBOARD_LAYOUTS dans son fichier manifeste.
Nouvelles façons de créer une interface utilisateur esthétique
Notifications à développer
Les notifications sont depuis longtemps une fonctionnalité unique et populaire sur Android. Les développeurs peuvent les utiliser pour présenter aux utilisateurs des informations importantes ou temporelles dans la barre de notification, en dehors de l'interface utilisateur normale de l'application.
Android 4.1 apporte une mise à jour majeure au framework de notifications Android. Les applications peuvent désormais afficher des notifications plus grandes et plus riches, que les utilisateurs peuvent développer et réduire en pinçant ou en balayant l'écran. Les notifications sont compatibles avec de nouveaux types de contenus, y compris les photos. Elles ont une priorité configurable et peuvent même inclure plusieurs actions.
Grâce à un compilateur de notifications amélioré, les applications peuvent créer des notifications qui occupent une plus grande surface, jusqu'à 256 dp de hauteur. Trois styles de notification avec modèle sont disponibles:
- BigTextStyle : notification incluant un objet TextView multiligne.
- BigInboxStyle : notification affichant tout type de liste, comme des messages, des titres, etc.
- BigPictureStyle : notification qui présente un contenu visuel tel qu'un bitmap.
En plus des styles basés sur des modèles, vous pouvez créer vos propres styles de notification à l'aide de n'importe quelle vue distante.
Les applications peuvent ajouter jusqu'à trois actions à une notification, qui s'affichent sous le contenu de la notification. Les actions permettent aux utilisateurs de répondre directement aux informations de la notification par d'autres moyens, par exemple par e-mail ou par téléphone, sans accéder à l'application.
Grâce aux notifications extensibles, les applications peuvent fournir plus d'informations à l'utilisateur, sans effort et à la demande. Les utilisateurs restent maîtres de leur appareil et peuvent appuyer de manière prolongée sur une notification pour obtenir des informations sur l'expéditeur et éventuellement désactiver d'autres notifications de l'application.
Widgets d'application redimensionnables
Android 4.1 introduit des widgets d'application améliorés qui peuvent être redimensionnés automatiquement en fonction de l'emplacement où l'utilisateur les place sur l'écran d'accueil, de la taille à laquelle il les développe et de l'espace disponible sur l'écran d'accueil. Les nouvelles API de widget d'application vous permettent d'en profiter pour optimiser le contenu de vos widgets d'application à mesure que la taille des widgets change.
Lorsqu'un widget change de taille, le système en informe le fournisseur de widgets de l'application hôte, qui peut recharger le contenu du widget si nécessaire. Par exemple, un widget peut afficher des graphiques plus grands et plus riches, ou des fonctionnalités ou des options supplémentaires. Les développeurs peuvent toujours contrôler les tailles maximale et minimale, et mettre à jour d'autres options de widget si nécessaire.
Vous pouvez également fournir des mises en page distinctes pour les modes Portrait et Paysage de vos widgets, que le système gonfle de manière appropriée lorsque l'orientation de l'écran change.
Les widgets d'application peuvent désormais être affichés dans des lanceurs tiers et d'autres applications hôtes via un nouvel intent de liaison (AppWidgetManager.ACTION_APPWIDGET_BIND).
Navigation simplifiée des tâches
Android 4.1 vous permet de gérer facilement la navigation "Haut" disponible pour les utilisateurs depuis vos applications et de garantir une expérience cohérente.
Vous pouvez définir la navigation vers le haut souhaitée pour les composants Activity individuels de votre UI en ajoutant un nouvel attribut XML dans le fichier manifeste de l'application. Au moment de l'exécution, lorsque les activités sont lancées, le système extrait l'arborescence de navigation vers le haut du fichier manifeste et crée automatiquement la navigation vers le haut dans la barre d'action. Les développeurs qui déclarent la navigation vers le haut dans le fichier manifeste n'ont plus besoin de gérer la navigation par rappel au moment de l'exécution, bien qu'ils puissent également le faire si nécessaire.
Une nouvelle classe TaskStackBuilder est également disponible. Elle vous permet de créer rapidement une pile de tâches synthétique à lancer immédiatement ou à utiliser lorsqu'une activité est lancée à partir d'un PendingIntent. La création d'une pile de tâches synthétique est particulièrement utile lorsque les utilisateurs lancent des activités à partir de vues distantes, telles que les widgets de l'écran d'accueil et les notifications, car elle permet au développeur de fournir une expérience gérée et cohérente lors de la navigation "Retour".
Animations faciles pour le lancement d'une activité
Vous pouvez utiliser une nouvelle classe d'assistance, ActivityOptions, pour créer et contrôler l'animation affichée lorsque vous lancez vos activités. Grâce à la classe d'assistance, vous pouvez spécifier des ressources d'animation personnalisées à utiliser lorsque l'activité est lancée, ou demander de nouvelles animations de zoom qui commencent à partir de n'importe quel rectangle que vous spécifiez à l'écran et qui peuvent inclure un bitmap de vignette.
Transitions vers les modes Écran éteint et Plein écran
Les nouveaux indicateurs d'UI système dans View vous permettent de passer de manière fluide d'une UI d'application normale (avec la barre d'action, la barre de navigation et la barre système visibles) au mode "lights out" (avec la barre d'état et la barre d'action masquées et la barre de navigation atténuée) ou au mode "plein écran" (avec la barre d'état, la barre d'action et la barre de navigation toutes masquées).
Nouveaux types de vues à distance
Les développeurs peuvent désormais utiliser les vues GridLayout et ViewStub dans les widgets et les notifications de l'écran d'accueil. GridLayout vous permet de structurer le contenu de vos vues distantes et de gérer l'alignement des vues enfants avec une hiérarchie d'UI moins profonde. ViewStub est une vue invisible de taille nulle qui peut être utilisée pour gonfler, de manière différée, des ressources de mise en page lors de l'exécution.
Aperçu du fond d'écran animé
Android 4.1 permet aux utilisateurs de trouver et d'installer plus facilement des fonds d'écran animés à partir des applications qui les incluent. Si votre application inclut des fonds d'écran animés, vous pouvez désormais démarrer une activité (ACTION_CHANGE_LIVE_WALLPAPER) qui affiche à l'utilisateur un aperçu du fond d'écran animé à partir de votre propre application. À partir de l'aperçu, les utilisateurs peuvent charger directement le fond d'écran animé.
Photos de contacts en haute résolution
Avec Android 4.1, vous pouvez stocker des photos de contact jusqu'à 720 x 720 pixels, ce qui rend vos contacts encore plus riches et plus personnels. Les applications peuvent stocker et récupérer des photos de contact à cette taille ou utiliser n'importe quelle autre taille si nécessaire. La taille maximale des photos prise en charge sur des appareils spécifiques peut varier. Par conséquent, les applications doivent interroger le fournisseur de contacts intégré au moment de l'exécution pour obtenir la taille maximale de l'appareil actuel.
Nouveaux types et fonctionnalités d'entrée
En savoir plus sur l'ajout et la suppression d'appareils
Les applications peuvent s'inscrire pour recevoir une notification lorsqu'un nouveau périphérique d'entrée est connecté, via USB, Bluetooth ou tout autre type de connexion. Ils peuvent utiliser ces informations pour modifier l'état ou les fonctionnalités si nécessaire. Par exemple, un jeu peut recevoir une notification indiquant qu'un nouveau clavier ou un nouveau joystick est connecté, ce qui signifie qu'un nouveau joueur est présent.
Interroger les fonctionnalités des périphériques d'entrée
Android 4.1 inclut des API qui permettent aux applications et aux jeux de tirer pleinement parti de tous les périphériques d'entrée connectés et disponibles.
Les applications peuvent interroger le Gestionnaire d'appareils pour énumérer tous les périphériques d'entrée actuellement connectés et en savoir plus sur les fonctionnalités de chacun.
Contrôler le vibreur sur les périphériques de saisie
Parmi d'autres fonctionnalités, les applications peuvent désormais utiliser n'importe quel service de vibreur associé à un périphérique d'entrée connecté, comme pour les manettes Rumble Pak.
Animation et graphisme
Vsync pour les applications
L'extension de la synchronisation verticale à l'ensemble du framework Android permet d'obtenir une fréquence d'images plus cohérente et une interface utilisateur fluide et stable. Pour que les applications en profitent également, Android 4.1 étend le code temporel vsync à tous les dessins et animations lancés par les applications. Cela leur permet d'optimiser les opérations sur le thread d'interface utilisateur et de fournir une base temporelle stable pour la synchronisation.
Les applications peuvent utiliser sans frais le synchronisation verticale via le framework d'animation d'Android. Le framework d'animation utilise désormais le timing vsync pour gérer automatiquement la synchronisation entre les animateurs.
Pour des utilisations spécialisées, les applications peuvent accéder au timing vsync via les API exposées par une nouvelle classe Choreographer. Les applications peuvent demander une invalidation sur le prochain frame vsync, ce qui est un bon moyen de planifier une animation lorsque l'application n'utilise pas le framework d'animation. Pour des utilisations plus avancées, les applications peuvent publier un rappel que la classe Choreographer exécutera sur le frame suivant.
Nouvelles actions d'animation et types de transitions
Le framework d'animation vous permet désormais de définir les actions de début et de fin à effectuer lors de l'exécution d'animations ViewPropertyAnimator afin de les synchroniser avec d'autres animations ou actions de l'application. L'action peut exécuter n'importe quel objet exécutable. Par exemple, le code exécutable peut spécifier une autre animation à lancer à la fin de la précédente.
Vous pouvez également spécifier qu'un ViewPropertyAnimator utilise une couche au cours de son animation. Auparavant, il était recommandé d'animer des vues complexes en configurant un calque avant de démarrer une animation, puis de gérer un événement onAnimationEnd() pour supprimer le calque à la fin de l'animation. La méthode withLayer() de ViewPropertyAnimator simplifie désormais ce processus en un seul appel de méthode.
Un nouveau type de transition dans LayoutTransition vous permet d'automatiser les animations en réponse à toutes les modifications de mise en page dans un ViewGroup.
Nouveaux types de connectivité
Android Beam
Android Beam est une technologie populaire basée sur la technologie NFC qui permet aux utilisateurs de partager instantanément du contenu en mettant en contact deux téléphones compatibles NFC.
Dans Android 4.1, Android Beam permet de partager plus facilement des images, des vidéos ou d'autres charges utiles en exploitant le Bluetooth pour le transfert de données. Lorsque l'utilisateur déclenche un transfert, Android Beam passe de la technologie NFC au Bluetooth, ce qui permet de gérer très facilement le transfert d'un fichier d'un appareil à un autre.
Détection de services réseau Wi-Fi
Android 4.1 est compatible avec la détection de services basée sur le DNS multicast, qui permet aux applications de trouver et de se connecter aux services proposés par des appareils homologues sur des réseaux Wi-Fi, y compris les appareils mobiles, les imprimantes, les appareils photo, les lecteurs multimédias, etc. Les développeurs peuvent tirer parti de la détection de services réseau Wi-Fi pour créer des jeux et des expériences d'application multiplate-forme ou multijoueurs.
Grâce à l'API de découverte de services, les applications peuvent créer et enregistrer n'importe quel type de service, que tout autre appareil compatible avec NSD peut découvrir. Le service est annoncé par multicast sur le réseau à l'aide d'un identifiant de chaîne lisible par l'homme, ce qui permet à l'utilisateur d'identifier plus facilement le type de service.
Les appareils grand public peuvent utiliser l'API pour rechercher et découvrir les services disponibles sur les appareils connectés au réseau Wi-Fi local. Après la découverte, les applications peuvent utiliser l'API pour résoudre le service en une adresse IP et un port via lesquels elles peuvent établir une connexion de socket.
Vous pouvez utiliser cette API pour intégrer de nouvelles fonctionnalités à vos applications. Par exemple, vous pouvez autoriser les utilisateurs à se connecter à une webcam, une imprimante ou une application sur un autre appareil mobile compatible avec les connexions point à point Wi-Fi.
Service Discovery Wi-Fi P2P
Ice Cream Sandwich a introduit la prise en charge du Wi-Fi peer-to-peer (P2P), une technologie qui permet aux applications de détecter et d'associer directement, via une connexion peer-to-peer à large bande (conformément au programme de certification Wi-Fi Direct™ de la Wi-Fi Alliance). Le Wi-Fi P2P est un moyen idéal de partager des contenus multimédias, des photos, des fichiers et d'autres types de données et de sessions, même en l'absence de réseau mobile ou de Wi-Fi.
Android 4.1 va plus loin avec le Wi-Fi P2P en ajoutant la prise en charge de l'API pour la recherche de services préassociés. La découverte de services préassociés permet à vos applications d'obtenir des informations plus utiles sur les services qu'elles prennent en charge auprès des appareils à proximité, avant qu'elles ne tentent de se connecter. Les applications peuvent lancer la découverte d'un service spécifique et filtrer la liste des appareils détectés pour n'afficher que ceux qui sont compatibles avec le service ou l'application cible.
Par exemple, cela signifie que votre application ne peut détecter que les appareils qui sont des "imprimantes" ou qui proposent un jeu spécifique, au lieu de détecter tous les appareils Wi-Fi P2P à proximité. D'autre part, votre application peut annoncer le service qu'elle fournit aux autres appareils, qui peuvent le découvrir, puis négocier une connexion. Cela simplifie grandement la découverte et l'association pour les utilisateurs, et permet aux applications de tirer plus efficacement parti du Wi-Fi P2P.
La découverte de services P2P Wi-Fi vous permet de créer des applications et des jeux multijoueurs qui peuvent partager des photos, des vidéos, des parties, des scores ou presque tout autre chose, sans nécessiter de connexion Internet ni de réseau mobile. Vos utilisateurs ne peuvent se connecter qu'à l'aide d'une connexion P2P directe, ce qui évite d'utiliser la bande passante mobile.
Gestion de la bande passante réseau
Android 4.1 aide les applications à gérer la consommation de données de manière appropriée lorsque l'appareil est connecté à un réseau limité, y compris lorsqu'il partage sa connexion avec un point d'accès mobile. Les applications peuvent interroger si le réseau actuel est limité avant de lancer un téléchargement volumineux qui pourrait être relativement coûteux pour l'utilisateur. Grâce à l'API, vous pouvez désormais obtenir une vue claire des réseaux sensibles à la consommation de données et gérer votre activité réseau en conséquence.
Nouvelles fonctionnalités pour les nouveaux médias
Accès aux codecs multimédias
Android 4.1 fournit un accès de bas niveau aux codecs matériels et logiciels de la plate-forme. Les applications peuvent interroger le système pour découvrir les codecs multimédias de bas niveau disponibles sur l'appareil, puis les utiliser comme elles le souhaitent. Par exemple, vous pouvez désormais créer plusieurs instances d'un codec multimédia, mettre en file d'attente des tampons d'entrée et recevoir en retour des tampons de sortie. De plus, le framework de codec multimédia est compatible avec le contenu protégé. Les applications peuvent interroger un codec disponible capable de lire du contenu protégé avec une solution DRM disponible sur l'appareil.
Audio USB
La prise en charge de la sortie audio USB permet aux fournisseurs de matériel de créer des appareils tels que des stations d'accueil audio qui s'interfacent avec les appareils Android. Cette fonctionnalité est également exposée avec le kit de développement d'accessoires ouvert (ADK) Android afin de permettre à tous les développeurs de créer leur propre matériel.
Déclenchement de l'enregistrement audio
Android vous permet désormais de déclencher l'enregistrement audio à la fin d'une piste audio. Cela peut s'avérer utile dans des situations telles que la lecture d'un ton pour indiquer aux utilisateurs de commencer à parler pour enregistrer leur voix. Cette fonctionnalité vous aide à synchroniser l'enregistrement afin de ne pas enregistrer l'audio en cours de lecture et d'éviter que les enregistrements ne commencent trop tard.
Audio multicanal
Android 4.1 est compatible avec l'audio multicanal sur les appareils dotés d'une sortie audio multicanal matérielle via le port HDMI. L'audio multicanal vous permet de proposer aux utilisateurs des expériences multimédias riches pour des applications telles que des jeux, des applications de musique et des lecteurs vidéo. Pour les appareils qui ne disposent pas du matériel compatible, Android convertit automatiquement l'audio au nombre de canaux compatibles avec l'appareil (généralement stéréo).
Android 4.1 ajoute également la compatibilité intégrée avec l'encodage/le décodage audio AAC 5.1.
Prétraitement du contenu audio
Les développeurs peuvent appliquer des effets de prétraitement à l'audio en cours d'enregistrement, par exemple pour appliquer la suppression du bruit afin d'améliorer la qualité de l'enregistrement vocal, la suppression de l'écho pour l'écho acoustique et le contrôle automatique du gain pour l'audio dont les niveaux de volume sont incohérents. Les applications qui nécessitent un enregistrement audio de haute qualité et propre bénéficieront de ces préprocesseurs.
Chaîne audio
MediaPlayer permet de chaîner des flux audio pour lire des fichiers audio sans pause. Cela est utile pour les applications qui nécessitent des transitions fluides entre les fichiers audio, comme les lecteurs de musique pour lire des albums avec des titres continus ou des jeux.
Media Router
Les nouvelles API MediaRouter, MediaRouteActionProvider et MediaRouteButton fournissent des mécanismes et une interface utilisateur standards pour choisir où lire des contenus multimédias. La prise en charge est intégrée pour les casques filaires, les casques et enceintes Bluetooth a2dp, et vous pouvez ajouter vos propres options de routage dans votre application.
Calcul RenderScript
Android 4.1 étend le calcul Renderscript pour vous offrir plus de flexibilité. Vous pouvez désormais échantillonner des textures dans vos scripts de calcul RenderScript. De plus, de nouveaux pragmas sont disponibles pour définir la précision à virgule flottante requise par vos scripts. Vous pouvez ainsi activer les instructions NEON telles que les opérations mathématiques vectorielles rapides sur le chemin du processeur, qui ne seraient pas possibles avec la norme IEEE 754-2008 complète.
Vous pouvez désormais déboguer vos scripts de calcul Renderscript sur des appareils matériels et un émulateur basé sur x86. Vous pouvez également définir plusieurs noyaux de style racine dans un même fichier source Renderscript.
Navigateur Android et WebView
Sous Android 4.1, le navigateur Android et les WebViews incluent les améliorations suivantes:
- Amélioration de l'expérience utilisateur pour les vidéos HTML5, y compris la lecture/mise en pause par commande tactile et la transition fluide du mode intégré au mode plein écran.
- Amélioration de la vitesse de rendu et réduction de l'utilisation de la mémoire pour de meilleures performances de défilement et de zoom.
- Amélioration des performances des animations HTML5/CSS3/Canvas.
- Amélioration de la saisie de texte.
- Mise à jour du moteur JavaScript (V8) pour améliorer les performances JavaScript.
- Compatibilité avec la spécification HTML5 Media Capture mise à jour (attribut "capture" sur les éléments input type=file).
API et services Google
Pour étendre encore plus les fonctionnalités d'Android, plusieurs nouveaux services sont disponibles.
Google Cloud Messaging pour Android
Google Cloud Messaging (GCM) est un service qui permet aux développeurs d'envoyer des données de messages courts à leurs utilisateurs sur des appareils Android, sans avoir besoin d'une solution de synchronisation propriétaire.
GCM gère tous les détails de la mise en file d'attente des messages et de leur distribution efficace aux appareils Android ciblés. Il prend en charge le multicasting des messages et peut atteindre jusqu'à 1 000 appareils connectés simultanément avec une seule requête. Elle est également compatible avec les charges utiles des messages, ce qui signifie qu'en plus d'envoyer des messages de chat à une application sur l'appareil, les développeurs peuvent envoyer jusqu'à 4 Ko de données.
Google Cloud Messaging est entièrement sans frais pour tous les développeurs, et l'inscription est simple. Pour vous inscrire, télécharger des éléments et consulter la documentation, consultez la page Google Cloud Messaging.
Chiffrement des applications
À partir d'Android 4.1, Google Play aidera à protéger les éléments d'application en chiffrant toutes les applications payantes avec une clé spécifique à l'appareil avant qu'elles ne soient distribuées et stockées sur un appareil.
Mises à jour intelligentes des applications
Les mises à jour d'applications intelligentes sont une nouvelle fonctionnalité de Google Play qui offre un meilleur moyen de diffuser les mises à jour d'applications sur les appareils. Lorsque les développeurs publient une mise à jour, Google Play ne transmet désormais aux appareils que les bits qui ont changé, et non l'intégralité de l'APK. Dans la plupart des cas, les mises à jour sont donc beaucoup plus légères, ce qui permet de les télécharger plus rapidement, d'économiser la batterie de l'appareil et de préserver la bande passante du forfait de données mobiles des utilisateurs. En moyenne, une mise à jour d'application intelligente représente environ un tiers de la taille d'une mise à jour d'APK complète.
Services Google Play
Les services Google Play aident les développeurs à intégrer les services Google, tels que l'authentification, dans leurs applications distribuées via Google Play.
Les services Google Play sont automatiquement provisionnés sur les appareils des utilisateurs finaux par Google Play. Il vous suffit donc d'ajouter une bibliothèque cliente allégée dans vos applications.
Étant donné que votre application ne contient que la petite bibliothèque cliente, vous pouvez profiter de ces services sans augmenter considérablement la taille de téléchargement ni l'espace de stockage. De plus, Google Play fournit des mises à jour régulières des services, sans que les développeurs aient à publier des mises à jour d'applications pour en profiter.
Pour en savoir plus sur les API incluses dans les services Google Play, consultez la page du développeur sur les services Google Play.