C'est parti, nous récoltons toute l'actualité autour d'Android 12 cette semaine ! Pour cela, nous faisons en sorte que la dernière version du système de Google n'ait plus aucun secret pour vous : des limitations, en passant par les nouveautés multimédia, les actualités ou encore les tutoriaux. Enfin, nous dénicherons les outils qui feront la différence sur vos projets : Snapper et Universal Android Debloater GUI. Bref, arrêtez-tout, Android Croissants #4 vous attend !
Nous sortons de la dimension développement, tout en restant dans l'écosystème Android, avec cette annonce qui va toucher 90% d'entre vous. Netflix a officiellement déployé son service Netflix Games, mardi dernier, et offre désormais des jeux vidéo sur son application. Tous les utilisateurs (Android uniquement pour l'heure) possédant un abonnement au service auront accès à Netflix Games, sans frais additionnels. Pas besoin d'installer une nouvelle application, les jeux seront accessibles depuis l'application de streaming Netflix "classique".
L'offre n'a rien de révolutionnaire toutefois, mais Netflix a tout récemment acquis Night School, concepteur du jeu Oxenfree : le champ des possibles est donc ouvert.
Tout comme pour le streaming, il est possible de partager le même compte, les limitations restant les mêmes que pour le streaming vidéo.
Si vous utilisez l'application Termux (un émulateur de terminal Linux) pour des tâches qui requièrent de nombreux processus d'arrière-plan, il serait judicieux de ne pas encore la mettre à jour. En effet, le nombre de processus enfants que les processus parents peuvent lancer se limite à 32. Mais contrairement à ce que l'on pourrait croire, cette limitation concerne l'ensemble du système, et non chaque application (qu'elles soient téléchargées par l'utilisateur, liées au système…). Par conséquent, le "PhantomProcessKiller" est bien un processus qui existe sur Android et qui peut donc potentiellement faire des ravages sur des applications telles que Termux.
Nous l'avons déjà vu, Android 12 introduit de nouvelles fonctionnalités et APIs pour les développeurs. Les différentes thématiques sont : l'expérience utilisateur, la sécurité & la vie privée, le multimédia (graphismes, images…), la connectivité et enfin le stockage des données. Pour faire suite aux dernières éditions, nous voyons aujourd'hui le multimédia.
Partie 3 : le multimédia Légende : Pour la liste des fonctionnalités, nous avons classé les éléments en deux catégories :
🏅 pour les consulter au plus vite et à l'inverse ☕ si vous avez le temps entre deux builds (coucou Gradle).
Android 12 permet aux développeurs de connaître plus facilement la puissance et les performances d'un appareil.
Les appareils Android ne sont pas tous homogènes sur leur fiche technique, car il faut souvent aligner les billets pour prétendre à un smartphone avec les performances les plus élevées. Alors que chaque utilisateur Android peut facilement connaître les spécifications de son appareil, qu'en est-il des développeurs ?.
Sur la page Android Developers, Google indique que chaque version d'Android a sa propre Device Performance Class correspondante (une pour Android 12, une autre pour Android 13 et ainsi de suite). A noter que la Device Performance Class sera définie dans le Compatibility Definition Document, CDD (document de définition de la compatibilité) et que celui pour Android 12 n'a pas encore été publié. Ce document garantie le fait qu'un appareil réponde favorablement à la suite de tests de compatibilité (Compatibility Test Suite, CTS), un ensemble de tests automatisés qui assure la compatibilité avec une version d'Android.
Comme vu précédemment, le concept de Device Performance Class est introduit avec Android 12, mais la bonne nouvelle est que Google va également définir une Device Performance Class pour Android 11. Très intéressant pour nous, développeurs, car nous devons gérer de nombreuses versions d'Android dans nos applications.
Côté API, nous trouvons une nouvelle couche de décodage vidéo pour les formats vidéo HEVC et AVC à tous les niveaux du système, y compris les applications qui ne le supportent pas nativement. L'emploi de ce format améliore la compression des fichiers et permet en outre d'économiser de l'espace de stockage.
Du côté des images statiques, le système ajoute le support du format AV1 Image File (AVIF), qui offre une qualité d'image bien supérieure à taille équivalente qu'un JPEG ou même WebP.
L'API a été améliorée pour la mise au point audio. Désormais lorsqu'une application perd le focus audio, son volume est automatiquement atténué, offrant une transition plus naturelle entre les applications qui lisent simultanément de l'audio. Dit autrement, elle évite que les applications ne se "chevaucher" les unes aux autres.
Ce comportement de sortie en fondu se produit lorsque les conditions suivantes sont remplies :
La première application en cours de lecture répond à tous ces critères :
L'application possède l'attribut d'utilisation AudioAttributes.USAGE_MEDIA ou AudioAttributes.USAGE_GAME L'application a demandé la mise au point du son avec AudioManager.AUDIOFOCUS_GAIN L'application ne lit pas d'audio avec le type de contenu AudioAttributes.CONTENT_TYPE_SPEECH Une deuxième application demande le focus audio avec AudioManager.AUDIOFOCUS_GAIN
Petit focus sur le flux des autorisations dans Android (Granted, Denied, PermanentlyDenied, Confused). Aujourd'hui, il faut encore trop de code pour configurer correctement le flux des autorisations. Ce tutoriel vous accompagne pour optimiser la gestion des flux et vous apporte des solutions sur les différents problèmes que vous pouvez rencontrer ! Finalement, ce n'est pas si compliqué 😛
ExoPlayer est le lecteur vidéo utilisé notamment dans l'application Android pour YouTube. Pour chacune des briques (le réseau, la gestion du buffer, l'extraction des frames, le décodage ou encore le rendu), vous avez le choix entre utiliser votre propre implémentation ou plutôt opter pour un comportement déjà codé.
Ce tutoriel vous explique comment intégrer ExoPlayer avec Jetpack Compose. Pour cela, cous verrez comment lire vos vidéos, afficher le titre de la vidéo avec MediaMetadata, utiliser LazyColumn pour afficher la liste de lecture : c'est fluide comme une vidéo et très bien détaillé.
Cet outil permet de débloquer les appareils Android non rootés, à l'aide d'ADB. Il vous offre sur un plateau : une amélioration de votre confidentialité, de la sécurité et lde a durée de vie de la batterie de vos appareils.
Snapper est une bibliothèque qui peut être synthétisée comme SnapHelper pour LazyRow et LazyColumn, ajoutant l'accrochage des éléments, la distance maximale de projection, la position d'accrochage, etc…