Je viens de terminer une petite application permettant de tester les différents Interpolators fournis avec Android. Certains doivent se demander ce qu’est un Interpolator. L’interface Interpolator définit en réalité une fonction définie sur [0;1] qui donne une valeur en général comprise, elle aussi entre 0 et 1 (mais cela n’est pas obligatoire). Imaginons que nous souhaitions créer une animation qui translate simplement un objet d’une position (x1,y1) à une position (x2,y2). Le principe même d’une animation consiste à placer l’objet sur la droite séparant (x1,y1) et (x2,y2). C’est exactement ici que l’Interpolator agit : il définit la position de l’objet sur cette droite en fonction du temps.

Le squelette donné ci-dessous est celui de l’interface Interpolator. On y retrouve une seule est unique méthode nommée getInterpolation(float).

/**
 * An interpolator defines the rate of change of an animation. This allows
 * the basic animation effects (alpha, scale, translate, rotate) to be 
 * accelerated, decelerated, repeated, etc.
 */
public interface Interpolator {
 
    /**
     * Maps a point on the timeline to a multiplier to be applied to the
     * transformations of an animation.
     * 
     * @param input A value between 0 and 1.0 indicating our current point
     *        in the animation where 0 represents the start and 1.0 represents
     *        the end
     * @return The interpolation value. This value can be more than 1.0 for
     *         Interpolators which overshoot their targets, or less than 0 for
     *         Interpolators that undershoot their targets.
     */
    float getInterpolation(float input);
 
}

Lorsqu’une animation est en cours, le framework fait des appels successifs à la méthode getInterpolation(float input) afin de déterminer la position de l’objet sur la droite. La valeur input correspond en réalité à l’avancement de l’animation (le temps) : 0 correspond au début de l’animation alors que 1 définit la fin de l’animation.

L’application “Ball Animation” que je viens de créer affiche simplement une boule qui se déplace à la position cliquée par l’utilisateur. Il est également possible de changer l’Interpolator et le temps de l’animation utilisés pour animer la boule. Les captures d’écran ci-dessous donnent un aperçu rapide de ce à quoi ressemble l’application.

 

Pour permettre à chacun d’accéder à mes applications, j’ai créé un projet sur Google Code. Je mettrais sur ce projet l’ensemble des applications que je ferais. La page d’accueil de ce projet est accessible à l’adresse suivante : http://code.google.com/p/cyril-android-apps/

Pour les intéressés, il est également possible d’accéder aux codes source des applications à l’aide du gestionnaire de version Subversion. Les sources de “Ball Animation” sont par exemple accessibles à l’adresse suivante :

http://cyril-android-apps.googlecode.com/svn/trunk/BallAnimation

Après avoir étudié la procédure d’installation du SDK Android, il peut être intéressant d’expliquer ce qu’est réellement Android. A vrai dire, je pense qu’il aurait en fait été préférable de faire cette présentation générale dans un premier temps et d’ensuite parler des outils d’aide au développement d’applications Android. La tradition le prouve : “Mieux vaut appâter le client avant de lui vendre le produit!”.

Cet article a pour objectif de montrer aux débutants ce que signifie le terme Android mais également de corriger/améliorer les connaissances des développeurs.

Le terme Android est le nom donné à la pile applicative conçue par Google et spécialement optimisée pour les appareils mobiles. Contrairement à une idée reçue (qui doit être due à l’utilisation du terme abusif “Android” pour désigner le framework), cette pile applicative n’est pas seulement composée d’applications et d’un framework de développement. Android est en réalité un ensemble de technologies allant d’un niveau de la machine (système d’exploitation) à un niveau plus élevé (applications).

La page de présentation sur le site des développeurs Android donne un très bon aperçu de ce que contient la pile applicative Android. Malheureusement, cette description n’est disponible qu’en anglais. Je vais donc la détailler par la suite :

Il peut être intéressant d’analyser rapidement ce schéma car il donne l’ensemble des fonctionnalités fournies par Android :

Applications

Android est fourni avec un ensemble de programmes de base (dites aussi applications natives) permettant d’accéder à des fonctionnalités telles que les émails, les SMS, le calendrier, les photos, les cartes, le web, etc. Ces applications sont développées à l’aide du langage de programmation Java. Pour l’utilisateur lambda, cette couche est la seule accessible et visible.

Il convient également de noter que ces applications sont développées par Google et donc POUR Google. Le calendrier va, par exemple se synchroniser avec Google Calendar alors que les cartes seront issues de Google Maps. Malgré cette position quelque peu dominante, Google précise tout de même que ces applications peuvent tout à fait être supprimées par l’utilisateur (qui maitrise un minimum l’informatique) qui le souhaite (même l’application “Home” - équivalent de l’explorer sous Windows - peut être modifié).

Le framework

Android laisse les développeurs créer leurs propres applications. Pour ce faire, les programmeurs peuvent accéder aux mêmes APIs que celles utilisées par les applications natives d’Android. Pour simplifier : si vous souhaitez développer, comme moi, sur le système Android, c’est à ce niveau que vous viendrez vous “placer”.

Les bibliothèques

