Quoi de neuf dans Android Lollipop

Après des mois de spéculation, de battage publicitaire et de taquineries, Google a officiellement lancé Android 5.0 au monde entier le 12 novembre 2014. Le SDK a été mis à disposition le 3 novembre. Nous en savions déjà beaucoup sur les fonctionnalités, à cause du Laperçu du SDK publié le 25 juin 2014. Ce que nous ne savions pas, c’était ce que le Lserait debout pour.

Sucette était le nom donné à la mise à jour 5.0. En regardant en arrière, Lollipop était un favori clairement. Mais, si on dispose de suffisamment de temps pour spéculer, l'évidence détient à nouveau le pouvoir de surprendre.

Lollipop est une mise à jour importante pour la plate-forme Android. C'est sans doute le plus gros communiqué à ce jour, et certainement le plus ambitieux.

1. Caractéristiques

Maintenant que le SDK Android est sorti, voici un aperçu de certaines des nouvelles fonctionnalités d'Android 5.0..

Batterie

Projet Volta   

Ces dernières années, avec chaque version d'Android, Google s'est concentré sur un aspect particulier du développement du système d'exploitation et sur la manière de l'améliorer. Pour 5.0, cela améliorait la vie de la batterie.

le JobScheduler L'API vous permet d'exécuter des travaux de manière asynchrone ultérieurement ou dans des conditions particulières.. JobInfo les objets peuvent être utilisés pour définir les conditions dans lesquelles un travail planifié sera exécuté.

Grâce à ces ajouts, les développeurs ont désormais beaucoup plus de contrôle sur le moment et la manière dont les tâches épuisant la batterie sont effectuées.. 

Outils de développement

Il y a une nouvelle BADcommander Dumpsys Batterystats qui peut être utilisé pour générer des données statistiques sur l’utilisation de la batterie sur un appareil. Examinez la commande suivante pour voir comment cela fonctionne..

adb shell dumpsys batterystats --charged

Les notifications

Dans Lollipop, les notifications peuvent être affichées sur l'écran de verrouillage. Les développeurs peuvent spécifier la quantité d'informations affichée dans une notification via setVisibility, qui accepte les valeurs suivantes:

  • VISIBILITY_PRIVATE: affiche des informations de base, telles que l'icône de la notification, mais masque le contenu de la notification
  • VISIBILITY_PUBLIC: affiche le contenu de la notification
  • VISIBILITY_SECRET: ne montre rien, excluant même l'icône de la notification

Des métadonnées peuvent maintenant être ajoutées aux notifications pour autoriser les catégories et les priorités, et pour collecter des contacts supplémentaires.

Les notifications clés, telles que les appels entrants, apparaîtront dans une fenêtre de notification en tête-à-tête, qui flottera en haut de l'application actuelle jusqu'à ce que l'utilisateur reconnaisse ou rejette la notification.

Multitâche

L’écran récent a été renommé en vue d'ensemble. Avec ce nouveau nom, de nouvelles API améliorent les options multitâches sur Android. Vous pouvez maintenant traiter vos activités en tant que tâches et les afficher dans leur propre fenêtre dans l'écran de synthèse..

Par exemple, une application de navigateur Web peut être définie pour que chaque onglet ait sa propre fenêtre. Dans l'écran précédent, une seule application de navigateur aurait été affichée..

Si vous avez un site web, vous pouvez ajouter  dans votre section d'en-tête pour que l'aperçu affiche la couleur donnée en tant qu'en-tête de votre site Web.

Runtime et ART

Les versions précédentes d'Android utilisaient toutes Dalvik comme machine virtuelle de processus. Les applications sont généralement écrites en Java, qui est ensuite compilé en bytecode. Ceci est ensuite traduit en bytecode de Dalvik et stocké dans .dex et .Odex fichiers, pour que Dalvik puisse ensuite traiter. 

Ceci est une explication très élémentaire de ce que fait le moteur d'exécution et, espérons-le, transmet son importance. Les applications s'exécutent sur la machine virtuelle de processus afin que ses performances déterminent les performances globales de l'application et constituent un goulot d'étranglement..

