Articles récents
Android : Introduction au développement d'applications JAVA
Android est un système d'exploitation pour mobiles/tablettes très en vogue basé sur Linux. Initialement développé par la société Android, et depuis 2005 par le géant américain Google.
Google propose un kit de développement en JAVA pour les applications mobiles. ainsi qu'une machine virtuelle machine compatible appelée JVM (JAVA Virtual Machine) de Dalvik.
A la différence d'un développement JAVA classique, la mobilité propose des contraintes que la JVM doit prendre en compte comme des limitations matériels (processeur peu performant, faible capacité mémoire, autonomie limitée).
1)Présentation générale
Android est un Operating System qui ne cesse d'évoluer, en quatre années prés d'une quinzaine de versions sont apparues. Cela demande aux développeurs de s'adapter aux nouvelles versions par de nombreux tests multi-plateforme et de faire en sorte que le code soit supporté entre les différentes versions de l'API.Nom |
API |
Version |
Date de sortie |
Jelly Bean | 16 | 4.1 | Juillet 2012 |
Ice Scream Sandwich | 14-15 | 4.0 | Octobre 2011 |
Honeycomb | 11-13 | 3.0-3.2 | FĂ©vrier-Juillet 2011 |
Gingerbread | 9-10 | 2.3 | DĂ©cembre 2010 |
Froyo | 8 | 2.2 | Mai 2010 |
Eclair | 7 | 2.0-2.1 | Octobre 2009 |
Donut | 4 | 1.6 | Septembre 2009 |
Cupcake | 3 | 1.5 | Avril 2009 |
1.0-1.1 | 1-2 | 1.1 | Septembre 2008 |
La version 3 est dédiée aux tablettes, et depuis la version 4, Android est compatible sur les deux plateformes (téléphone & tablette). A noter que Android supporte un grand nombre de taille d'écrans entre le QVGA 240x320 (Quarter Video) au WXGA800 en 800x1280 (Wide Video).
L'architecture du système est basé sur une couche Linux qui fait l'interface entre le matériel et les couches applicatives. Pour les couches applicatives, on distingue :
Les composants d'applications:
Le framework gère le cycle de vie de l'application selon les événements et les ressources matériels. Cela permet de ne pas donner accès à des fonctions critiques aux développeurs et donc de gérer les erreurs, les problèmes de ressources, ... |
2)Les activités
Lors de l'ouverture de l'application la JVM créé un processus Linux, le processus initial est lié au lancement de l'activité initiale. Les activités sont associées à une vue (view). Il est alors possible de lancer d'autres activités par le biais des intentions, et le framework gère les intentions qui lui sont proposées.Il est possible de lancer plusieurs activités simultanément, le système les empile alors dans une pile appelée Back stack, de la sorte que l'activité la plus récente soit sur le dessus de la pile (et donc c'est elle qui sera visible).
A noter que la pression sur bouton de retour/back termine l'activité dite courante.
Le cycle de vie de l'activité:
Les activités disposent d'un cycle définit comme le schéma ci-dessous, c'est le framework qui gère Plusieurs états sont définis :
3)Premier programme
Pour créer un sa première application Android, vous pouvez faire sous Eclipse : Menu File , New, Android Project (Mettre un nom au programme), choisir la machine AVD qui correspondra à votre plateforme de test, préciser le nom du package, Finish. Pour lancer, sur le projet choisir Runs as, Run configuration..., préciser la target AVD. L'émulateur se lance, prenez votre mal en patience, c'est assez long. AVD est gourmand en ressource, n'hésitez à gonfler la RAM de votre station de travail.Si on regarde le code, on observe que pour créer une activité, il faut :
1)Créer une classe qui hérite de la classe android.app.Activity en surchargeant la méthode onCreate(),
2) Appeler le super constructeur de création d'activité,
3) Associer la view à l'activité,
4) Surcharger les autres méthodes du cycle de vie.
A noter un fichier important, le fichier AndroidManifest.xml qui précise les différents éléments du programme. La définition est obligatoire dans ce fichier. Les éléments non définis ne seront pas pris en compte.
La moindre erreur dans ce fichier provoque un arrêt de l'exécution du programme.
Donc le premier programme FirstActivity.java ressemble Ă :
Avec String.xml :
Avec Main.xml :
Surcharge des méthodes du cycle de vie:
Notons que dans l'exemple précédent, nous avons surchargé la méthode onCreate() pour ajouter nos fonctionnalités. C'est ainsi que l'on peut surcharger les méthodes liées au cycle de vie de l'application, c'est à dire:
4) Les services et les intentions
Android fonctionne sur des plateformes qui seront très limitées en terme de ressources, il ne faut donc pas exécuter de tâche trop gourmande dans le thread principal sous peine d'avoir une erreur ANR (Application Not Responding). Pour cela, on utilisera les services qui dédiés aux tâches de fond pour traiter les opérations coûteuses et longues.Mais c'est le framework qui gérera les intentions, en effet il faudra passer par une intention qui propose le service. Le système selon des critères liés aux ressources lancera ou non la demande de service.
Donc, on créé une classe spécifique qui hérite de IntentService dans laquelle on surcharge les méthodes onCreate et onHandleIntent. La sous-classe IntentService se chargera de lancer le thread dédié au service. Le coeur du service doit être placé dans onHandleIntent(Intent intent). |
Et dans logcat on trouve :
L'API Log:
La classe android.util.Log propose plusieurs méthodes qui permettent la journalisation. Il existe plusieurs types de journalisation :
On peut ainsi faire du log dans le logcat (gestionnaire d’évènements).La syntaxe est de la forme :
Le TAG permet de séparer les différents niveaux de log, les logs debug et verbeux n'ont pas vocation à rester, ils sont utilisés uniquement durant la période de de développement.
5)Les ressources
Les ressources sont des fichiers externes utilisés par l'application, on les retrouve dans le projet sous le répertoire res.
Le concept des ressources est de rendre modulaire le code au maximum, sous la forme de plusieurs fichiers qui décriront les variables du programme, la mise en page des vues (layout), des images...
On trouve :
Lors de la compilation Eclipse générera automatiquement une classe R relative aux ressources. La classe définit les ressources sous forme de variables. Par exemple, R définit une classe R.string et une variable R.string.hello. A chaque modification le fichier R est réadapté automatiquement. On retrouve également la variable R.layout.main qui est chargée lors de la création de l'activité.
Donc pour utiliser ces variables android.R.type.nom_ressource, par exemple:
Le framework propose un objet ressource qui permet d'accéder aux variables par l'intermédiaire des getters:
DĂ©claration de variables en XML:
Le framework donne la possibilité de définir nos propres variables à l'aide de fichiers XML. Le fichier peut avoir n'importe quel type de variable, mais il est conseillé de les séparer en plusieurs fichiers XML.
La syntaxe des variables :