Home
Tutoriel Android
Contents
1. Composant ListView e On en arrive au remplissage de la liste a partir de la base de donn es e Un ListView qui est la base d une ListActivity affiche des l ments sous forme de liste Voir http developer android com guide topics ui layout listview html e Le contenu du ListView est d fini par un Adapter par exemple un SimpleCursorAdapter pour un Cursor de bdd SimpleCursorAdapter e C est un objet qui associe une requ te SQL fournie sous forme d un curseur un ListView e On indique e quel curseur il faut lire e quel layout il faut utiliser pour chaque ligne e Par exemple android R layout simple _list_item_1 e Ce layout poss de des TextView dontdes identifiants sont connus text1 et text2 e quels champs de la requ te on doit afficher dans la liste e dans quel TextView on met tel champ Ajout d un adapter a la liste e Toujours la suite dans TutoAndroidBDDActivity onCreate SimpleCursorAdapter adapter new SimpleCursorAdapter this android R layout simple_list_item_1 cListelnfos new String info a new int android R id text1 setListAdapter adapter Ces m thodes sont maintenant obsol tes mais dans les SDK 2 x elles permettent de g rer l tat de la requ te sous jacente Raison une requ te peut durer trop longtemps et bloquer le syst me On avait crit l instruction suivante startManagingCursor cListelnfos Pour mettre jour la liste affic
2. Cr er une tablette virtuelle AVD 1 Relancer tools android 2 Menu Tools item Manage AVDs gt fen tre de gestion des AVDs AVD manager 3 Bouton new fen tre de cr ation d un AVD e Name MonPremierAVD e Target Android 2 1 ou 2 2 selon votre SDK 4 Retour dans gestion des AVDs bouton start e C est long lancer Te 5554 MaTablette dij D M 12 24 pm 0000 eGo 0000 afe aol lezado jo o w fe e r v lu r fo e a fs o r e fn s k es z x c lv s In m e lme _ Souris doigt Touche Home cran de base Touche F2 menu Touche esc retour Premiere manip configurer la tablette en Francais F2 Settings Language e Si le clavier virtuel crit en japonais c est un bug S lectionner un mode de gt il faut cliquer saisie longuement sur n importe quelle zone de saisie de texte et choisir le mode de saisie Clavier Android Type de probl mes bug a tr s trop fr quents avec Android chercher aide sur http stackoverflow com FAR E Ak Clavier Android 7 Communiquer avec la cible ADB e Un outil appel platform tools adb Android Device Bridge permet de communiquer avec l AVD ou la tablette connect e par USB e sorte de telnet adb shell e sorte de tftp adb push et adb pull adb devices liste les tablettes connect es et reconnues n et nom gt option
3. Classe BDD suite e Cr er une classe appel e BDD public class BDD BDDHelper helper e helper pour l ouverture cr ation SQLiteDatabase base l objet qui repr sente la base public void open Context activity throws SQLException cr er ou ouvrir la base de donn es helper new BDDHelper activity i base helper getWritableDatabase ite Base et Activ e Voici comment l activit ouvre la base public class TutoAndroidBDDActivity extends BDD bdd Override public void onCreate Bundle savedinstanceState super onCreate savedinstanceState setContentView R layout main bdd new BDD bdd open this e bdd est une variable globale qui reste affect e une fois l activit cr e Requ tes SQL et curseurs e Pour interroger la base on cr e un curseur e D finir Cursor cListelnfos en membre global e la suite de bdd open this rajouter ceci cListelnfos bdd getinfos startManagingCursor cListelnfos e Il reste d finir la m thode getinfos dans BDD public Cursor getinfos return base rawQuery SELECT _id info FROM infos null E Deux remarques importantes e Quand on cr e un curseur par un SELECT il est essentiel d extraire un identifiant appel _id pour les donn es SELECT _id FROM e Il doit tre plac en premier e M me si cet identifiant ne sert pas ensuite e Dans android2 1 les attributs sont nom
4. Hello World TutoAndroidActivity tablette branch e e Installe puis lance le logiciel Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012 e Les tapes du lancement sont affich es dans la fen tre console dans les versions Indigo il y a du rouge sur certaines lignes in E Console Android 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 2012 10 02 13 54 54 54 54 54 55 55 14 14 14 TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid TutoAndroid og w a iv ActivityManager Starting Intent act android intent action MAIN a Android Launch adb is running normally Performing fr iutlan tutoandroid TutoAndroidActivity activity launc Automatic Target Mode Launching new emulator with compatible AVD Launching a new emulator with Virtual Device Archos32Virtuel New emulator found emulator 5554 Waiting for HOME android process acore to be launched HOME is up on device emulator 5554 Uploading TutoAndroid apk onto device emulator 5554 Installing TutoAndroid apk ig D abord afficher OU Te Show View ATX activer la fen tre Devices amp General amp Android menu Window item Show Allocation Tracker Devices
5. a e paint setColor setAntiAlias http developer android com reference android graphics Paint html Methode de dessin e Juste pour voir mettre ces lignes dans la methode onDraw Paint paint new Paint paint setColor Color BLUE canvas drawCircle 100 100 50 paint e On cr e une peinture bleue et on dessine un cercle e On va am liorer cette id e a e dessiner plusieurs cercles e les cr er la souris Classe Cercle e Dans Dessin java rajouter la classe Cercle class Cercle int xc VC rayon private Paint paint public Cercle int x int y intr XC X yc y rayon r paint new Paint paint setColor Color rgb RND RND RND e Remplacer les 3 RND par int Math random 256 ej M thode de dessin pour un cercle e Rajouter la m thode public void draw Canvas canvas canvas drawCircle xc yc rayon paint e Donc en faisant cercle draw moncanvas le cercle se dessine sur ce canvas Liste de cercles e On va g rer une multitude de cercles dans la classe Dessin import java util LinkedList LinkedList lt Cercle gt cercles public Dessin Context context AttributeSet attrs super context attrs cercles new LinkedList lt Cercle gt _ M thode onDraw e La m thode de dessin devient Override public void onDraw Canvas canvas for Cercle cercle cercles cercle draw canvas e On appelle la m thode draw de ch
6. cr er saisie xml lt xml version 1 0 encoding utf 8 gt lt LinearLayout xmlins android http schemas android com apk res android android layout_width fill parent android layout_ height fill parent android orientation vertical gt lt EditText android id id edittext android editable true android layout_width fill_ parent android layout_height wrap content gt lt Button android id id btnok aude is oi android layout_width fill_parent android layout_height Wwrap_content gt lt LinearLayout gt SaisielnfoActivity le layout e Voici le d but Override public void onCreate Bundle savedinstanceState super onCreate savedinstanceState setContentView R layout saisie Diarra NICD Ji Tels ee AT PSP PE Denn AnaAeaic Pierre NERZIC IU Laon ILOTIE y rIOU Legere SaisielnfoActivity le bouton e L ent te de la classe import android view View OnClickListener public class SaisielnfoActivity extends Activity implements OnClickListener e Ensuite on associe le listener du bouton OK e findViewByld R id btnok setOnClickListener this e Le listener Override public void onClick View v re le texte et l ajouter dans la base SaisielnfoActivity la cr ation e Lire la valeur saisie EditText et EditText findViewBylId R id edittext String info et getText toString e L ajouter dans la base BDD bdd new BDD bdd open this iF
7. de l activit principale Choisir le nom du package C est le nom invers de l organisation qui g re le projet ex fr iutlan tutoandroid Bouton Finish Application Info Configure the new Android Project Application Name TutoAndroid Package Name fr iutlan tutoandroid New Android Project amp Create Activity TutoAndroidActivity Minimum SDK 8 D Create a Test Project R S U t a t TutoAndroid Java TutoAndroid src fr iutlan tutoandroid TutoAndroidActivity java Eclipse Si STE File Edit Source Navigate Search Project Refactor Run Window Help 1m vie lon ad SrO QAY E EOE E pJava E Pac X a Outl fs Hier O M TutoAndroidActivity java X TutoAndroid he v package fr iutlan tutoandroid Y Gsrc Y fr iutlan tutoandroid import android app Activity public class TutoAndroidActivity extends Activity Called when the activity is first created Override Android 2 2 public void onCreate Bundle savedInstanceState Super onCreate savedInstanceState assets setContentView R Layout main bin res drawable hdpi drawable ldpi drawable mdpi layout Problems amp Javadoc Declaration values 15 errors 9 warnings 0 others X strings xml Description Resource lt a AndroidManifest xml y Errors 15 items proguard cfg datetimepicker gen already exists but is n datetimepick project properties Structure des fi
8. Tutoriel Android Pour d marrer la programmation d applications Android Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012 Remarque pr alable Comme il est impossible de traiter tous les aspects d Android seulement quelques uns seront pr sent s De plus pour des raisons p dagogiques ils seront pr sent s dans un ordre de complexit croissante et de proximit de centres d int r ts c est dire au fil de l eau comme un tutoriel e Quelques mots de pr sentation e Installation du SDK outils de programmation e Premi re application et premiers concepts e Application Liste d items e Application Dessins Presentation e Android est n en 2007 e C est e Un syst me d exploitation pour tablettes et smartphones reposant sur un syst me Linux e Une machine virtuelle Java dalvik tablie sur d autres bases que la machine Java standard e Une API de programmation en Java e norme quantit de Fonctionnalit s e Outils de d veloppement pour Eclipse Programmation de logiciels e Cycle de travail e D veloppement avec Eclipse en Java e Cross compilation e Installation sur la cible liaison USB e D bogage et tests du logiciel e Outils e Plugin transparent et tr s bien fait dans Eclipse e SDK avec des outils de gestion adb notamment SDK AVD ADB et ADT SDK outils et fichiers pour programmer AVD tablettes virtuelles ADB logiciel de comm
9. View sous item Other Emulator Control File Explorer e Dans la liste choisir la CET Ca blette active LogCat deprecated Resource Explorer e Afficher la fen tre LogCat IE Use F2 to display the description for a selected view gt LogCat se remplit avec les messages de la tablette s lectionn e Cancel mien e LogCat permet de communiquer avec la tablette tout message qu elle met est capt 2D LogCat Saved Filters lt ctl info H D Le Time Tag Text 3 I 10 02 HP15c E z E i 2 13 43 ActivityManager Force stopping package fr iutlan tutoand Dames I 10 02 15 43 04 8 installd unlink data dalvik cache data app fr iu Sports Pedagogie I 10 02 15 43 9 v i INI AttachCurrentThread from T 10 02 lasa AndroidRuntime NOTE attach of thread Binder Thread 3 r Starting activity Intent act android ActivityManager Start proc fr iutlan tutoandroid f 43 06 74 ActivityManager Displayed activity fr iutlan tutoandroid gt LogCat mode d emploi e Deux colonnes utiles e TAG nom court du logiciel mettant un message e Text texte mis e Filtrages par niveau de gravit et TAG e Emission de messages le package android util Log contient la classe Log e Log i TAG Text affiche un message d information e Log w TAG Text message d avertissement e Log e TAG Text message d erreur Dans TutoAndroidActivity
10. alled Not installed Not installed Not installed Not installed 14 Not installed Not installed Not installed Not installed Not installed i Not installed Install 1 package e 4 Dans Tools v rifier que tout est Installed e Dans Android 4 1 e D cocher tout la doc reste Installed e Dans Android 2 1 ou 2 2 e Cocher unigt SDK Pltform 5 Cliquer Install 1 package pas de delete Installer la version la plus basse commune aux tablettes cibl es par vos logiciels Une appli 4 1 ne tournera pas sur une tablette 2 3 Obsolescence voulue explicitement pourtant en octobre 2012 4 1 x Jelly Bean 4 0 x Ice Cream Sandwich 3 x x Honeycomb 2 3 x Gingerbread 2 2 x Froyo 2 1 Eclair 1 6 Donut 1 5 Cupcake 07 2012 10 2011 02 2011 12 2010 05 2010 10 2009 09 2009 04 2009 Android SDK Manager suite e Ce gestionnaire rajoute de nombreux l ments dans votre dossier SDK et permet de les maintenir jour e Critiques e La doc qu on installe est uniquement la plus r cente elle ne correspond pas a la plate forme voulue gt nombreux avertissements d obsolescence Rajouter platform tools et tools dans le PATH gt commandes adb android disponibles partout e Le SDK android contient un mulateur de tablette permettant de faire tous les tests sans lessiver la m moire flash de la tablette 5554 Archos7HT_hor Ia
11. aque cercle e Il reste pouvoir cr er les cercles avec le doigt Pour qu une vue r agisse aux touchers elle doit impl menter l interface OnTouchListener Elle doit simplement poss der une m thode onTouch onTouch View v MotionEvent event est appel e dans au moins deux cas event getAction ACTION DOWN on pose le doigt en event getX event getY event getAction ACTION _ MOVE on bouge le doigt en event getX event getY Reaction aux touchers cran e Voici ce qu il Faut ajouter a la classe Dessin import android view View OnTouchListener public class Dessin extends View implements OnTouchListener Override public boolean onTouch View v MotionEvent event int x int event getX int y int event getyY switch event getAction case MotionEvent ACTION DOWN toucher en x y case MotionEvent ACTION MOVE mouvement vers x y On arrive presque au bout e Cas ACTION pown quand on clique on rajoute un nouveau cercle en x y cercles add new Cercle x y 1 e Cas ACTION MovE quand on bouge le doigt on change le rayon du dernier cercle cr Cercle cercle cercles getLast cercle rayon int Math sart x cercle xc x cercle xc y cercle yc y cercle yc e Ne pas oublier les break dans le switch Mettre a jour le dessin e Enfin comme on a rajout un cercle il faut redessiner la vue e Dans public boolean onTouch rajouter en Fin th
12. bdd createlnfo info gt 0 eo e Quitter l activit Finish Insertion d un n uplet Dans la classe BDD voici comment le faire proprement public long createlnfo String info ContentValues values new ContentValues values putNull _id values put info info return base insert infos null values e M thode insert wrapper pour un INSERT Mise a jour des donn es e Au retour de l activit de saisie dans l activit principale il Faut mettre jour la liste Override protected void onActivityResult int requestCode int resultCode Intent data super onActivityResult requestCode resultCode data cListelnfos requery a Pour finir par quelque chose de joli Dessiner sur Android e En 3D OpenGL pas pour aujourd hui e En 2D e Faire une sous classe de View mise dans le layout e Les m thodes de cette vue perso e dessinent l image e g rent les touchers de l cran Organisation globale du projet e Deux classes principales e Activit principale quasi vide Son layout contient une View perso qui Fait TOUT e View perso Dessin gros morceau e sa m thode onDraw dessine tout sa m thode onTouch g re les appuis du doigt e Une classe interne Cercle centre rayon C est parti e Cr er un nouveau projet Android e Nom TutoAndroidDessin e Package fr iutlan tutodessin e Activit TutoAndroidDessinActivity e Laisser in
13. chiers d un projet e Un projet arbre de nombreux fichiers e src les sources organis s en packages e res les ressources on verra plus tard e gen des sources g n r s automatiquement a partir des ressources e bin les class issus des compilations de src et gen e assets d autres ressources on ne verra pas e Android2 x les librairies du SDK utilis e AndroidManifest xml e properties config pour Eclipse e Pas besoin de v ad H E x r Or QAY Gv amp mpiler c est Fait en amp CO pI e C es e Pac Outl fg Hier O 4 TutoAndroidActivity java 5 TutoAndroid WE pac fr iutlan tutoandroid ermanence par sr ie witlan tutoandroid public c s TutoAndroidActivity ext s Activity e a gt Og gen Dve a C se D Android 2 2 pub jae onCreate ndle savedInstanceState a nCreate sav iInstanceState assets gt amp bin V amp res e Tant qu il y a des rc drawable ldpi setContentViews R lqgout drawable mdpi e e ais U S a d U layout 21 Problems Javadoc Declaration J values 16 errors 9 warnings 0 others AndroidManifest xml V Errors 16 items KO U g e S U a S C eC S proguard cfg datetimepicker gen already exists but is n datetimepicke project properties The method setContentViews int is undefir TutoAndroidA TutoAnd SEs gt en gt et on ne peut pas we am na lancer Cliquer sur la fl che verte ou cho
14. description de la mise en page j f Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012 Ajout d un bouton dans la fen tre e Dans res layout main xml rajouter les lignes suivantes avant le lt LinearLayout gt final lt Button android id id bouton android layout_width fill parent android layout_height wrap_ content android text OK gt e Vous pouvez aller v rifier le r sultat dans l onglet GraphicalLayout bas de cette fen tre e NB le libell du bouton a t crit en dur Ajout d un bouton suite e Si vous lancez le logiciel vous verrez que le bouton s affiche mais n est pas actif e Voici comment le rendre vivant e Il faut lui associer un listener c est a dire un objet qui saura r agir si on appuie sur le bouton e Le listener poss de une m thode onClick qui est appel e quand on appuie sur le bouton Ajout d un listener au bouton e Association d un listener au bouton Button btn Button findViewBvyId R id bouton btn setOnClickListener this e Le choix a t Fait ici que le listener soit l activit elle m me this e Voir plus loin pour une autre approche e Il faut donc qu elle d finisse la m thode onClick Definition du Listener e diter l ent te de la classe public class TutoAndroidActivity extends Activity implements OnClickListener e Rajouter la m thode Override public void onClick View btn TextView
15. e sudo chmod a r f etc udev rules d 51 android rules e sudo restart udev ADB sur Linux partie 2 e Pour finir il faut Faire conna tre votre tablette au SDK echo 0x0e79 gt gt android adb_usb ini e Pour tester adb devices doit afficher la liste des tablettes connect es e Sila liste reste vide c est qu il y a un probl me stackoverflow ou fed up a ADB sur Windows e Pour une tablette exotique Archos consulter http developer android com tools extras oem usb html e Avant de la brancher la 1e fois diter le Fichier android sdk windows extras google usb_driver android_winusb inf e Trouver ou rajouter une section ex archos Google NTamd64 Archos CompositeAdbIinterface USB_Install USB VID_0E79 amp PID_ 1407 amp MI_ 01 e Puis installer le driver manuellement Eclipse et Android Il faut rajouter un plugin nomm Android Development Tools ADT dans Eclipse pour acc der Android 1 Tel charger le plugin 2 Configurer le plugin 3 Le garder jour par rapport au SDK T Installation du plugin pour Eclipse a Dans Eclipse menu Help item Install New Software b Bouton Add en haut droite c Fen tre Add site nom Android Plugin et Location https dl ssl google com android eclipse d Cliquer sur OK e Work with Android Plugin cocher Developer Tools et cliquer sur Next f Liste des outils gt cliquer sur Next acc
16. epter les licences Configuration du plugin Eclipse 2 Au red marrage d Eclipse fournir le chemin d acc s au SDK Android e L o on trouve tools et platform tools e Ilse trouve aussi dans le dialogue des pr f rences onglet Android 3 Si vous mettez jour votre SDK il faut aussi mettre jour votre ADT et r ciproquement e Eclipse menu Help Check for updates e NB le SDK est mettable jour tr s souvent lancer tools android Programmation Android Activite classe contenant les fonctions pour g rer l une des pages de l application Ressources textes images Manifeste d claration du logiciel A e Une application Android est compos e d activit s e Une activit 1 page avec des contr les TextView EditText Button e Android g re une sorte de pile d activit s seule celle du premier plan est active e Bouton retour gt retour la pr c dente e Ok gt Fin de l activit Ale COUrSES acheter du pain Enregistrer Annuler Declaration des activites e Toutes les activit s d un logiciel doivent tre d clar es dans le fichier AndroidManifest xml lt xml version 1 0 encoding utf 8 gt lt manifest package fr iutlan tutoandroid gt lt application gt lt activity android name TutoAndroidMainActivity gt lt activity android name TutoAndroidAboutActivity gt lt application gt lt manifest gt Types d acti
17. ge nomm e ic_launcher png Son nom de base l identifie et on la retrouve dans AndroidManifest xml lt application android icon drawable ic_launcher android label string app_name gt Remarquer que dans R java il y a un Final int R drawable ic_launcher Dans strings xml rajouter une ressource lt string name blabla gt voici du blabla lt string gt remarquer que R java a t mis jour Dans main xml rajouter un attribut au TextView lt TextView android id id textview la syntaxe id xxx Fait cr er un identifiant tandis que id xxx le r f rence seulement remarquer que R java a t mis jour sinon clean On va faire afficher blabla dans le textview Manip sur les ressources suite 3 Dans TutoAndroid java rajouter ceci apr s setContentView R layout main TextView EV TextView this findViewByld R id textview tv setText R string blabla 4 Relancer l application e On constate qu on a remplac le texte initial par celui de la ressource blabla NB parfois il faut nettoyer le projet pour reconstruire le fichier R java bug ADT Eclipse en particulier si on rajoute des ressources probl me assez fr quent Cette ligne TextView this findViewByld R id textview s applique l Activity elle recherche une View contr le widget composant de l interface ayant cet identifiant Elle retourne null ou le TextView en question Il faut convertir le type du r sul
18. h e cListeInfos requery Cela relance le SELECT et met jour l adapter donc la liste affich e Ajout d un listener pour les clics e Si on veut rendre la liste cliquable Override protected void onListitemClick ListView l View v int position long idinfo super onListitemClick l v position idinfo Log i Tuto clic sur idInFo e La m thode re oit l identifiant de l l ment cliqu Ajout d un menu e On veut maintenant rajouter un menu global permettant de cr er des l ments dans la liste e Ca se fait en deux temps e Affichage du menu la demande de l utilisateur e R ponse la s lection d un item Affichage du menu e Voici comment on fait dans Tuto Activity Override public boolean onCreateOptionsMenu Menu menu Menulnflater inflater getMenulnflater inflater inflate R menu main_optionsmenu menu return true e Ensuite il faut d finir le menu dans un XML amp e L inflater va lire le XML et cr er les vues Definition du menu e Cela se Fait dans les ressources e Cr er le dossier res menu e Cr er le fichier main _optionsmenu xml lt xml version 1 0 encoding utf 8 gt lt menu xmlns android http schemas android com apk res android gt lt item android id id menu_creerinfo android title cr er gt p lt menu gt NB on a mis le libell en dur Reaction au menu e Il reste capturer les s
19. is invalidate e Cette instruction signale la vue que son contenu n est plus a jour elle va donc rappeler automatiquement onDraw d s que possible Ca y est c est Fini Des questions amp ip i Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012
20. iser ses variables e Ne pas s occuper pour l instant des param tres e onDestroy appel e quand l activit est supprim e d elle m me ou par manque de m moire ou la demande de l utilisateur gestion des applications Concr tement Creation du premier projet Android j f Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012 Dans le menu Fichier New Android Project Fes Select project name and type of project 9 P ro e ct N a m e Project Name Tuto Android J Create new project in workspace T A a O Create project from existing source U to n O Create project from existing sample amp Use default location V rifier ouilestcree iam O Add project to working sets Bouton Next gt NB ce d roulement est celui du plugin pour Eclipse Galileo Adaptez le a votre version Choisir le SDK Bouton Next gt NB dans le plugin pour Eclipse Indigo cette page appara t sous forme d une liste d roulante directement dans la premi re page fe New Android Project BEX Select Build Target Choose an SDK to target Build Target Target Name Android 1 6 Android 2 1 Google APIs amp Android 2 2 Google APIs Vendor Platform API Lev Android Open Source Project 1 6 4 Android Open Source Project 2 1 Google Inc 2i Android Open Source Project 2 2 Google Inc 2 2 lt Back Next gt Cancel Choisir le nom de l application et
21. isir le menu Run As et la premi re fois choisir Android Application TutoAndroid Java TutoAndroid src fr iutlan tutoandroid TutoAndroidActivity java Eclipse St SES x File Edit Source Navigate Search Project Refactor Run Window Help d O s EGTE OsY Tut Y src gt 3 gen Generated Java Files verride D wi Android 2 2 amp assets gt amp bin V amp res gt amp drawable hdpi Pac X Outl jg Hier F O P TutoAndroidActivity java X oAndroid ales IE package fr iutlan tutoandroid import android app Activity Y fr iutlan tutoandroid en public class TutoAndroidActivity extends Activity public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layout gt amp drawable ldpi gt amp drawable mdpi gt amp layout 2i Problems Javadoc Declaration Y G values i ESS qd AndroidManifest xml B project properties Fa 15 errors 9 warnings others Description Resource W Errors 15 items x strings xml proguard cfg datetimepicker gen already exists but is n datetimepick The method setEnseignement Long String SeancesListAct Pedagog gn aaaea gt r e Run As REX Android JUnit Test Java Applet Java Application Ju JUnit Test Description Runs an Android Application Lancement d un projet e Eclipse lance un mulateur OU utilise la
22. java apr s la ligne super onCreate savedinstanceState rajouter la ligne suivante Log i TutoAndroid Salut tous Eclipse voudra devra rajouter au d but import android util Log Relancez et regardez LogCat il y a votre message dans la longue liste on peut rajouter des Penser le log avant un lancement LogCat sert localiser la source des bugs Rajouter les 2 lignes ES suivantes dans la ar ety rocessus fr iutlan m thode onCreate ion bere de r essayer de votre activite TextView tv2 null tv2 setText boum Ignorer le warning Forcer la fermeture Ouvrir l onglet LogCat filtrer sur les erreurs Double cliquer sur la ligne qui concerne votre thread et votre package 1 appli Android plusieurs threads 1 thread plusieurs fonctions imbriqu es l erreur peut appara tre dans la cave mais caus e en cuisine Les ressources Ressources interfaces textes images du logiciel certaines sous forme d clarative dans un fichier XML Y Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012 D o vient le message affich Ouvrir le Fichier res values strings xml NB choisir la vue source XML du fichier onglet en bas de la Fen tre lt xml version 1 0 encoding utf 8 gt lt resources gt lt string name hello gt Hello World lt string gt lt string name app_name gt TutoAndroid lt string gt lt res
23. lections d items Override public boolean onOptionsitemSelected Menultem item switch item getitemld case R id menu_creerinfo cr er une nouvelle info a X Log i Tuto on va cr er une info break Menu creation d une information e On souhaite rajouter un n uplet dans la base e Il faut demander ses champs l utilisateur e Soit un dialogue pop up pas aujourd hui e Soit une nouvelle activit SaisielnFoActivity java e cette activit va se lancer devant l activit actuelle e demander de saisir l information e l ajouter la base de donn es e puis se terminer en pr venant l activit principale e qui se r veillera et mettra jour la liste affich e Cela se Fait au moyen d un Intent cr er une nouvelle info Intent intent new Intent this SaisielnfoActivity class startActivityForResult intene 1 L activit actuelle va attendre la fin de la nouvelle startActivityForResult MainActivity SaisielnfoActivity onActivityResult Finish Classe SaisielnfoActivity e Cr er une nouvelle classe e Nom SaisielnFoActivity e Superclasse android app Activity e La rajouter dans le Manifeste lt activity android name SaisielnfoActivity gt e On va e Rajouter un layout contenant une zone de saisie e Un bouton Ok et son listener e Ce listener valide la saisie cr e l information et quitte Layout pour l activit de saisie e Dans res layout
24. m s table nom dans 2 2 seulement nom d ite Transformer l activ e On va maintenant migrer vers une activit de type ListActivity e Cela impose des changements dans e La classe principale e Changer sa superclasse e Rajouter des m thodes de gestion de la liste e Le fichier de layout a e Utiliser un layout pr d fini ou le notre Changer la superclasse et le layout e Commencer par mettre ListActivity au lieu de Activity dans TutoAndroidBDD import android app ListActivity public class TutoAndroidBDDActivity extends ListActivity e Changer le layout de l activit setContentView android R layout activity_list_item ou setContentView R layout main modifi Layout android R layout activity_list_item e C est l un des layouts pr d finis mais il est d fini incorrectement donc main xml devient lt xml version 1 0 encoding utf 8 gt lt FrameLayout xmlins android http schemas android com apk res android android layout_width fill_ parent android layout_height fill_parent gt lt ListView android id android id list android layout_width fill parent android layout_height fill_parent gt lt TextView android id android id empty android layout_width fill parent android layout_height fill parent android gravity center android text vide gt lt FrameLayout gt e ListActivity rep re la liste android id list pour la remplir automatiquement
25. ources gt Les cha nes sont plac es entre des balises lt string gt et identifi es par l attribut name Utilisation des ressources string e Dans un autre fichier XML e Ex dans le manifeste lt activity android label string app_name e La notation string xxx r f rence la cha ne name xxx dans res values strings xml e Dans un source java e Voir gen package R java chaque cha ne est associ e une constante enti re son identifiant e La classe R est g n r e automatiquement e BUG parfois elle est mal reg n r e gt nettoyer le projet menu project item Clean Autre type de ressources e Ouvrir le Fichier res layout main xml lt xml version 1 0 encoding utf 8 gt lt LinearLayout gt lt TextView android text string hello gt lt LinearLayout gt e Un layout d crit la mise en page de Vactivit e On retrouve la ressource lt string name hello gt e Exercice changer le texte de cette ressource R f rencement d un layout e Ouvrir src package TutoAndroid java public void onCreate Bundle savedinstanceState super onCreate savedinstanceState Log i TutoAndroid bonjour tous setContentView R layout main e La classe gen package R java contient la constante R layout main qui identifie res layout main xml e celui ci sp cifie le contenu de la page content view Ouvrir le dossier res drawable hdpi ou mdpi Il y a une ima
26. qu il faut obtenir En jaune deux LinearLayouts l un horizontal l autre vertical Les deux boutons doivent se partager la place Android et SQL On passe a une application qui affiche une liste d items tir s d une base SQL Y _ Pierre NERZIC IUT Lannion Tutoriels Prog Android Octobre 2012 On va utiliser une sous classe d Activity ListActivity Elle int gre un layout contenant un ListView La Fonction d un ListView est de visualiser une liste d items fournis par un fournisseur de donn es Pour cela on utilise un adaptateurde BDD associ a une requ te SQL Select From Une telle requ te est g r e par un Curseur Android int gre un SGBD SQLite v3 La base de donn es d une application est stock e dans data data package nom db Pour bien g rer une bdd dans une application android il Faut cr er deux classes Classe BDD qui repr sente la base ouverte ses m thodes requ tes SQL v rifications Classe BDDHelper qui aide ouvrir une base sous classe de SQLiteOpenHelper sa m thode onCreate cr e les tables au tout d but C est parti e Cr er un nouveau projet Android e Nom TutoAndroidBDD e On changera la classe Activity plus tard e Cr er une classe BDDHelper d riv e de SQLiteOpenHelper e Menu File New Class Nom BDDHelper e Superclasse android database sqlite SQLiteOpenHelper http developer android com reference and
27. roid database salite SQLiteOpenHelper html e Cocher cr er les m thodes virtuelles h rit es Constructeur de BDDHelper e Rajouter un constructeur public BDDHelper Context context super context infos db null 1 e Context est une superclasse de Activity e On fournit le nom de la base et sa version M thode onCreate de BDDHelper e Elle doit cr er les tables de la base e Override public void onCreate SQLiteDatabase db db execSQL CREATE TABLE infos id INTEGER PRIMARY KEY AUTOINCREMENT info TEXT NOT NULL e execSQL String requete pour toute requ te sauf SELECT e Ensuite on peut remplir avec les donn es initiales Ajouter les lignes suivantes dans la m thode onCreate de BDDHelper db execSQL INSERT INTO infos VALUES 1 lundi db execSQL INSERT INTO infos VALUES 2 mardi Attention ces instructions ne sont faites qu une seule Fois dans la vie du logiciel sur une tablette lors de son premier lancement D autre part on ne doit pas Faire comme a mais pour simplifier voir m thode insert plus loin La classe BDDHelper n est qu une aide pour l ouverture et ventuellement la cr ation de la base de donn es Il Faut une classe pour simplifier la gestion de la base la classe BDD Dans l activit principale on fera BDD mabase new BDD mabase open Et automatiquement la premi re fois seulement ca Va appeler le helper pour cr er la base
28. s n pour d signer une tablette pr cise adb shell ouvre un shell sh sur la tablette Arbre Unix etc restreint et tr s prot g Les applis android sont dans data data Les fichiers sdcard sont dans sdcard Mais peuvent changer selon la tablette adb push fichier nomcompletsurtablette adb pull nomcompletsurtablette ADB avec une vraie tablette e Le pb initial faire accepter votre tablette par votre syst me e Ilya Le mode support de stockage ok sur tous les syst me la tablette appara t comme un disque e Et le mode adb c est celui qui pose pb driver e C est le mode qu on active sur une vraie tablette par le menu Param tres item Applications sous item D veloppement ss item D bogage USB http developer android com tools device html Une vraie tablette sur Linux e Sur Linux quand on branche un p riph rique USB c est udev qui le Fait appara tre dans le syst me d exploitation e sous la forme d un dev fichier sp cial http fr wikipedia org wiki Udev http doc ubuntu fr org udev e Encore faut il que ses identifiants USB vendor product soient connus et autoris s gt r gle d finir ADB sur Linux partie 1 e Commande lsusb Rep rer les identifiants hexa de la tablette ex 0e79 1411 e sudo gedit etc udev rules d 51 android rules mettre SUBSYSTEM usb ATTRS idVendor 0e79 ATTRS idProduct 7477 MODE 0666
29. tact le code g n r e On va seulement diter le layout e Ce layout r f rence une nouvelle vue perso qu on va programmer Edition du layout main xml e Voici ce que devient le layout lt xml version 1 0 encoding utf 8 gt lt LinearLayout xmlins android http schemas android com apk res android android orientation vertical android layout_width fill parent android layout _height fill_parent gt lt fr iutlan tutodessin Dessin android id tid dessin android layout_width Fill_ parent android layout_height Fill_parent gt lt LinearLayout gt Layout et custom View e La notation lt package classe gt indique qu on utilise une vue de l application d sign e par le package e Il faut programmer une classe appel e comme ca h ritant de View package package import android view View public class classe extends View Classe Dessin extends View e Ajouter une nouvelle classe appel e Dessin import android graphics Canvas public class Dessin extends View public Dessin Context context AttributeSet attrs super context attrs Override public void onDraw Canvas canvas NT Les Canvas e Un Canvas est une zone de dessin 2D rectangulaire e M thodes de dessin e drawPoint drawLine drawPath drawRect e Principes drawMachin coordonn es paint http developer android com reference android graphics Canvas html e Paint peinture employer
30. tat Cette ligne tv setText R string blabla est une m thode de TextView et lui change son libell avec un num ro de ressource string Il existe un grand nombre de types de vues Textview EditView Button Spinner CheckBox Voir le package android widget http developer android com reference android widget package summary html Chacune a un grand nombre de m thodes sp cifiques ou h rit es Exemple la classe Button http developer android com reference android widget Button html En g n ral tous les setters et getters correspondant aux variables membres Setters et attributs xml e On retrouve une grande partie des setters Java parmi les attributs utilisables dans les ressources XML e Exemples pour un TextView e setText correspond android text e setLines nb correspond and b e Exemple lt TextView android id id textview android textSize 15sp android textColor FOF e Pour les conna tre une seule source la doc Ressources ou valeurs en dur e On peut g n ralement placer les constantes dans les ressources et fournir leurs identifiants ou directement les constantes en dur e tv setText R string hello voir res values strings xml e tv setText Salut hard coded e L avantage des ressources est e ext rieures au logiciel traductibles et ditables sans recompilation e Inconvenient e plus lourd mettre en uvre Layouts Layout
31. tv TextView FindViewByld R id textview tv setText Pouic Gestion des vues de l interface e Normalement on garde une copie des View utilis es en tant que variables membres public class TutoAndroidActivity variables membres globales TextView tv Button btn public void onCreate 4 tv TextView findViewByld R id textview btn Button findViewByld R id bouton Deux boutons pour le prix d un e Exercice maintenant rajoutez un autre bouton e identifiants bouton1 et bouton2 e Le premier doit afficher Oui l autre Non dans le TextView e Probl me on doit associer le m me listener this aux deux boutons donc impossible de les distinguer sauf Si Solution 1 switch sur l identifiant Override public void onClick View btn switch btn getid case R id bouton1 tv setText Oui break case R id bouton2 Ev setText Non a break Pierre NERZIC IUT Lannion Ti Itoriels Prog Android Octobre 2012 Solution 2 plusieurs listeners e Au lieu de btn2 setOnClickListener this e mettre ceci pareil pour btn1 Button btn2 Button findViewByld R id bouton2 btn2 setOnClickListener new OnClickListener Override public void onClick View v Y 2 Ev setText Non Comparaison des deux solutions e La solution 2 semble plus simple e 1 listener par bouton et par type d action e Acc s a
32. unication ADT plugin pour Eclipse Le SDK Android Il contiendra apres t l chargement s e la doc en ligne e les fichiers inclus les librairies li es e le compilateur et autres outils e des outils de communication genre telnet et ftp e un mulateur de tablette Android virtuelle e 1 Le prendre sur 4 http developer android com sdk index html e Demander le SDK correspondant au syst me Installation du SDK e Pr requis avoir install Java e 2 Extraire les Fichiers de l archive ou lancer l exe gt android sdk linux ou android sdk windows e 3 Lancer tools android ou tools android bat gt ouvre une fen tre permettant de s lectionner les composants du SDK qu on souhaite installer et ou mettre jour Packages Tools SDK Path Packages Name v Show Android 4 1 API 16 Documentation for Android SDK SDK Platform Samples for SDK ARM EABI v7a System Image Intel x86 Atom System Image Mips System Image Google APIs E Sources for Android SDK Android 4 0 3 API 15 Android 4 0 API 14 Android 3 2 API 13 Android 3 1 API 12 Android 3 0 API 11 Android 2 3 3 API 10 Android 2 2 API 8 SDK Platform amp Samples for SDK Google APIs Android SDK Manager API 8 Rev N NN NAN 3 1 2 amp Updates New amp Installed Obsolete Select h Sort by API level O Repository Done loading packages Status Inst
33. ux Variables globales e Mais pb pour acc der aux variables locales de la m thode qui installe le listener e gt final int varlocale parametre e De toutes fa ons pour les menus on retrouvera la solution 1 la seule possible Au lieu de ceci On voudrait cela Les vues contr les graphiques doivent tre arrang es dans des containers appel s Layouts LinearLayout arrange les vues s quentiellement selon un axe horizontal ou vertical RelativeLayout arrange les vues comme on veut l une par rapport l autre pas vu aujourd hui Un layout se comporte comme un parent pour les vues qu il contient ses enfants Taille d une vue e Une vue re oit de son parent une largeur et une hauteur partir desquels elle d finit sa propre taille e android layout width e android layout height e Elle peut choisir de l occuper ou pas e android layout_width fill_parent NB Fill_parent est devenu match_parent dans le SDK 2 2 e android layout width wrap_content Comp tition entre enfants e En cas de comp tition entre enfants par exemple quand les deux pr tendent occuper toute la place lt Button android id tid bouton1 android layout_weight 1 android layout_width Fill_parent gt lt Button android id tid bouton2 android layout_weight 1 android layout_width Fill_ parent gt e On leur rajoute un poids pour quilibrer leurs demandes Voici l imbrication
34. vit s e Certaines activit s sont marqu es par exemple pour tre d marrables de l ext rieur lt activity android name TutoAndroidMainACEiviEy gt lt intent filter gt lt action android name android intent action MAIN gt lt category android name android intent category LAUNCHER gt lt intent filter gt a lt activity gt e Le nom intent filter vient du Fait que c est un Intent qui lance une activit voir plus loin La classe Activity c t prog e android app Activity http developer android com reference android app Activity html e Elle g re le d roulement d une page e Lancement arr t red marrage e C est une classe g n rale qui poss de des variantes pour certains types de pages e ListActivity TabActivity a La classe Activity suite e On doit la sous classer class MonActivite extends Activity e et surcharger certaines de ses m thodes e Ex la cr ation de la page se fait par Override public void onCreate ite Exemple d activ package fr iutlan tutoandroid import android app Activity public class TutoAndroidActivity extends Activity Override public void onCreate Bundle savedinstanceState super onCreate savedinstanceState setContentView R layout main M thodes d Activity e onCreate appel e quand on lance l activit pour la premi re fois il faut afficher son interface et initial
Download Pdf Manuals
Related Search
Related Contents
01-02-2703 Ethernet controller TCW181B-CM Users manual Denver TAC-80011 tablet MODE D`EMPLOI DU LOGICIEL 取説PDF Glow F7W LED Flat Par - Prestige LED Lighting Elite 5m & Elite 4m フィギュアーツZERO 主人公(ペルソナ3) 取扱説明書 357.8 KB Client Setup User Guide - Multi Copyright © All rights reserved.
Failed to retrieve file