Dalvik utilise JIT (Just In Time), ce qui signifie qu’elle ne lance que l’application au moment où elle est nécessaire.

ART, d’autre part, utilise un AOT (Ahead Of Time) compilation pour compiler le bytecode. Quand une application est installée, elle est compilée par ART dex2oatutilitaire, qui crée des exécutables ELF au lieu de fichiers .odex. A partir de là, l'application est exécutée à partir de l'exécutable ELF déjà compilé..

Cela représente beaucoup d'économies de compilation au détriment de la durée d'installation des applications et de l'espace disque supplémentaire.

Grâce à l'ajout de la collecte améliorée des déchets (GC), ART surpasse presque Dalvik, offrant ainsi une expérience Android plus nette et plus fluide..

Android TV

Pour vous aider à amener votre application sur de grands écrans, Lollipop présente le Interface utilisateur Leanback et le Cadre de saisie TV Android (TIF). La bibliothèque Leanback fournit des widgets d'interface utilisateur pour les applications TV. Le format TIF est conçu pour permettre aux applications TV de gérer les flux vidéo provenant de sources telles que les entrées HDMI, les tuners TV et les récepteurs IPTV..

Graphique

Khronos OpenGL ES 3.1 a été ajouté. Les principales caractéristiques comprennent:

  • calculer les shaders
  • objets de shader séparés
  • amélioration du langage d'ombrage
  • extensions pour les modes de fusion avancés et le débogage
  • commandes de tirage indirect
  • textures multi-échantillons et pochoir

Android 5.0 reste rétrocompatible avec OpenGL ES 2.0 et 3.0.

Android Extension Pack (AEP)

Pour compléter OpenGL ES 3.1, un ensemble d'extensions OpenGL ES ont été ajoutées et permettent les fonctionnalités suivantes:

  • prise en charge garantie de fragment shader pour les tampons de stockage de shader, les images et atomics (la prise en charge de fragment shader est facultative dans OpenGL ES 3.1)
  • différents modes de fusion pour chaque pièce jointe de couleur dans un tampon d'image
  • shaders de tessellation et de géométrie
  • Format de compression de texture ASTC (LDR)
  • interpolation et ombrage par échantillon

Vue Chrome

Android Lollipop comprend une nouvelle version de Chromium for Web View, basée sur la Chrome m37 version qui ajoute le support pour WebAudio, WebRTC et WebGL.

La prise en charge native des composants Web est également incluse dans la mise à jour et permettra l’utilisation de Polymer et de ses logiciels. Conception matérielle éléments sans nécessiter de polyfills.

Depuis Android 5.0, Chromium peut maintenant être mis à jour à partir du Play Store. De nouvelles API et corrections de bugs seront disponibles immédiatement et ne nécessiteront plus de mise à jour du système d'exploitation Android..

Navigation multimédia    

Le nouveau android.media.browse L'API permet aux applications de parcourir la bibliothèque de contenu multimédia d'autres applications. le MediaBrowserService La classe est utilisée pour exposer le média dans une application, alors que la MediaBrowser la classe est utilisée pour interagir avec un service de navigateur multimédia.

Contrôle de lecture multimédia

Deux nouvelles classes ont été introduites pour simplifier la gestion du contrôle de la lecture sur différentes interfaces utilisateur et services..

MediaSession remplace RemoteControlClient. Il fournit un ensemble de méthodes de rappel utilisables dans les contrôles de transport et les boutons multimédias.. MediaController peut être utilisé pour créer une application de contrôleur multimédia personnalisée, qui peut ensuite être utilisée pour envoyer des commandes à un MediaSession.

Nouveaux capteurs

Deux nouveaux capteurs ont été introduits:

  • Détecteur d'inclinaison: améliore la reconnaissance de l'activité
  • Capteur de fréquence cardiaque: capable de rapporter la fréquence cardiaque de l'utilisateur en contact avec l'appareil

