Android Introduction a La Programmation

  • Upload
    renhel

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

  • 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 :