En interne, Android inclut un ensemble de bibliothèques C/C++ utilisées par de nombreux composants de la plateforme Android. Ces bibliothèques sont en réalité accessibles au développeur par l’intermédiaire du framework. En effet, le framework Android effectue, de façon interne, des appels à des fonctions C/C++ (plus rapides à exécuter). N’oubliez tout de même pas que le framework vient également faciliter le développement en fournissant une architecture simple et conçue dans une optique de réutilisabilité. La liste ci-dessous énumère quelques-unes de ces bibliothèques :

  • Bibliothèque système C - implémentation (dérivée de BSD) de la bibliothèque standard C (libc), optimisée pour les systèmes Linux embarqués
  • Bibliothèques multimédia - basées sur l’OpenCORE de PacketVideo, elles permettent le support de nombreux formats audio et vidéo tels que MPEG4, H.264, MP3, AAC, AMR, JPG and PNG (la liste complète est disponible ici - en anglais)
  • Surface Manager - permet l’accès au sous-système d’affichage
  • LibWebCore - navigateur internet (sera probablement remplacé, à terme, par Google Chrome ou une version allégée)
  • SGL - moteur graphique 2D
  • Bibliothèques 3D - implémentation basée sur OpenGL ES 1.0 APIs
  • FreeType - rendu des polices de caractères
  • SQLite - base de donnée légère et puissante

Le moteur d’exécution Android

Chaque application Android tourne dans son propre processus et avec sa propre instance de machine virtuelle Dalvik (Dalvik VM). Dalvik VM a été conçue pour optimiser l’exécution multiple de machines virtuelles. Pour finir, la Dalvik VM repose sur le noyau Linux qui s’occupe des fonctions telles que les threads ou la gestion bas-niveau de la mémoire.

Noyau Linux

Android repose sur un noyau Linux (version 2.6) qui gère les services système comme la sécurité, la gestion mémoire, la gestion des processus, la pile réseau et les pilotes. Il agit également comme une couche d’abstraction entre le matériel et la pile logicielle.

La programmation sur la plateforme Android s’effectue à l’aide du SDK (Software Development Kit) fourni par Google. Ce dernier est, à l’heure où j’écris ces lignes (23 février 2009) dans sa version 1.1r1 disponible pour Linux, Windows et Mac OS X. Cet article décrit les différentes procédures à suivre pour installer le SDK et préparer son environnement de développement Android.

Introduction

Comme tout développement Java moderne, programmer sur Android peut s’effectuer avec une multitude d’outils : ant, éditeur de texte, environnement de développement intégré (EDI), etc. L’article qui suit se concentre sur le développement par l’intermédiaire de l’EDI Eclipse. Elle dispose en effet de plugins développés par Google qui facilitent le développement. Le plugin d’aide au développement sur Android limite par exemple le nombre d’actions à effectuer pour lancer une application sur l’émulateur, aide à la création d’interface graphique, etc. Les lignes qui suivent ne font donc pas état des méthodes plus “bas niveau” car il n’est pas essentiel (cela peut même être, au contraire, parfois déroutant) aux développeurs non expérimentés.

Téléchargements

Avant d’entamer l’installation du SDK, commençons par télécharger les différents fichiers nécessaires à l’installation :

  • Eclipse : Obtenez la dernière version de l’EDI Eclipse téléchargeable sur eclipse.org. Il n’est, bien entendu pas nécessaire de télécharger la dernière version d’Eclipse si vous la possédez déjà. Le SDK étant fourni sous forme d’un plugin, l’installation ne supprime en aucun cas les précédentes fonctionnalités de votre Eclipse. Néanmoins, certains programmeurs préfèrent disposer d’un Eclipse différent pour chaque type de développement.
  • Le SDK : Téléchargez la dernière version du SDK sur developer.android.com/sdk/. Le SDK se présente sous forme d’un fichier zippé qui dépend de la plateforme de développement (Linux, Windows ou Mac OS X).

Installation

L’installation de l’environnement de développement pour Android se passe en 2 parties : l’installation de l’EDI Eclipse et du SDK et ensuite l’installation du plugin et sa configuration.

Eclipse et le SDK

L’installation d’Eclipse et du SDK sont on-ne-peut-plus-simple. En effet, il suffit simplement de dézipper les deux dossiers dans le répertoire de votre choix (répertoire pas obligatoirement commun). Lorsque vos fichiers sont dézippés, il peut être intéressant d’ajouter le dossier du SDK dans le path. Cela permettra, lors de vos développements futurs, d’accéder facilement (en ligne de commande) aux différents outils fournis avec le SDK. Pour ce faire, suivez les procédures décrites ci-dessous en prenant soin de tenir compte de votre plateforme :

  • Windows : cliquez-droit sur “Poste de travail” et sélectionnez “Propriétés”. Dans l’onglet “Avancé” choisissez “Variables d’environnement”. Une nouvelle fenêtre doit normalement apparaitre. Dans cette fenêtre, double-cliquez sur la ligne nommée “Path” (accessible dans le tableau “Variables système”) puis ajoutez y le chemin absolu vers le répertoire tools/ de votre répertoire SDK. A titre d’exemple, si le chemin vers votre SDK est C:/Android/android-sdk-windows-1.1_r1 ajoutez C:/Android/android-sdk-windows-1.1_r1/tools (notez que le séparateur utilisé est le point-virgule).
  • Linux : Editez votre fichier ~/.bash_profile ou ~/.bashrc file. Recherchez une ligne qui définit la variable d’environnement PATH puis ajoutez y le chemin absolu vers tools/ de votre répertoire SDK. Si aucune ligne n’est présente, vous pouvez ajouter : export PATH=${PATH}:<votre_rep_sdk>/tools
  • Mac OS X : cherchez le fichier .bash_profile dans votre répertoire personnel puis effectuez la même procédure que pour Linux. Si aucun fichier .bash_profile n’existe pas, vous pouvez le créer.