Bien entendu, ces deux capteurs nécessitent du matériel pris en charge.

Approvisionnement géré

Les administrateurs de périphériques peuvent utiliser un service de provisioning géré ajouter des applications à un profil géré distinct. S'il existe un compte personnel existant sur un périphérique qui a été provisionné, les applications de profil géré s'afficheront à côté des applications existantes..

Propriétaire de l'appareil

Un propriétaire de périphérique est un type spécialisé d'administrateur de périphérique qui peut créer et supprimer des utilisateurs secondaires et configurer des paramètres globaux, donnant ainsi essentiellement à Android un administrateur traditionnel et un système de compte utilisateur..

Épinglage d'écran

Le repérage d'écran est une nouvelle fonctionnalité comparable au mode kiosque sur iOS. Le repérage d'écran comprend les fonctionnalités suivantes:

  • La barre d'état est vide.
  • Les autres applications ne peuvent pas lancer de nouvelles activités.
  • Les notifications utilisateur et les informations d'état sont masquées.
  • L'application actuelle peut créer de nouvelles activités tant qu'aucune nouvelle tâche n'est créée..

Le repérage d’écran peut être activé manuellement via Paramètres> Sécurité> Épinglage d'écran. Il peut également être activé par programme. le startLockTask Cette méthode peut être appelée depuis votre application pour activer le repérage d’écran. Si l'application ne provient pas d'un propriétaire de périphérique, une invite de confirmation s'affiche. le setLockTaskPackages Cette méthode peut être appelée par une application propriétaire et évitera l'invite de confirmation..

Pour désactiver l’accrochage d’écran, vous devez appeler stopLockTask s'il a été initié par une application propriétaire d'appareil. S'il a été activé par un non-propriétaire de périphérique, l'utilisateur peut quitter le mode épinglage d'écran en maintenant enfoncés les boutons précédent et précédent..

Partage d'écran

La capture d'écran est maintenant possible grâce au nouveau android.media.projection Apis. La créer VirtualDisplay Cette méthode permet à l’appel d’appel de capturer l’écran dans un objet de surface, qui peut ensuite être envoyé sur le réseau. L'API peut uniquement capturer du contenu non sécurisé et n'inclut pas l'audio.

Caméra

La capture d’images RAW est enfin arrivée sur Android, grâce au nouveau android.hardware.camera2 API.

Bluetooth basse énergie

Les appareils Android peuvent maintenant agir commePériphériques Bluetooth LE. Les applications peuvent en tirer parti pour faire connaître leur présence aux appareils à proximité. Avec le nouveau android.bluetooth.le API, vous pouvez permettre à vos applications de se connecter aux périphériques Bluetooth situés à proximité, de diffuser des publicités et de rechercher des réponses. Ces nouvelles fonctionnalités sont également fournies avec une nouvelle autorisation de manifeste, BLUETOOTH_ADMIN.

Ces API seront extrêmement utiles pour travailler avec des appareils portables, des applications de santé et de fitness et des applications de surveillance. Tous ces domaines sont des zones de croissance prévues pour Android dans un avenir proche.

NFC

La technologie NFC a été améliorée de plusieurs manières:

  • Android Beam est maintenant une option dans le menu de partage.
  • invokeBeam peut être utilisé pour initier le partage de données. Vous n'avez plus besoin de cogner physiquement les périphériques.
  • registerAidsForService et setPreferredService ont été ajoutés pour aider au développement d'applications de paiement.

Connexions réseau multiples

Les nouvelles API permettent aux applications d'interroger les réseaux sur les fonctionnalités disponibles, telles que le type de réseau: cellulaire, mesuré ou Wi-Fi..

Cadre d'impression

Les images bitmap peuvent maintenant être générées à partir de pages de document PDF, à l’aide du nouveau PdfRendered classe.

Editeurs de méthode de saisie (IME)

Vous pouvez maintenant parcourir différents IME disponibles sur la plate-forme. Ceci est accompli en utilisant le shouldOffetToNextInputMethod méthode.

