Dans un billet de vacances j’ai montré des bougies électriques utilisées en Espagne pour faire des offrandes :
Vous glissez une pièce dans la fente, une bougie électrique s’allume et vous formez un vœu, ou plutôt une prière. Un peu plus tard, j’ai montré les offrandes à Sainte Enimie, dans une église du Tarn (ici : http://blogs.mediapart.fr/blog/vincent-fleury/040912/recuerdos-de-torqual-souvenirs-de-torqual)
C’est ainsi qu’a germé dans mon esprit (malade, je le reconnais) l’idée d’une application consistant à faire brûler une bougie sur un smartphone, en échange de quoi 10cts vont à l’épiscopat (on appellera ça l’appliscopat). D’ailleurs, j’avais évoqué les applications pour smartphones dans un billet controversé au sujet des téléphones portables (c’est ici http://blogs.mediapart.fr/blog/vincent-fleury/191211/mon-smartphone-est-aberrant ), en promettant déjà d’en faire une.
En résumé, je trouve ça génial, un téléphone portable, et je ne voudrais pas mourir sans avoir écrit une application. Y’a sans doute mieux comme promesse de chose à faire avant de mourir, je le conçois.
Les vacances de la Toussaint m’ayant donné quelques loisirs, j’en ai profité pour travailler (oui, comme vous tous, je profite de mes loisirs pour travailler), et j’ai donc appris à faire une appli pour smartphone. Ce billet s’adresse donc aux seules personnes qui aimeraient savoir comment on fait une appli pour téléphone, ceux que ça n’intéresse pas, ou bien qui le savent déjà, peuvent reprendre une activité normale, plutôt que de critiquer, parce que du point de vue d’un développeur Android, ce qui suit est assez pathétique.
Donc, voici le projet : faire une appli telle que, quand on clique sur l’icône de l’appli, ça fait brûler un cierge. Pour être plus précis, j’avais déjà cette idée en tête dans le Tarn, et j’avais donc filmé dans l’église de Saint Guilhem des cierges en train de brûler (à Saint Guilhem sont révérées des pseudos reliques de la croix). Mon objectif est donc d’utiliser le film de cierges en train de brûler que j’ai pris dans l’église de Saint Guilhem, et qui dort dans mon téléphone depuis le mois d’août. Avec un peu de chance, la piété survit à la digitalisation, et quelque chose de spirituel va passer dans l’appli pour smartphone (spirituel, c’est le cas de le dire).
Entre le mois d’août et aujourd’hui le temps a certes passé. Je pourrais vous dire comme Gaudi : « mon client n’est pas pressé », mais c’était à propos de la Sagrada Familia et moi je ne vous propose qu’une minuscule application assez lamentable, donc on ne va pas trop mythonner comme disent les jeunes aujourd’hui, on a les sacrés projets qu’on peut.
Donc, pour faire une appli comme ça, il faut simplement : l’icône de l’appli, et le film. Pour faire l’icône de l’appli, j’ai choisi, justement, une icône, que ma fille possède, et qui doit être, si je me souviens bien, un cadeau de baptême. Vous constaterez que c’est une icône orthodoxe, d’où vous pouvez conclure que ma fille est baptisée orthodoxe (« orthobox », comme elle disait petite), mais c’est de la private joke, à un point que vous n’imaginez même pas). Donc voici l’icône, sur la table du salon.
Première étape : fabrication de l’icône et du film.
Pour faire l’icône, j’ai transformé la photo de l’icône à l’aide de IrfanView, et l’ai mise aux dimensions requises pour une icone d’appli (72x72). (IrfanView ici : http://www.irfanview.com/ ). Au final ça donne ça :
Pour faire le film j’ai récupéré le film pris dans le Tarn avec mon téléphone (je me l’envoie à moi-même par mail, à partir du téléphone, puis je récupère le film sur mon ordi à l’aide de gmail).
J’ai transcodé ce film en AVI avec AV4you (mode non compressé), puis je l’ai ouvert avec ImageJ (ImageJ ici : http://rsb.info.nih.gov/ij/), mis aux bonnes dimensions avec la fonction Scale, et sauvegardé sous gif (animated gif, c’est le format standard pour les animations sur internet, c’est une sorte de jpeg qui bouge). Ça donne un film que je peux, par exemple, mettre directement dans cette page web. Le voici :
la petite scorie qui est apparue devant est une bannière de publicité car j’ai utilisé la version gratuite de AV4you. Mais comme j’ai réduit d’un facteur 5 la taille du film, la bannière de pub est toute petite.
Ensuite faire l’appli téléphone avec ces deux choses est relativement compliqué pour un débutant, mais on peut s’aider de « Faire une appli, pour les nuls », sauf que l’édition que j’avais du livre est en retard de plusieurs métros sur les sites de téléchargement que le livre recommande, et aussi en retard sur les différentes versions des logiciels ; mais ça peut servir comme canevas, si vous n’êtes pas « trop » nul, ça vaut dans les 25 euros.
Pour la faire courte, il faut installer un environnement de programmation qui s’appelle Eclipse, et qui permet d’écrire des lignes de programme en langage Java (j’ai oublié de dire que je programme tout sous android, pour un smartphone LG Optimus black). Le programme Eclipse se trouve ici (http://www.eclipse.org/downloads/), il est gratuit. Cependant, Eclipse est une plateforme de programmation qui s’adresse à tous les ordinateurs (en fait, c’est la définition des programmes en Java, ils sont « portables » d’une machine vers une autre). Pour développer des applis pour téléphone, il faut un kit de développement qu’on appelle SDK qui s’ajoute à Eclipse, et qu’on trouve ici : http://developer.android.com/sdk/index.html.
A noter : le téléphone, c’est juste un petit ordinateur.
Enfin, le grand « truc » du développement d’application est l’émulateur. En fait, on ne rédige pas des applications directement pour son téléphone, mais pour un « Faux téléphone » qui est ouvert sur votre ordinateur, et qu’on appelle une machine virtuelle. Donc, il faut le « simulateur de téléphone », qu’on appelle AVD (Android Virtual quelque chose) et qu’on trouve je ne sais plus où, c’est indiqué dans « Les applis pour les nuls ».
Une fois qu’on a installé Eclipse, le SDK (kit de développement) et l’AVD (le simulateur de vol-pardon, de téléphone), on ouvre Eclipse. C’est compliqué comme un tableau de bord de 747, mais pour faire des choses simples, c’est pas si compliqué.
L’aspect général d’une session de travail est comme ça :
Mais dans la pratique on n’utilise vraiment que 2 fenêtres : la fenêtre de mise en page des dessins ou animations qu’on veut mettre en page (dans mon cas le cierge qui brûle). C’est la fenêtre « layout », laquelle fenêtre est divisée en deux : soit l’option fenêtre en lignes de code, soit l’option fenêtre graphique, dans laquelle vos dessins apparaissent tels qu’ils seront. Dans l’option graphique, on peut à la souris positionner des boutons, des images etc. et Eclipse génère automatiquement les lignes de codes correspondantes. La fenêtre de session Eclipse que je viens de montre représente en fait la fenêtre graphique dans laquelle on construit à la souris le contenu surface virtuelle du téléphone.
Pour ma part, j’ai préféré écrire le code à la main, ça permet de positionner les images exactement comme on veut au pixel près (le déplacement des images à la souris est buggé, on dirait, mais c’est peut-être moi qui ne sais pas l’utiliser).
La seconde fenêtre qu’on utilise beaucoup est la fenêtre du programme lui-même, c’est là que son programmées les actions qui seront faites quand on cliquera sur l’icône.
Donc pour faire l’appli « cierge », on commence par ouvrir un projet sous Eclipse. Ça a l’air compliqué, mais c’est le tableau de bord du 747 qui gère tous les liens entre tous les fichiers du programme, qui permettent de faire voler votre application ; donc faut pas s’occuper de tout, à vue de nez, vous n’êtes concerné que par 1% de ce qui est généré par l’application. La seule chose que vous avez à faire, c’est au moment de l’ouverture du projet, de remplir les cases « nom de l’appli » et ainsi de suite. Et la seule chose vraiment importante, c’est au moment de choisir l’icône de l’appli, de passer dans le champ « image », l’image de l’appli. C’est dans cette fenêtre :
Si vous l’avez mise au préalable dans le dossier res.layout.drawable.xhdpi c’est mieux. Kezaco : ah ben Eclipse met tous les petits dessins qui concernent l’appli dans un dossier layout (mise en page), lequel contient les images comme l’icône de l’icône. Donc, ayant mis la petite icône 72x72 dans le dossier res.layout.drawable_xhdpi, elle dort là gentiment jusqu’à ce qu’on l’appelle pour qu’elle devienne l’icône de l’application. (Res c’est pour « ressources », layout c’est pour « mise en page » et drawable_xhdpi c’est pour « dessins en haute résolution »).
Ensuite les lignes de programme qui correspondent à faire jouer l’animation ; ben comme je suis incapable de les inventer, en cherchant sur internet, je les ai trouvées ici : http://www.youtube.com/watch?v=uRI4PuxDuqg même que y’a un film d’un gars qui vous explique comment les pupitrer, il s’appelle Jeff Jones.
Donc il suffit de mettre les lignes de code qui appellent votre animation, dans le programme ; et aussi de mettre dans les librairies d’Eclipse, les « sous-programme » de M. Jones qui permet de jouer des animations gif. Evidemment, vous aurez au préalable mis votre animation dans les dossier layout puisque c’est une sorte d’image animée, que vous voulez voir apparaître sur le téléphone.
Voici la fenêtre programme, avec les lignes de codes dedans :
Donc, une fois que ça est fait, vous exécutez le programme, en prenant soin de lancer le simulateur de téléphone. Et on obtient (c’est très long à venir) : une sorte de faux téléphone sur lequel apparaît l’icône orthobox de ma fille (si si regardez bien, on voit l'icone qui était tout à l'heure sur la table de la salle à manger, elle est devenue un bouton d'application appelée "exvoto" sur un "faux téléphone", qui est dans mon ordi:
Et quand on clique dessus, ça lance l’animation du cierge sur un "faux téléphone" :
J’ai plus qu’à mettre l’application sur mon téléphone avec le câble USB, mais là c’est bête : si je fais ça, je ne pourrais pas photographier mon téléphone en train d’exécuter l’appli, puisqu’il me faut le téléphone, pour filmer le téléphone en train de brûler un cierge. Donc je m’arrête là pour ce billet, mais en gros, ça marche, avec de l’ordre d’une semaine de prise de tête.
Mon sentiment pour finir, c'est que tous les téléphones, au fond, sont identiques. Les programmeurs sont condamnés à utliser la même plateforme de développement, en sorte que c'est essentiellement la programmation qui les distingue les uns des autres. Cela pourrait permettre à des pays dans la panade comme la France de revenir dans la course, si le hard devient moins important.
Merci Seigneur pour ce petit exercice.