Professional Documents
Culture Documents
Introduction la programmation
Infantino Giuliano
Ig-android@hotmail.be
Android - Dfinition
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
Universit de Mons
Environnement de travail
Universit de Mons
Universit de Mons
Universit de Mons
Universit de Mons
Universit de Mons
Universit de Mons
Universit de Mons
Universit de Mons
10
Slectionnez lensemble des fichiers, cliquez sur Next , acceptez lensemble des licences, et finalement cliquez sur Finish
Universit de Mons
Infantino Giuliano | SEMI 12
Universit de Mons
13
Universit de Mons
15
Nom du projet :
Universit de Mons
16
Universit de Mons
17
Activit = Classe
Universit de Mons
18
1 2
: Gestion des projets, FirstProjectActivity est ici la classe principale du projet FirstProject . : Premire application. Au lancement, le contenu de la mthode onCreate() sexcute. : Excution de votre application.
Universit de Mons
19
Universit de Mons
20
1.5 Exercices
1. Installer lensemble des logiciels ncessaires 2. Crez votre premire application android
Universit de Mons
21
Visible
Universit de Mons
Infantino Giuliano | SEMI
Invisible
22
Universit de Mons
23
et /ou
Code XML
24
Universit de Mons
26
<TypeElement
android: id=@+id/mId android: text= Mtexte android: attribut= valeur android: attribut= valeur />
Universit de Mons
27
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 modifier dans le fichier main.xml Cfr Slide prcdent.
Universit de Mons
Infantino Giuliano | SEMI 28
2.2 Intents
Dfinition : Comme leur nom lindique, les intents sont des intentions. Ainsi si vous souhaitez, par exemple, dmarrer une nouvelle activit, lopration sera effectue par un Intent. Les intents sont galements disponibles lors dvnements tels que la rception de sms, le branchement dun priphrique usb,
Intent = Intention
Universit de Mons
29
2.2 Intents
Exemple dutilisation:
Commentaire:
Cration dun objet mu partir de la classe Intent. Les paramtres envoys au constructeurs sont lactivit principale (ici UsbActivity.this) et lactivit (classe) que lon souhaite ouvrir (Device.class). Ensuite la fonction startActivity() se charge donc douvir une nouvelle activit. La fonction startActivity() se verra remplace par la fonction startActivtyforResult() si vous souhaitez par exemple attendre une rponse de la nouvelle activit ouverte.
Universit de Mons
Infantino Giuliano | SEMI 30
Exemple dutilisation :
Affichage dun texte lors de la rception dun sms (<- intent), Demande de permission dutilisation lors dun branchement usb (<- intent).
Universit de Mons
31
Commentaire :
Les lignes de codes ci-dessus sont ajouter dans le manifest de votre application pour filtrer les intents envoys votre application. Par exemple ici, on filtre lintent ayant laction USB_DEVICE_ATTACHED . Cet intent est celui qui peut tre rcupr par lapplication lorsque un priphrique USB (non-HID) est connect.
Universit de Mons
32
Commentaire:
Rcupration de lintent si celui-ci a t filtr par notre intent-filter (voir slide prcdent). Ensuite, on peut facilement travailler avec lintent et ainsi par exemple rcuprer le priphrique Usb qui vient dtre connect.
Commentaire:
Cette manire de rcuprer un priphrique usb ne fonctionnera quau branchement du priphrique. Pour un accs ultrieur, rfrez vous au Guide du Dveloppeur. Ils vous faudra listez les priphriques prsent, slectionnez celui quil vous faut, et demandez une permission daccs.
Universit de Mons
Infantino Giuliano | SEMI 33
2.4 Exercices
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 le passage dune activit lautre en rcuprant le texte entr. Exemple application :
Universit de Mons
34
Universit de Mons
35
Commentaire:
Cette ligne permet aux utilisateurs voulant installer votre application de savoir que celle-ci ncessite le support de l USB_HOST .
Universit de Mons
36
Universit de Mons
37
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 du message et la communication entres les 2 Threads). La mthode obtainMessage() sans paramtre permet denvoyer un message blanc lHandler qui excutera le contenu de handleMessage(msg).
Universit de Mons
38
Universit de Mons
39
Commentaire : Pour trouver les priphriques non HID, il suffit de crer un objet manager partir de la classe UsbManager, rcuprer le contexte du Service USB et finalement utiliser la mthode getDeviceList() qui renvoi lensemble des priphriques connects.
Universit de Mons
40
La premire partie consiste a crr une demande de permission partir dun Intent, pour ce faire on utilisira la classe PendingIntent. Ensuite au moment o la demande sera effectue il faudra que celle-ci soit intercept par un couteur dvenments. Un BroadCastreceiver est donc ncessaire, il sappelle ici mUsbReceiver, et filtrera donc les demandes de permissions daccs au priphrique. Finalement la mthode request Permission permettra denvoyer la fentre popup lcran pour la demande de persmission qui sera filtr en arrire plan par le BroadCastReceiver mUsbReceiver.
Universit de Mons
Infantino Giuliano | SEMI 41
Commentaire :
Commentaire :
On rcupre tout dabord laction permission, ensuite on vrifie si elle correspond vraiment avec lIntent qui sera recu par le BroadCastReceiver si tel est le cas alors on rcupre le priphrique dans les extras de lIntent et on sassure quun priphrique a bien t envoy et a les permission daccs. Si une des conditions nest pas vrifie alors, on affiche Permission denied dans le logcat dEclipse
Infantino Giuliano | SEMI 42
Universit de Mons
Recherchez sur cette interfaces les points de communication 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
43
Universit de Mons
Commentaire : Rcupration du nombre dinterface disponible sur le priphrique en vue dtablir une communication, ensuite, affichage de ce nombre dans le LogCat dEclipse. Si nintf a pour valeur 1 cela signifie quil ny a donc quune interface de communication disponible lindex 0.
Universit de Mons
44
Commentaire : Ce code exemple, permet de connaitre le nombre de Endpoint disponible et de types XFER_BULK , apte tablir un transfert de donnes. Les rsultats sont affichs dans le LogCat dEclipse ainsi que la direction savoir IN ou OUT qui seront cruciaux dans la suite du programme. Finalement nous assignons les points de sorties 2 variables de types Endpoint (sil ny a videmment que 2 Endpoint).
Universit de Mons
45
Commentaire :
Par lintermdiaire de lobjet mUsbManager, on ouvre le priphrique voulu, et si cette opration se droule sans encombre, alors cette mthode renvoi une connexion fonctionnelle (UsbDeviceConnection). Finalement, pour que la connexion tablie aie le droit exclusif linterface du priphrique, il faut pour cela les demander.
Universit de Mons
46
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 ici quon peut voir toute limportance du sens de vos Endpoints.
Universit de Mons
47
3.4 Exercices
Crez une application aux graphismes simples. Crez un thread spar qui devra se charger de rcuprer la liste des priphriques connects. Sauvegardez la liste et affichez-l dans le Thread principale
Universit de Mons
48
Universit de Mons
49
Universit de Mons
50
Commentaire :
La solution rside dans lutilisation de la classe InputDevice ! Cration dun tableau dentiers qui contiendra les Ids des priphriques connects. Une fois les Ids rcuprs, on peut afficher le nom des priphriques connects laide des mthodes getName() et toString().
Universit de Mons
51
Universit de Mons
52
Commentaire :
Par rcupration de la vue principale, il nous faut crer un OnHoverListener() dont la mthode onHover() sera appel lors du mouvement dun curseur sur lcran (En vrifiant que le laction de lvnement est bien un mouvement HOVER_MOVE )
Universit de Mons
Infantino Giuliano | SEMI 53
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 rcupre la KeyCode qui vient dtre press et on supprime une partie de celle-ci pour finalement nafficher que la lettre qui vient dtre presse
Universit de Mons
54
Universit de Mons
55
Commentaire :
Dplacez le fichier .apk dans la racine de votre tablette, et installez le.
Universit de Mons
56
Commentaire:
Le code prsent utilise lapplication installe dans le slide prcdent, comprenez le code pour lutilisez votre tour.
Universit de Mons
57
4.4 Exercices
Crez une application permettant de lister tous les priphriques connects, fixez la localisation de la souris, de reconnaitre une touche presse au clavier, et finalement qui gre la WiiMote
Rsultat Exemple :
Universit de Mons
58