2. Conception matérielle

L'une des principales fonctionnalités d'Android 5.0 est la conception de matériel. La conception matérielle est un ensemble de directives relatives à la conception visuelle, au mouvement du contenu et à l'interaction de l'utilisateur. Les instructions sont conçues pour aller au-delà d’Android et sont conçues pour un large éventail d’appareils et de plates-formes..

Polymer est un exemple remarquable de la nature multiplate-forme de Material Design. Google a créé plusieurs éléments Web de Material Design pour faciliter la construction de sites Web / d'applications Web ayant pour thème Material Design. Malgré sa nature multiplate-forme, Material Design reste toujours le point central d'Android 5.0..

Nouveaux widgets

Lollipop a introduit deux nouveaux widgets:

  • CardView: Ce widget permet de regrouper les informations de manière cohérente. La profondeur de la carte elle-même peut être modifiée pour la promouvoir ou la mettre en valeur au besoin.
  • RecyclerVoir: Ceci est une version plus avancée de la ListView widget.

Nouveaux thèmes    

Deux nouveaux thèmes utilisent les principes de conception de matériaux, Matériau sombre et Matériau léger. Les deux appliquent de nouveaux widgets système d'interface utilisateur. Les widgets système sont faciles à personnaliser et vous pouvez définir leur palette de couleurs. Plusieurs animations et transitions sont également des valeurs par défaut de ces thèmes, telles que l’effet d’ondulation..

Profondeur et Ombre

La profondeur peut maintenant être modifiée sur les vues Android via la nouvelle propriété Z. Les valeurs Z les plus élevées projettent des ombres plus larges autour de la vue, donnant ainsi l’apparence d’une élévation accrue. C’est l’un des principes fondamentaux de la philosophie Material Design où l’objectif est de créer un aspect textile à l’aide de couches.

Animations

L'animation est un autre élément essentiel de Material Design. Des animations de commentaires tactiles et une multitude de transitions d'activités contribuent toutes à créer une expérience tactile et immersive. L’objectif n’est pas que des informations apparaissent ou disparaissent. Chaque vue / objet doit apparaître comme un calque sur une surface.

Imaginez un beau bureau propre et blanc. Sur ce bureau, vous avez divers papiers, post-it notes et articles de papeterie. Lorsque vous regardez le bureau, ce n'est pas une vue à plat. Le bureau contient plusieurs calques et les objets ont des profondeurs différentes et projettent des ombres sur le calque situé en dessous..

Si vous avez besoin de voir une page sous une autre page, vous devez déplacer la page de couverture. Si vous souhaitez placer votre ordinateur portable sur le bureau, vous devez faire glisser les papiers existants pour dégager de la place. Lorsque vous touchez quelque chose sur votre bureau, il bouge, se plie, vibre et mélange..

3. Utiliser Android 5.0

Pour démarrer avec Android 5.0, téléchargez la plate-forme SDK pour v21 dans votre IDE préféré. Cela se fera probablement par le biais du gestionnaire de SDK dans Eclipse ou Android Studio..

dans le ApplicationManifest.xml fichier et / ou build.gradle fichier, définissez le targetSdkVersion à 21.

Changements importants et considérations:

Il y a un dicton dans le monde des super-héros: "Un grand pouvoir entraîne de grandes responsabilités." Il en existe un similaire dans la communauté de développement: "Les mises à jour volumineuses sont accompagnées de tests approfondis".

Voici une liste de contrôle rapide, si vous avez déjà une application Android:

  • Mon application fonctionne-t-elle sans problème sous ART??
  • Si mon application utilise les notifications, comment seront-elles intégrées à l'écran de verrouillage?
  • L’interface utilisateur peut-elle bénéficier d’une actualisation? Est-ce que la conception matérielle est un bon choix et quel travail?
  • le RemoteControlClient la classe est maintenant obsolète alors devrais-je passer à la MediaSession API?
  • WebView bloque désormais les contenus mixtes et les cookies tiers par défaut. Dois-je utiliser setMixedContentMode et setAcceptThirdPartyCookies?