Pour prendre en compte les changements apportés à votre path, il peut être nécessaire de redémarrer votre système.

Le plugin Eclipse

Il ne reste maintenant plus qu’à installer le plugin dans Eclipse. Dans Eclipse, faites Help > “Software Updates”. Dans la boite de dialogue, choisissez l’onglet Available Software puis Add Site. Entrez l’adresse ci-dessous dans le champ Location :

https://dl-ssl.google.com/android/eclipse/

Il est également possible d’utiliser l’adresse non sécurisée suivante ci la précédente ne semble pas fonctionner.

http://dl-ssl.google.com/android/eclipse/

Cliquez sur OK et suivez ensuite les instructions s’affichant à l’écran. Lorsque le plugin est installé, Eclipse demande à redémarrer, validez puis, au redémarrage, faites : Window > Preferences > Android. Dans le champ “SDK Location” choisissez le répertoire d’installation de votre SDK. Remarquez, cette fois ci, que le dossier demandé n’est pas <votre_rep_sdk>/tools mais bien <votre_rep_sdk>.

Vous disposez maintenant d’un environnement de développement adapté à la programmation sous Android. Ce dernier étant toujours en développement, certaines mise à jour sont parfois disponibles. Pour les prendre en compte, il suffit d’effectuer la même procédure de téléchargement du SDK, de le dézipper puis de modifier votre path et le “SDK Location” des préférences Eclipse.

Bonjour tout le monde et bienvenue sur AndroidDevBlog !

Je viens tout juste de créer ce blog traitant du développement sur Android. Les raisons qui m’ont poussé à entreprendre une telle action sont diverses et je vais donc tenter de vous les détailler dans la suite de ce post.

Comme vous le savez peut-être, je m’oriente actuellement (professionnellement parlant) vers la téléphonie mobile et notamment les OS (Operating Systems ou systèmes d’exploitation en français) mobiles. Mon cursus professionnel parle de lui même puisque j’ai par exemple effectué un stage en développement sur l’iPhone (développé par une certaine firme arborant une pomme pour logo…) durant l’été 2008. Depuis maintenant près de trois ans, je suis à l’écoute des nouvelles informations traitant de la téléphonie mobile de près ou de loin. Dans toutes ces informations, un OS m’a particulièrement interpellé il y a environ 2 ans : Android.

Développé principalement par Google, ce système d’exploitation basé sur Linux fournit une pile applicative complète et permet au développeur de programmer en Java (J2SE). Enthousiasmé par la plateforme, j’ai décidé durant ma quatrième année d’école d’ingénieur, de développer une application sur cette plateforme : un jeu de Go. Pour tout dire, l’application n’a pas été une réussite mais cela m’a permis de découvrir un système très très bien conçu.

Pour améliorer mes connaissances sur le système et en découvrir un peu plus sur Android, j’ai choisi de faire mon Projet de Fin d’Etudes (PFE) dans le domaine. Je suis donc actuellement stagiaire en développement sur Android chez Niji à Rennes (35). Ce stage est une occasion en or de me perfectionner sur la plateforme dans un environnement entrepreneurial. Au fil des jours, j’apprends de nouvelles choses sur ce système et c’est donc l’objet de ce blog : partager mes connaissances, mes impressions, mes astuces, etc.

J’aimerai traiter d’un dernier point : la langue. Autant ne pas vous cacher que j’ai longuement hésité à rédiger ce blog en anglais. Cela m’aurait surtout permis de m’exercer et d’améliorer mon anglais. Néanmoins, après de longues réflexions, j’en suis arrivé à une conclusion : les blogs de développement sur Android ne sont pas légion. De plus, la documentation fournie par Google est extrêmement complète mais n’est disponible qu’en anglais. Il me semblait donc plus logique de rédiger mon blog en français afin de permettre aux non anglophones d’étudier ce système Android. Il est tout de même possible qu’au grès de mes rédactions, certains articles soient en anglais (cela dépendra de mon humeur et/ou du public ciblé).

J’espère sincèrement que ce blog sera pour vous une source d’information et qu’il vous aidera dans vos développements Android futurs. Enfin, n’hésitez surtout pas à commenter les différents articles que je posterai. Cela permet en général d’avoir un regard plus critique sur le sujet traité et de corriger certaines fautes au passage.