02 programmation mobile - android - (activity, view, fragment)
Android Introduction a La Programmation
Transcript of Android Introduction a La Programmation
-
7/22/2019 Android Introduction a La Programmation
1/58
Introduction la programmation
Android
[email protected] Giuliano
mailto:[email protected]:[email protected] -
7/22/2019 Android Introduction a La Programmation
2/58
Universit de Mons
Android est un systme dexploitation Open Source pour
smartphones, PDA et terminaux mobiles conu par
Android, une startup rachete par Google, et annonc
officiellement le 15 novembre 2007. Afin de promouvoir
ce systme dexploitation ouvert, Google a su fdrer
autour de lui une trentaine de partenaires runis au sein
de lOpen Handset Alliance.
Android-france.fr
Android - Dfinition
2Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
3/58
Universit de Mons
Environnement de travail
3Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
4/58
Universit de Mons
Tches:
1. Installation du JDK Java.
2. Installation du SDK Android.
3. Installation dEclipse et pack ADT (Dveloppeur).
4. Cration de la premire application.
5. Exercices
Labo 1 : Installation + Hello World
4Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
5/58
Universit de Mons
1.1 Installation JDK Java
5Infantino Giuliano | SEMI
Tlchargement du JDK Java
-
7/22/2019 Android Introduction a La Programmation
6/58
Universit de Mons
Tlchargement du SDK Android (Windows Version)
1.2 Installation du SDK Android
6Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
7/58
Universit de Mons
1.2 Installation du SDK Android
7Infantino Giuliano | SEMI
Versions installer(2.xx = Smartphone)(>= 3.xx = Tablette)
Android SDK Manager :
-
7/22/2019 Android Introduction a La Programmation
8/58
Universit de Mons
1.2 Installation du SDK Android
8Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
9/58
Universit de Mons
Eclipse :
1.3 Installation dEclipse et ADT
9Infantino Giuliano | SEMI
Tlchargement d'Eclipse
-
7/22/2019 Android Introduction a La Programmation
10/58
Universit de Mons
ADT : Package complmentaire Eclipse contenant les outils ncessaires laprogrammation pour Android.
1.3 Installation dEclipse et ADT
10Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
11/58
Universit de Mons
1.3 Installation dEclipse et ADT
11Infantino Giuliano | SEMI
Name : ADT Plugin
Location : https ://dl-ssl.google.com/android/eclipse/Appuyez ensuite sur OK
https://dl-ssl.google.com/android/eclipse/https://dl-ssl.google.com/android/eclipse/ -
7/22/2019 Android Introduction a La Programmation
12/58
Universit de Mons
1.3 Installation dEclipse et ADT
12Infantino Giuliano | SEMI
Slectionnez lensemble des fichiers, cliquez sur Next , acceptezlensemble des licences, et finalement cliquez sur Finish
-
7/22/2019 Android Introduction a La Programmation
13/58
Universit de Mons
1.3 Installation dEclipse et ADT
13Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
14/58
Universit de Mons
1.4 Cration de la premire application
14Infantino Giuliano | SEMI
Barre doutils Eclipse
: Consultation de SDK Manager.
: Cration dun Android Virtuel (Smartphone ou Tablette Virtuelle)
: Cration dun nouveau projet.
Tests en toute scurit
Consultation et mise jour des bibliothques Android
Cest de ce cot que cela se passe J
-
7/22/2019 Android Introduction a La Programmation
15/58
Universit de Mons
Cration dun Android Virtuel :
1.4 Cration de la premire application
15Infantino Giuliano | SEMI
Version du software prsent survotre Android virtuel.
-
7/22/2019 Android Introduction a La Programmation
16/58
Universit de Mons
1.4 Cration de la premire application
16Infantino Giuliano | SEMI
Cration dun nouveau projet :
Nom du projet :
-
7/22/2019 Android Introduction a La Programmation
17/58
Universit de Mons
1.4 Cration de la premire application
17Infantino Giuliano | SEMI
Version de votrefuture application
(au choix mais enaccord avec la versionslectionne lors dela cration de votre
Android virtuel)
-
7/22/2019 Android Introduction a La Programmation
18/58
Universit de Mons 18Infantino Giuliano | SEMI
1.4 Cration de la premire application
Nom de votre application :Nom du Package (Au choix) :
Activit principale:
Activit = Classe
-
7/22/2019 Android Introduction a La Programmation
19/58
Universit de Mons
1.4 Cration de la premire application
19Infantino Giuliano | SEMI
: Gestion des projets, FirstProjectActivity est ici la classe principale du projet FirstProject .
1
2
1
2 : Premire application. Au lancement, le contenu de la mthode onCreate() sexcute.
: Excution de votre application.
-
7/22/2019 Android Introduction a La Programmation
20/58
Universit de Mons
1.4 Cration de la premire application
20Infantino Giuliano | SEMI
Rsultat :
-
7/22/2019 Android Introduction a La Programmation
21/58
Universit de Mons
1. Installer lensemble des logiciels ncessaires
2. Crez votre premire application android
1.5 Exercices
21Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
22/58
Universit de Mons
Remarque : Cycle de vie dune application
22Infantino Giuliano | SEMI
Visible Invisible
-
7/22/2019 Android Introduction a La Programmation
23/58
Universit de Mons
Tches:
1. Widgets Graphiques
2. Intents
3. couteurs dvnements
4. Exercices
Labo 2 : Les fondamentaux
23Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
24/58
Universit de Mons
2.1 Widgets Graphiques
24Infantino Giuliano | SEMI
Drag & Drop et /ou Code XML
-
7/22/2019 Android Introduction a La Programmation
25/58
Universit de Mons
2.1 Widgets Graphiques
25Infantino Giuliano | SEMI
lments graphiques : Buttons TextView ImageButton ProgressBar CheckBox ToggleButon
Layout : LinearLayout RelativeLayout
-
7/22/2019 Android Introduction a La Programmation
26/58
Universit de Mons
Layout = Schma de mise en place de vos lments graphiques.
2.1 Widgets Graphiques
26Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
27/58
Universit de Mons 27Infantino Giuliano | SEMI
2.1 Widgets Graphiques
Mise en place de llment (modification du code main.xml) :
-
7/22/2019 Android Introduction a La Programmation
28/58
Universit de Mons
Mise en place de llment ( laide du Drag & Drop) :
2.1 Widgets Graphiques
28Infantino Giuliano | SEMI
Cliquez sur Graphical Layout. Slectionnez votre widget. Faites le glisser sur laperu.
Rmq : En cas de soucis, le code Xml(automatiquement gnr) des
lments placs peut tre modifierdans le fichier main.xmlCfr Slide prcdent.
-
7/22/2019 Android Introduction a La Programmation
29/58
Universit de Mons
Dfinition :
Comme leur nom lindique, les intents sont des intentions. Ainsi si voussouhaitez, par exemple, dmarrer une nouvelle activit, lopration seraeffectue par un Intent. Les intents sont galements disponibles lorsdvnements tels que la rception de sms, le branchement dun
priphrique usb,
2.2 Intents
29Infantino Giuliano | SEMI
Intent = Intention
-
7/22/2019 Android Introduction a La Programmation
30/58
Universit de Mons
Exemple dutilisation:
2.2 Intents
30Infantino Giuliano | SEMI
Commentaire:
Cration dun objet mu partir de la classe Intent. Les paramtresenvoys au constructeurs sont lactivit principale (ici UsbActivity.this)et lactivit (classe) que lon souhaite ouvrir (Device.class). Ensuite lafonction startActivity() se charge donc douvir une nouvelle activit.
La fonction startActivity() se verra remplace par la fonctionstartActivtyforResult() si vous souhaitez par exemple attendre unerponse de la nouvelle activit ouverte.
-
7/22/2019 Android Introduction a La Programmation
31/58
Universit de Mons
Dfinition :Les couteurs dvnements sont dnomms BroadCast receiver , ceux siragissent ds la rception dun intent (intention) spcifique. Le Broadcastreceiver ne contient que la mthode OnReceive() quil nous est donc possibledimplmenter.
Exemple dutilisation :Affichage dun texte lors de la rception dun sms (
-
7/22/2019 Android Introduction a La Programmation
32/58
Universit de Mons
Code exemple:
Commentaire :Les lignes de codes ci-dessus sont ajouter dans le manifest de votreapplication pour filtrer les intents envoys votre application. Par exempleici, on filtre lintent ayant laction USB_DEVICE_ATTACHED . Cet intent estcelui qui peut tre rcupr par lapplication lorsque un priphrique USB(non-HID) est connect.
2.3 couteurs dvnements
32Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
33/58
Universit de Mons
2.3 couteurs dvnements
33Infantino Giuliano | SEMI
Code exemple :Dans la mthode Oncreate () :
Commentaire: Rcupration de lintent si celui-ci a t filtr par notre intent-filter (voir
slide prcdent). Ensuite, on peut facilement travailler avec lintent etainsi par exemple rcuprer le priphrique Usb qui vient dtreconnect.
Commentaire:
Cette manire de rcuprer un priphrique usb ne fonctionnera quaubranchement du priphrique. Pour un accs ultrieur, rfrez vous auGuide du Dveloppeur. Ils vous faudra listez les priphriques prsent,slectionnez celui quil vous faut, et demandez une permission daccs.
-
7/22/2019 Android Introduction a La Programmation
34/58
Universit de Mons
Crez une application contenant 2 activits
Crez une interface graphique simple avec :Boutons, TextView, EditText dans les 2 activits.
laide des boutons des 2 activits, permettez lepassage dune activit lautre en rcuprant letexte entr.
Exemple application :
2.4 Exercices
34Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
35/58
Universit de Mons
Tches :
0. Permission Ncessaire
1. Lancement dun nouveau Thread
2. Dtection du priphrique
3. Envoi Rception de donnes
4. Exercices
Labo 3 : Android - Usb Host
35Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
36/58
Universit de Mons
Codes ajouter dans AndroidManifest.xml
Commentaire:
Cette ligne permet aux utilisateurs voulant installer votre application desavoir que celle-ci ncessite le support de l USB_HOST .
3.0 Permissions ncessaires
36Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
37/58
Universit de Mons
Dfinition :
Un thread correspond un fil daction, une sorte de processus. Ainsi uneactivit en cours dxcution sexcute dans un Thread. Cependant uneActivit peut contenir plusieurs Threads, mais pourquoi ?
Pour simplement effectuer des tches darrirres plan sans interfrer sur leThread principal. Ainsi, un envoi et rception de donnes un priphriqueUsb seffectue dans un thread spar pour ne pas perturber le Threadprincipal
3.1 Lancement dun Thread
37Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
38/58
Universit de Mons
Code Exemple :
Commentaire :Le Thread ER est un nouveau thread dfini dans lactivit principale. Au lancement du nouveau Thread,
le contenu de la mthode run() sexcute. Cependant si vous voulez, une fois vos oprations termines,communiquer avec le thread principal, vous aurez besoin dutilisez un objet Message (cfr ci-dessus).Pour cela il suffit de spcifier lHandler qui le rceptionnera. (LHandler permettant donc la rception dumessage et la communication entres les 2 Threads). La mthode obtainMessage() sans paramtrepermet denvoyer un message blanc lHandler qui excutera le contenu de handleMessage(msg).
3.1 Lancement dun Thread
38Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
39/58
Universit de Mons
Introduction :Il existe 2 mthodes pour accder un priphrique. La plus simpleest lutilisation du priphrique lorsque celui-ci est connect nencessitant aucune demande de permission. Voir slide
La seconde un peu plus longue consiste accder au priphriqueplus tard aprs son branchement.
Pour ce faire il nous faudra :
Dtecter notre priphrique
Demander la permission daccs ce dernier
Continuer les tches
39Infantino Giuliano | SEMI
3.2 Dtection du priphrique
-
7/22/2019 Android Introduction a La Programmation
40/58
Universit de Mons
Code exemple :
Commentaire :
Pour trouver les priphriques non HID, il suffit de crer unobjet manager partir de la classe UsbManager, rcuprer lecontexte du Service USB et finalement utiliser la mthodegetDeviceList() qui renvoi lensemble des priphriquesconnects.
3.2 Dtection du priphrique
40Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
41/58
Universit de Mons
Dans le Oncreate ():
3.2 Dtection du priphrique
41Infantino Giuliano | SEMI
Commentaire : La premire partie consiste a crr une demande de permission partirdun Intent, pour ce faire on utilisira la classe PendingIntent. Ensuite aumoment o la demande sera effectue il faudra que celle-ci soitintercept par un couteur dvenments. Un BroadCastreceiverestdonc ncessaire, il sappelle ici mUsbReceiver, et filtrera donc lesdemandes de permissions daccs au priphrique. Finalement lamthode request Permission permettra denvoyer la fentre popup lcran pour la demande de persmission qui sera filtr en arrire planpar le BroadCastReceiver mUsbReceiver.
-
7/22/2019 Android Introduction a La Programmation
42/58
Universit de Mons
En dehors du OnCreate() :
3.2 Demande de permission
42Infantino Giuliano | SEMI
Commentaire : On rcupre tout dabord laction permission, ensuite on vrifie si elle correspond
vraiment avec lIntent qui sera recu par le BroadCastReceiversi tel est le cas alorson rcupre le priphrique dans les extras de lIntent et on sassure quunpriphrique a bien t envoy et a les permission daccs. Si une des conditionsnest pas vrifie alors, on affiche Permission denied dans le logcat dEclipse
-
7/22/2019 Android Introduction a La Programmation
43/58
Universit de Mons
Introduction :Lenvoi et la rception des donnes peut tre tablie de 2mthodes diffrentes, la mthode synchrone et asynchrone.Cependant, nous ne verrons quici lenvoi et la rceptionsynchrone des donnes.
Pour ce faire vous devrez : Rcuperer linterface de communication du priphrique
Recherchez sur cette interfaces les points decommunication et leur sens.
tablir une connexion avec le priphrique
Dclarez un Tableau de bytes qui fera office de Buffer Utilisez la mthode denvoi
Utilisez la mthode de rception
3.3 Envoi - rception de donnes
43Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
44/58
Universit de Mons
Rcupration de linterface :
Commentaire :
Rcupration du nombre dinterface disponible sur le priphrique en vuedtablir une communication, ensuite, affichage de ce nombre dans le LogCatdEclipse. Si nintfa pour valeur 1 cela signifie quil ny a donc quune
interface de communication disponible lindex 0.
44Infantino Giuliano | SEMI
3.3 Envoi - rception de donnes
-
7/22/2019 Android Introduction a La Programmation
45/58
Universit de Mons
Rcupration des points de communication :
Commentaire :
Ce code exemple, permet de connaitre le nombre de Endpoint disponible etde types XFER_BULK , apte tablir un transfert de donnes. Les rsultatssont affichs dans le LogCat dEclipse ainsi que la direction savoir IN ou
OUT qui seront cruciaux dans la suite du programme. Finalement nousassignons les points de sorties 2 variables de types Endpoint (sil ny avidemment que 2 Endpoint).
45Infantino Giuliano | SEMI
3.3 Envoi - rception de donnes
-
7/22/2019 Android Introduction a La Programmation
46/58
Universit de Mons
tablissement de la connexion:
Commentaire :Par lintermdiaire de lobjet mUsbManager, on ouvre le priphrique voulu,et si cette opration se droule sans encombre, alors cette mthode renvoiune connexion fonctionnelle (UsbDeviceConnection). Finalement, pour que laconnexion tablie aie le droit exclusif linterface du priphrique, il faut
pour cela les demander.
46Infantino Giuliano | SEMI
3.3 Envoi - rception de donnes
-
7/22/2019 Android Introduction a La Programmation
47/58
Universit de Mons
Code Exemple :
Commentaire :Aprs avoir convertis les donnes en bytes, il vous suffira de les envoyer laide des mthodes bulkTransfer() et de mme pour la rception. Cest iciquon peut voir toute limportance du sens de vos Endpoints.
3.3 Envoi-rception de donnes
47Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
48/58
Universit de Mons
Crez une application aux graphismessimples.
Crez un thread spar qui devra se charger
de rcuprer la liste des priphriquesconnects.
Sauvegardez la liste et affichez-l dans leThread principale
3.4 Exercices
48Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
49/58
Universit de Mons
Tche :
1. Identifier les priphriques HID
2. Gestion dvnements3. Gestion de la Wiimote
4. Exercices
Labo 4 : Clavier et souris externe
49Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
50/58
Universit de Mons
Introduction :
Pour dtecter un priphrique non-HID nous avions utilisdans les labos prcdents, la mthode getDeviceList(),malheureusement celle-ci ne dtecte pas les priphriques
HID
50Infantino Giuliano | SEMI
4.1 Identifier priphriques HID
-
7/22/2019 Android Introduction a La Programmation
51/58
Universit de Mons
Code exemple :
Commentaire :La solution rside dans lutilisation de la classe InputDevice ! Cration duntableau dentiers qui contiendra les Ids des priphriques connects. Une foisles Ids rcuprs, on peut afficher le nom des priphriques connects
laide des mthodes getName() et toString().
4.1 Identifier priphriques HID
51Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
52/58
Universit de Mons
Introduction :
Comme nous lavions vu lors dimplmentation de bouton, il est possible degrer des vnements sur des vues ou sur des actions.
Le but de ce labo est de rcuprer les coordonnes x et y du curseur
provenant dune souris branch la tablette et galement visionner quelssont les touches presses par lutilisateur sur un clavier branch galement la tablette. Et finalement, en utilisant lapplication open source Bluez-IME,crer notre application permettant la reconnaissance des boutons prsentssur la Wiimote
52Infantino Giuliano | SEMI
4.2 Gestion des vnements
-
7/22/2019 Android Introduction a La Programmation
53/58
Universit de Mons
Souris :
Commentaire :Par rcupration de la vue principale, il nous faut crer un OnHoverListener()
dont la mthode onHover() sera appel lors du mouvement dun curseur surlcran (En vrifiant que le laction de lvnement est bien un mouvement HOVER_MOVE )
53Infantino Giuliano | SEMI
4.2 Gestion des vnements
-
7/22/2019 Android Introduction a La Programmation
54/58
Universit de Mons
Clavier
Commentaire :Pour grer des vnements qui ont lieu sur le clavier, on peut par exemple,rcrire le contenu de mthode parent OnKeyDown(). Ainsi, ici, on rcuprela KeyCode qui vient dtre press et on supprime une partie de celle-ci pour
finalement nafficher que la lettre qui vient dtre presse
54Infantino Giuliano | SEMI
4.2 Gestion des vnements
-
7/22/2019 Android Introduction a La Programmation
55/58
Universit de Mons
Introduction :La Wiimote est un quipement Bluetooth qui quipe toutesles consoles Wii. En vue de rcuprer des informationsprovenant de celles-ci on utilisera un Driver fourni parlapplication BlueZ IME.
Cette application contient en fait des bibliothques cr partir dun code crit en langage C et permettant ainsi demanipuler nativement le Bluetooth.
4.3 Gestion de la Wiimote
55Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
56/58
Universit de Mons
Tlchargement et Installation :
Tlchargez BlueZ IME (Support WII)
Commentaire :
Dplacez le fichier .apk dans la racine de votre tablette, et installez le.
4.3 Gestion de la Wiimote
56Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
57/58
Universit de Mons
Dmarrer avec lapplication Test:Une application exemple est disponible ici ou vous pouvez rcuprerlensemble des fichiers laide dun client svn :
http://android-bluez-ime.googlecode.com/svn/trunk/
Commentaire:Le code prsent utilise lapplication installe dans le slide prcdent,comprenez le code pour lutilisez votre tour.
4.3 Gestion de la Wiimote
57Infantino Giuliano | SEMI
-
7/22/2019 Android Introduction a La Programmation
58/58
U i it d M
4.4 Exercices
Crez une application permettant de lister tousles priphriques connects, fixez la localisationde la souris, de reconnaitre une touche presseau clavier, et finalement qui gre la WiiMote
Rsultat Exemple :