Vous trouverez une liste complète sur le site Web Android Developer.. 

4. Compatibilité descendante

L'un des principaux changements d'Android 5.0 est l'interface utilisateur avec l'introduction de Material Design. L'utilisation de Material Design et l'application des meilleures pratiques de conception nécessitent beaucoup de réflexion et de travail de la part du développeur..

Pour les applications existantes, les développeurs sont confrontés à des défis supplémentaires, tels que la mise à profit des nouvelles fonctionnalités de la version 5.0 tout en maintenant la compatibilité en amont, en fournissant une expérience utilisateur cohérente à travers différents niveaux d'API..

Pour montrer comment utiliser Android 5.0 et Material Design dans votre projet, j'ai créé une application simple. Il consiste en une seule activité qui affiche plusieurs widgets. J'ai ensuite ajouté ce qui suit au res / dossier:

  • menu-v21 /: Ceci contient une copie du menu_main.xml et sera utilisé pour afficher les icônes Material Design sur les appareils Android 5.0.
  • valeurs-v11 /: Ceci contient un styles.xml fichier qui définit le thème de base à holo.lightpour tous les appareils fonctionnant sous Android 3.0 ou supérieur. Des modifications d'apparence dans la barre d'action ont également été apportées dans ce fichier..
  • valeurs-v21 /: Ceci contient un styles.xml fichier qui définit le thème de base sur material.lightpour les appareils fonctionnant sous Android 5.0 et supérieurIl définit également les couleurs de base.

L'image ci-dessous montre l'application en cours d'exécution sur un appareil 4.4.2 et un appareil 5.0. Le thème Matériau a été appliqué à la version 5.0 ou plus. Les autres appareils recevront le thème holo.light. Il montre l'état par défaut des deux thèmes et les différences d'interface utilisateur entre eux..

Barre de couleur et d'action 

Avec Material Design, définir les couleurs de base de votre application pour s’adapter à votre marque n’a jamais été aussi simple. Par exemple, ajouter le code ci-dessous à votre thème définira la notification.barre d'arrière-plan, l'arrière-plan de la barre d'action et les widgets de l'interface utilisateur.

 

Les résultats peuvent être très frappants et l'application peut devenir identifiable en un coup d'œil. Il existe également un nouvel ensemble d'icônes Material Design, qui constituent un autre moyen rapide et simple de conférer une interface utilisateur moderne à toute application existante..

Voici un exemple de la différence faite en utilisant les icônes Material Design et en définissant les couleurs du thème principal:

L'utilisation de la barre d'action et de la couleur est une caractéristique dominante de Material Design et permet de marquer et de distinguer efficacement votre application. Un moyen de fournir une expérience utilisateur cohérente à travers différents niveaux d'API consiste à répliquer ces fonctionnalités dans des styles et des thèmes destinés à différents niveaux.

Par exemple, si nous comparons l'application s'exécutant sur un périphérique 4.4.2 avec un périphérique 5.0:

Comme vous pouvez le constater, ils ont un aspect très distinctif. Pour améliorer cela, nous pouvons utiliser les mêmes icônes Material Design sur des niveaux d'API inférieurs à 5.0. Nous pouvons également styler la barre d'action de sorte qu'elle ressemble à la version de Material Design.

Pour les icônes, on peut changer les images en res / menu / menu-main.xml aux icônes de conception matérielle. Pour la barre d’action, nous pouvons éditer le res / values-v11 / styles.xml fichier qui ressemble à ce qui suit:

    

Voici un autre regard sur les deux comparés, après les changements:

La version fonctionnant sur le périphérique 4.4.2 devient plus reconnaissable en tant que notre application et notre marque. En l'absence de modifications significatives, l'application semble déjà plus cohérente entre les différentes API et est plus moderne..

Utilisation de fonctionnalités non prises en charge

Certaines fonctionnalités sont exclusives à Android Lollipop, notamment les transitions d’activités et les animations de révélation. Cela ne signifie pas nécessairement que vous devez renoncer à les utiliser ou créer une application distincte qui les utilise. Vous pouvez vérifier la version du système au moment de l'exécution et n'effectuer certains appels d'API que si l'application s'exécute sur une version appropriée d'Android..

Un exemple pour vérifier si le système est 5.0+:

// Vérifiez si nous utilisons Android 5.0 ou une version ultérieure si (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) // Appelez des API de conception de matériau ici else // Implémentez cette fonctionnalité sans conception de matériel

Garder les thèmes précédents

Ce n'est pas toujours parce que vous pouvez faire quelque chose que vous devriez le faire. Il n’ya absolument aucun problème avec le thème Holo utilisé par Android depuis Honeycomb. Vous pouvez proposer d'autres modèles et thèmes et les appliquer à différents niveaux d'API. Par exemple, vous pouvez appliquer le thème Conception de matériaux à tous les périphériques dotés d'une API de 5.0 ou plus. Le thème Holo s'appliquera à tout appareil doté d'une API de 3.0 et plus. Enfin, le thème classique pourrait être appliqué à tous les appareils inférieurs à 3.0.

Pour ce faire, vous utiliseriez les répertoires suivants dans votre projet:

  • res / valeurs / (localisation par défaut)
  • res / valeurs-v11 / (pour 3.0 +)
  • res / valeurs-v21 / (pour 5.0 +)

Dans chaque répertoire, vous pouvez placer un styles.xml fichier qui définira le thème souhaité.

Bibliothèques de soutien    

Les bibliothèques de support de la V7 r21 prennent en charge plusieurs widgets et fonctionnalités de Material Design..

Theme.AppCompat permet d'utiliser la palette de couleurs en développant l'un des thèmes AppCompat. Par exemple, Theme.AppCompat.Light:

Il fournit également des widgets Material Design pour les éléments suivants:

  • Éditer le texte
  • CheckBox
  • Fileur
  • Bouton radio
  • SwitchCompat
  • CheckedTextView

La bibliothèque de support V7 donne également accès au nouveau CardView et RecyclerVoir widgets.

Si vous vous en tenez à AppCompat dans vos conceptions de disposition, il est possible de créer une seule disposition qui conservera les mêmes visuels à travers plusieurs niveaux d'API..

Pour utiliser la bibliothèque de support V7, vous devez l'ajouter à votre projet. Si vous utilisez Android Studio et Gradle, vous pouvez l’ajouter à la section Dépendances du répertoire. build.gradle fichier:

dépendances compile 'com.android.support:appcompat-v7:21.0.+' compiler 'com.android.support:cardview-v7:21.0.+' compiler 'com.android.support:recyclerview-v7:21.0.+'  

Lorsque vous incluez la bibliothèque de support v7, vous devez définir votre minSdkVersion à 7.

Conclusion

Android 5.0 est une version majeure. Les mises à jour telles que ART et les notifications à l'écran auront un impact immédiat. D'autres mises à jour, telles que la conception des matériaux, la vue d'ensemble et la planification des travaux, demanderont du temps aux développeurs pour les implémenter et les adopter..

Les utilisateurs joueront également un rôle important dans l’avenir proche d’Android. Les tentatives précédentes d’apporter Android à la télévision n’ont pas été bien accueillies. Dans l'ensemble, les téléviseurs intelligents ne sont pas encore devenus des appareils indispensables.

Avoir une expérience utilisateur unifiée et familière sur plusieurs appareils et écrans est excitant et, à mon avis, nécessaire pour aller de l'avant. Le succès de ce projet dépendra toutefois de l’adoption et de la demande des utilisateurs..

Google a ouvert la voie à Google I / O de cette année et avec Lollipop, les acteurs sont maintenant assemblés. Peu importe la durée de la pièce et les applaudissements qu’elle reçoit, personne ne peut dire que Google n’a pas essayé..