41
ealit´ e augment´ ee avec Google Android Anthony GAUDINO <[email protected]> Marc WADJAHDI <[email protected]> Tiago T EIXEIRA <[email protected]> Xavier B ONTEMPS <[email protected]> Université de Nice-Sophia Antipolis, le 28 mai 2010

TER 10bontempsgaudinoteixeirawadjahdi

Embed Size (px)

DESCRIPTION

fd

Citation preview

  • Realite augmentee avec Google Android

    Anthony GAUDINO Marc WADJAHDI

    Tiago TEIXEIRA Xavier BONTEMPS

    Universit de Nice-Sophia Antipolis, le 28 mai 2010

  • Rsum

    Ce document constitue le rapport du Travail dEtude et de Recherche de la 1ere anne de forma-tion Master Informatique de lUniversit de Nice-Sophia Antipolis. Ce projet sest effectu lUniversitde Nice-Sophia Antipolisdu 23 mars au 31 mai sous la tutelle de Mr BENOUALI Hamine par le groupecompos de Anthony GAUDINO, Marc WADJAHDI, Tiago TEIXEIRA et Xavier BONTEMPS. Lintitulde ce TER est "Ralit augmente avec Google Android".

  • Remerciements

    Tout dabord nous souhaitons remercier, dans un premier temps, toute lquipe pdagogique delUniversit de Nice-Sophia Antipolisainsi que les intervenants professionnels responsables du Master IInformatique pour tous les enseignements quils nous ont apports.

    Nous remercions galement Mr BENOUALI Hamine, responsable de ce TER pour laide et lesconseils concernant les missions voques dans ce rapport, ainsi que pour la formation au NFC, ala programmation de Midlet et dapplications Android.

    Mr MAISONOBE Alexandre et Mr GALLI Gregory, tudiants au MBDS, pour leur soutien et leuraide.

    Mr MOPOLO MOKE Gabriel, directeur du MBDS, et tous les membres du MBDS pour nous avoiraccueillis chaleureusement au sein de leurs locaux.

    Et Mr MIRANDA Serge, coordinateur du MBDS, pour ses ides et son enthousiasme, et lintrtquil nous a port.

  • Table des matires

    Rsum 2

    Remerciements 3

    Introduction 6

    I Objectifs 7I.1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    I.1.1 Description de lapplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8I.1.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8I.1.3 Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    I.2 Exigences Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11I.2.1 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11I.2.2 Twinlinx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12I.2.3 Wikitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    II Conception 15II.1 Architecture 3-tiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16II.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    II.2.1 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17II.2.2 Rseaux Sociaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19II.2.3 Twinlinx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21II.2.4 Wikitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    II.3 Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23II.3.1 GlassFish v3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23II.3.2 JSF 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    II.4 Base de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24II.4.1 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    II.5 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25II.5.1 Serveur-BDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25II.5.2 Client-Serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    III Implmentation 29III.1 Persistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    III.1.1 Les entites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30III.1.2 Pattern DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31III.1.3 Pattern Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    III.2 Interface dadministration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32III.2.1 Java Server Faces Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

  • Ralit augmente avec Google Android 5/41

    III.2.2 Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33III.2.3 Le composant de gestion des types . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    III.3 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35III.4 Application TouchView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    III.4.1 NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35III.4.2 Realite Augmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    Conclusion 40

    Rfrences 41

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Introduction

    Depuis quelques annes, les fonctions du tlphone portable se multiplient et voluent sans cesse.Aujourdhui lcart entre un tlphone et un ordinateur portable se resserre de plus en plus. Parexemple avec un tlphone portable dit dernire gnration il est possible de consulter ses mails,naviguer sur internet, regarder des vidos ... Et cela de manire trs intuitive et rapide. Cest pourquoice dernier prend un rle de plus en plus important dans notre poche.

    Lenjeu tant bien sr de repousser les limites du tlphone portable le plus loin possible, notreprojet sinscrit dans le contexte de lensemble de projets Nice Ville NFC. Pour les partisans de NiceVille NFC le but est de proposer aux utilisateurs dun tlphone NFC une multitude de services : leremplacement de votre carte bancaire, la possibilit dobtenir des informations supplmentaires surune oeuvre dart ou mme sur les horaires de votre prochain bus et bien dautres...

    Les perspectives offertes par cette technologie de pointe sont immenses pour les services publicslocaux, notamment en matire de sant, daide aux personnes ges ou handicapes mais aussi ledomaine du dveloppement conomique et touristique.

    Ainsi, cest dans cette perspective que va sinscrire notre TER ( Projet Android 2.0) o lon vachercher rajouter une sphre de services existant sur des SmartPhones (Android) grce cettetechnologie du NFC mais aussi en se servant de la ralit augmente (superposition de modlesvirtuels en 2D ou 3D sur la ralit et ceci en temps rel).

  • Premire partie

    Objectifs

  • Ralit augmente avec Google Android 8/41

    I.1 Application

    I.1.1 Description de lapplication

    Notre but est doffrir lutilisateur un parcours de Valrose en touchant les diffrents Tags NFC si-tus sur le Campus et de lui proposer diffrentes mthodes dinteraction avec ces points de contactmais aussi de lui proposer une visite en ralit augmente avec notamment la possibilit de comparerdes images de Valrose datant de 1913 avec les images du parc telle quon le connat de nos jours.

    Enfin, le projet sest vu rajout une extension visant les agences immobilires qui est de rajouter auct ralit augmente la possibilit en filmant les faades des immeubles dobtenir des informationssur les appartements louer ou vendre (si il y en a de rfrencs).

    I.1.2 Client

    Near Field Communication

    Near Field Communication (NFC) est une nouvelle technologie de communication sans fil trs pro-metteuse. Bas sur le RFID, NFC permet dchanger des donnes entre un client mobile et des cartes puces sans contact. La frquence utilise par le NFC est de 13,56 MHz et peut atteindre un dbit de848 kbit/s.

    Quelques exemples dusages : Paiement en utilisant un appareil mobile (tlphone portable, ordinateur portable, etc.) ; Lecture dune carte de visite lectronique avec un PDA ; Synchronisation de signets Internet et de contacts entre un PDA et un tlphone portable ; Rcupration de la clef WiFi dun point daccs en approchant son priphrique NFC de la

    borne de diffusion.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 9/41

    Le NFC fonctionne sous trois diffrents modes : Le mode mulation de carte, cest--dire que le terminal mobile associ un lment de scurit

    mule le fonctionnement dune carte puce sans-contact. Le mode peer to peer, Ce mode permet deux terminaux mobiles dchanger de linformation,

    par exemple des vCard, des photos, des vidos, etc... Le mode lecteur, Ce mode permet un usager de lire des informations en approchant son

    mobile devant des tiquettes lectroniques.

    Dans le cadre de notre projet lun des objectifs est de placer des cartes NFC sur les diffrentesuvres dart exposes dans la parc ValroseLe but est de pouvoir avec un tlphone Android lire les cartes et ensuite avoir la possibilit dobtenirplus dinformations sur luvre et sur son crateur.De plus le fait de "toucher" luvre doit permettre daccder diffrents rseaux sociaux tels queFacebook, pour devenir fan de luvre ou bien Twitter pour tweeter le fait que lon se trouve devantcette uvre en ce moment mme.Un dernier objectif est de pouvoir laisser un commentaire sur cette uvre et de lire les commentaireslaisss par les autres personnes ayant "touch" cette uvre.

    Ralit Augmente

    On en parle de plus en plus de ce concept de ralit augmente notamment avec lapparitiondes derniers SmartPhones tels quAndroid ou iPhone. Les applications se multiplient et il y a degrandes chances pour que ce concept rvolutionne les interfaces Homme-Machine dans les annes venir. Tout dabord une petite prsentation de ce quest la ralit augmente va tre mise en placepour ensuite vous expliquer son implication dans le projet ralis.

    La ralit augmente consiste ajouter des objets virtuels sur une vido prise dans la ralit et obtenir ainsi une interaction possible entre des personnes ou des objets rels et des objets virtuels.Tout cela est rendu possible par des calculs raliss par un ordinateur ce qui permet dassurer unrsultat en temps rel et ainsi avoir une vraie superposition entre la vue relle et des modles virtuels.

    Pour le Projet Android 2.0, la ralit augmente va permettre la superposition de POI (points din-trts) sur la capture vido du tlphone lui mme ce qui permettra lutilisateur davoir en plus

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 10/41

    de la vido, des informations supplmentaires sur la campus Valrose, notamment des descriptionsdes lieux rpertoris ainsi que des images datant de 1913 de ces mmes lieux afin que lutilisateurpuisse faire la comparaison. Ainsi, il aura une vue densemble du campus Valrose sans mme avoir se dplacer juste en filmant avec son tlphone et en cliquant sur les POI quil souhaite voir.

    Mais aussi pour lextension de notre projet visant limmobilier, lutilisateur pourra juste en filmantles faades des immeubles se trouvant a proximit de lui savoir quels appartements sont en vente ouen location, il pourra consulter les photos de ces derniers, avoir des descriptions et mme prendrecontact directement avec les agences immobilires.

    I.1.3 Backend

    Comme voqu prcdemment lapplication est divise en deux parties le client et le backend. Lebackend doit remplir plusieurs objectifs

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 11/41

    Le stockage Des donnes

    Lapplication cliente tant dploye sur un systme embarqu, le volume de lapplication est alorsune contrainte. Dans cette optique le stockage des donnes est dlgu un serveur de base dedonnes distant.

    La restitution des donnes au client

    Le backend doit aussi fournir une solution pour la restitution des donnes a lapplication cliente.La communication doit se faire par des web services (Servlets) dploys sur le serveur dapplication.Ces web services renvoient les donnes formates au client.

    Ladministration des donnes

    Le backend doit fournir une interface dadministration permettant la gestions des donnes (cra-tion modification suppression). Laccs cette interface dadministration ne doit tre possiblequaprs authentification.

    I.2 Exigences Techniques

    I.2.1 Android

    Lapplication tant destine au nouveau systme dexploitation pour tlphone mobile (smart-phone) de la multinationale Google, une prsentation et une rflexion sur ce systme permettra demieux dvelopper et de comprendre les mcanismes la fois simples et complexes lis ce nouveaumonde en plein dveloppement : le monde de lembarqu, du mobile.

    Google se distingue dans le fait que le code source de son systme dexploitation est disponiblegratuitement. Cela fait partie de la philosophie et ltat desprit de lOpen Source avec ses avantageset ses inconvnients. Mme le logo du systme est libre de droit pour des crations infinies.

    A travers cette dcision importante, Google met en avant une politique de contribution autour deson systme dexploitation et compte sur la communaut des dveloppeurs pour amliorer leur sys-tme ou tout simplement dvelopper des applications pour enrichir leur plateforme AndroidMarket.

    tant dveloppes par Google, les interactions avec les services web comme google maps, calendarsont trs bien implmentes.

    Google ne met pas seulement disposition un SDK, mais aussi une documentation trs pratiqueet un portail internet dynamique (vido, tutoriel etc...)

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 12/41

    Android est divis en 4 couches. Nous allons travailler lors du dveloppement de notre applica-tion sur la couche applicative. En effet Android embarque une machine virtuelle java spcialementretouche par google pour rpondre aux contraintes de lembarqu. Cette machine virtuelle nommeDalvik permet lexcution dapplication java. On va bien sr profiter de la technologie XML impl-mente dans le SDK et conue dans lenvironnement de dveloppement qui permet la sparation dela couche graphique du code fonctionnel pur. Ce point sera trait dans le paragraphe GUI.

    De nombreuses Api (persistance, communication) connues et reconnues par la communaut dedveloppeur sont disponibles et utilisables dans les applications destines tre dployes sur An-droid. Cela est bien normal vu que le langage Java a t le choix de google pour attirer entre autresles dveloppeurs mobiles dj trs laise avec cette technologie. Les Api utilises dans lapplicationsont traites dans la suite de notre rapport.

    Avant de dvelopper, il est bien utile de se renseigner sur les moyens de distribution mis en uvrepar Google, si par la suite lapplication doit tre distribu dans de bonnes conditions, nous seronsdpendants de leur plateforme mme si il nest pas obligatoire dutiliser AndroidMarket.

    Google demande tout dveloppeur dsireux de distribuer son application par le biais dAndro-mde Market douvrir un compte spcial dveloppeur (licence).

    I.2.2 Twinlinx

    A lheure actuelle, les tlphones Android ne sont pas quips de la technologie NFC. Cest pour-quoi Twinlinx mis au point une plateforme logiciel combine un sticker permettant dajouter nimporte quel tlphone la technologie NFC.

    MyMax est le nom du sticker cr par TwinLinx, il permet de faire voluer le bluetooth du tl-phone avec NFC. Le fonctionnement est simple, le sticker se colle sur le tlphone et est dtect parcelui-ci via bluetooth. Ds que le sticker est en contact avec une carte puce NFC, il lit les informa-tions prsentes sur la carte et les transmets au tlphone.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 13/41

    Le sticker est compos dune partie active et dune partie passive. La partie active permet de rveillerle sticker et dtablir la communication bluetooth avec le tlphone.

    Twinlinx met disposition un kit de dveloppement pour son sticker. Il est donc possible de crersa propre application en J2ME en utilisant MyMax. Une documentation dtaille et de nombreuxexemples de code sont fournis avec le sticker notamment pour lire et crire sur une carte puce.

    I.2.3 Wikitude

    Pour le dveloppement de la partie ralit augmente sur Android, le choix de lAPI Wikitude a timpos.

    La ralit augmente est de plus en plus exploite sur les plate-formes mobiles, cest pourquoiune jeune entreprise autrichienne, Mobilizy a mis disposition sur son site une API pour le systmedexploitation Android, ddie la cration dapplications de ralit augmente.

    Mobilizy stait dj illustre sur ce terrain avec une application de golocalisation de points din-trts, Wikitude ( http://www.wikitude.org ), dont la majeure partie des informations visiblessur lcran dun mobile sont issues de lencyclopdie Wikipedia.

    Cette API de dveloppement reprend le principe de lapplication Wikitude et permet ainsi luti-lisateur de crer ses propres points dintrts sur le plan en temps rel dune application Android.Pour cela, il suffit dentrer les coordonnes dun point dintrt dans lAPI et lapplication chargeradelle mme les coordonnes, les affichant sur lcran du tlphone portable.

    En juillet dernier, une autre entreprise, Layar, a ouvert son API pour permettre aux utilisateurs deson application Android dy ajouter des informations et des points dintrts. Mais jusqu prsent,aucune socit (excepte Wikitude) na mis disposition une API gratuite compatible avec les autresapplications Android.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 14/41

    De plus Wikitude se distingue des autres applications concurrentes par son approche ouverte,qui consiste fournir cette API permettant tout un chacun de dvelopper des services de ralitaugmente pour Android, ou amliorer les existantes. Dautre part, avec Wikitude.me, ce sont lesutilisateurs qui sont appels complter la base de donnes de points dintrts qui apparatrontensuite dans lapplication sur les mobiles Android, sans ncessairement possder lun de ces mobilespuisque lopration se fait sur le web, de faon trs facile et intuitive.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Deuxime partie

    Conception

  • Ralit augmente avec Google Android 16/41

    Ce chapitre prsente les diffrents choix de conception relatifs notre projet.On prsentera premirement larchitecture 3-tiers qui est la base de notre application. Puis les 3 dif-frents tiers qui en decoulent. Et enfin les communications entre ces couches.

    II.1 Architecture 3-tiers

    Larchitecture 3-tier est le modle logique darchitecture applicative le plus adapt au projet. Ilvise sparer trs nettement trois couches logicielles au sein dune mme application, modliser etprsenter cette application comme un empilement de trois couches clairement dfini :

    la prsentation des donnes : correspondant laffichage, la restitution sur le poste de travail,le dialogue avec lutilisateur. Dans ce projet il sagit de lapplication cliente android.

    le traitement mtier des donnes : correspondant la mise en oeuvre de lensemble des rglesde gestion et de la logique applicative (Les servlets ou linterface dadministration web).

    l accs aux donnes persistantes : correspondant aux donnes qui sont destines tre conser-ves sur la dure, voire de manire dfinitive, le SGBDR.

    Ce modle permet de rpondre aux proccupations suivantes : Allgement du poste de travail client. Point trs important puisquil sagit de programmer une

    application pour smart-phone. La prise en compte de lhtrognit des plates-formes (serveurs, clients, langages, etc.). Ce

    qui rponds encore une fois une problmatique de notre application. Une meilleure rpartition de la charge entre diffrents serveurs dapplication.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 17/41

    II.2 Client

    II.2.1 Android

    Description de la GUI (interface utilisateur)

    Avant toute chose, il faut rappeler quAndroid nest pas destin seulement un type de terminauxmais une multitude et cela ne fera que progresser dans les annes venir. Les dveloppeurs devrontsadapter.

    Toutefois Android offre des solutions cette htrognit de manire simple et sans avoir tou-cher le cur du code source.

    les ressources alternatives (Alternate Resources) et le filtrage au sein de lAndroid Market. Lap-plication ntant pas destine tre distribue via Android Market, le package final ne tiendra pascompte du filtrage qui consiste taguer son application, permettant ainsi de la cacher aux terminauxnon compatibles. Par contre, lutilisation des ressources alternatives a permis dorganiser le dvelop-pement..Elles servent dfinir :

    Les structures de linterface graphique sous forme de fichier XML, contenues dans le rpertoirelayouts.

    Les images utilises, par exemple en arrire plan ou icne, contenues dans le rpertoire dra-wable,

    Des jeux de valeurs (cration de couleur, variable), contenus dans le rpertoire values.

    Pour le dveloppement de linterface utilisateur, lquipe charge de cette dernire a utilis le fra-mework Android mis disposition dans lenvironnement de dveloppement Eclipse. Pour construireune interface graphique, il existe des outils payants permettant un travail plus rapide et plus simple.

    La reprsentation des crans dans le format XML permet une plus grande souplesse notammentlors des modifications. Android dispose nativement de composants graphiques assez volus etadapts spcialement aux contraintes du tlphone portable.

    Dans ce contexte, lutilisation du composant Toast est particulirement bien adapte linforma-tion du client par le systme sous forme de message concis et phmre.

    Lapplication est un ensemble dcran graphique, chaque cran prsent lutilisateur est appelune Activity, elle gre entre autre lappui sur les touches physiques et les appuis tactiles.

    Dfinition dune Activity

    Une Activity prsente une interface visuelle pour une tche que lutilisateur peut entreprendre.Par exemple, une activity peut prsenter une liste dlments de menu que lutilisateur peut choisir,ou elle peut afficher des images avec leur lgende. Une application de messagerie peut avoir une acti-vity montrant la liste des contacts qui lon peut envoyer des messages, et une seconde activity pourcrire le message au contact choisi, et dautres activity pour voir les anciens messages ou modifierles paramtres. Bien quelles fonctionnent ensemble pour former une interface utilisateur cohrente,chaque activity est indpendante des autres. Chacune est implmente en tant que drive de laclasse Activity.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 18/41

    Chaque activity contient une fentre par dfaut pour dessiner dedans. Gnralement, la fentreremplit lcran, mais elle peut tre plus petite que celui-ci ou mme "flotter" au-dessus des autresfentres. Une activity peut aussi utiliser des fentres additionnelles - par exemple une fentre de dia-logue "pop-up" qui demande une rponse de lutilisateur, ou une fentre qui prsente aux utilisateursdes informations vitales quand ils slectionnent un lment particulier sur lcran.

    Suivant le type dcran (formulaire, cran dinformation etc.. ) les activity sont habilles par descomposants plus simples et plus basiques comme label, textbox, button , list, le tout dispos harmo-nieusement dans des composants de type view pour une ergonomie cohrente niveau utilisateur.

    Le contenu visuel de la fentre (activity) est fourni par une hirarchie de vues, objet qui drive dela classe View. Elle sont reprsentes par un espace rectangulaire permettant de rpondre aux actionsde lutilisateur. Donc les vues sont lendroit o linteraction avec lutilisateur a lieu.

    Pour faire passer des informations entre Activity, Android propose un composant nomm Intent.Ce composant permet de transmettre les choix de lutilisateur, variable entre Activity.

    Un intent est un objet Intent qui dtient le contenu du message. Pour les activity et services, unintent contient le nom de laction demande et spcifie les URI des donnes sur lesquelles agir.

    Le fichier Manifest

    Avant quAndroid puisse dmarrer un composant dune application, il doit apprendre que lecomposant existe. Par consquent, les applications dclarent leurs composants dans un fichier mani-fest qui est group dans le package Android, le fichier .apk qui contient aussi le code de lapplication,les fichiers et les ressources.

    Le manifest est un fichier XML et se nomme toujours AndroidManifest.xml pour toutes les appli-cations. Il permet de faire de nombreuses choses en plus de dclarer les composants de lapplicationcomme nommer les librairies dont lapplication a besoin dtre lie (en plus de la librairie Android)et identifier les permissions dont lapplication a besoin.

    Pour que lapplication soit autorise accder linternet, la dfinition d une permission dans lefichier manifest est obligatoire :

    remarque : Lors des tests en local, on sest rendu compte quAndroid met disposition une nouvelleadresse 10.0.2.2 permettant de travailler en local sans problme.

    Les principaux Activity

    cran principal. La premire que lutilisateur aperoit est lcran de slection du mode (slectionde la technologie) NFC ou ralit augmente, cet cran est compos de deux boutons disposs lunen dessous de lautre grce lemploi dun layout. Ces deux boutons sont relis un listener de clicqui va permettre de savoir quel bouton a t slectionn.La touche physique MENU du tlphone est aussi, dans cet cran principal, rli un listener declic. Lors de son clic, un menu apparat permettant de quitter lapplication ou de sinformer sur lespersonnes ayant particip au dveloppement.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 19/41

    cran dtail Objet NFC. Lcran permettant dinformer lutilisateur sur ce quil vient de toucheravec son tlphone est compos dune Image, son rle est dafficher limage associe lobjet touch.La description et le lien internet sont quant eux affichs dans des labels classiques. Comme pourlcran principal la touche menu est coute pour offrir diffrentes interactions surtout au niveau desrseaux sociaux (voir paragraphe rseaux sociaux).

    cran ralit augmente. Avant de basculer en mode ralit augmente, lutilisateur doit slection-ner un type dobjet visualiser. Cet cran est compos seulement dun composant List muni dunescrollBar verticale. Ce composant List reoit et permet de visualiser les types dobjets disponiblesdans la base de donnes

    Lorsque le client bascule en mode ralit augmente, linterface est celle de lapplication wikitudeavec la diffrence lors de la slection dun objet, une nouvelle activity souvre en prsentant unegalerie dimages associe lobjet slectionn implment grce aux composants gallery et images-witcher, un label est aussi prsent pour une bref description.

    cran Consulter commentaire Cet cran est constitu dun composant List regroupant tous lescommentaires posts par les utilisateurs et prsents dans la base de donnes. Un couteur est placsur chaque ligne de la liste pour afficher une fentre permettant de visualiser la date et lintgralitdu message.

    II.2.2 Rseaux Sociaux

    Un rseau social est un ensemble dentits sociales ( par exemple des individus ou des organi-sations) relies entre elles par des liens cres lors des interactions sociales(change dinformation ouautre entre deux agents au sein du mme systme). Il se reprsente par une structure ou une formedynamique dun groupement social. Des rseaux sociaux peuvent tre cres stratgiquement pouragrandir ou rendre plus efficient son propre rseau social(professionnel, amical).

    Un rseau social reprsente une structure sociale dynamique se modlisant par des sommets etdes artes. Les sommets dsignent gnralement des gens et/ou des organisations et sont reliesentre eux par des interactions sociales.

    FIG. 1: Les six degrs de sparation (ou liaisons) : leffet du petit monde.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 20/41

    On trouve sur Internet toutes sortes de rseaux sociaux. Certains regroupent des amis de la vierelle, comme Donaki et les Copains davant. Dautres aident se crer un cercle damis, trouverdes partenaires commerciaux, un emploi ou autres. Il sagit de Rseautague Social(ensemble desmoyens mis en oeuvre pour relier des personnes entre elles), comme Facebook, MySpace, Twitter,Linkedln, Habbo...

    Pour Android 2.0, les rseaux sociaux qui ont t choisis sont : Facebook et Twitter. Grce cesdeux rseaux, les utilisateurs de lapplication pourront garder contact et partager leurs avis sur lesoeuvres ou endroits de Valrose, et ainsi crer un rseau social autour du campus Valrose lui mme.

    facebook

    Petit rappel : Facebook est un rseau social cre par Marc Zuckenberg et destin a rassembler despersonnes proches ou inconnues.

    Dans le cas dAndroid 2.0, il va permettre aux utilisateurs de lapplication de partager avec leurentourage lendroit (ou oeuvre) devant lequel il se trouve en y incluant un descriptif de lendroit(ou oeuvre) et de rajouter un commentaire personnel sur ce le message quils veulent faire passer oupartager avec leur entourage.

    Pour lintgration de Facebook Android plusieurs API ont t tudis : FBRocket Facebook-java-api fbconnect-android

    Cest finalement fbconnect-android (API non officielle) qui a t intgre au projet. Elle a t choisiede par la clart de son code (compar a lAPI facebook en java), de son intgration sur Androiddj pr-cod, mais aussi de par ses interfaces intuitives pour lutilisateur ainsi quun stockage dela session de lutilisateur pour une r-utilisation ultrieure (afin dviter a ce dernier de rcrire sasession et mot de passe chaque fois).

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 21/41

    twitter

    Jtweeter. Pour rpondre lintgration des rseaux sociaux dans lapplication et concernant la fonc-tionnalit tweeter, lutilisation de lapi jTwitter sest montre la plus naturelle et la plus simple.http://www.winterwell.com/software/jtwitter.php

    Jtwitter est une petite libraire java permettant de communiquer avec le service twitter. Ces fonc-tionnalits permettent de dfinir son statut, rcuprent la liste de ces followers. Daprs le site internetde lapi, tout ce quil est possible de faire avec twitter, peut tre fait avec jTwitter.

    Aprs le tlchargement de la version 1.6 les tests ont pu commencer en se basant sur le codedexemple donn sur le site. Les rsultats tant concluants, lintgration de cette api fut compltepar une interface graphique adquate.

    // Make a Twitter objectTwitter twitter = new Twitter("my-name","my-password");// Print Daniel Wintersteins statusSystem.out.println(twitter.getStatus("winterstein"));// Set my statustwitter.setStatus("Messing about in Java");

    II.2.3 Twinlinx

    TWINLINX est aujourdhui la seule socit qui propose un sticker Passif et Actif (carte et lecteur),qui en plus est capable de communiquer avec le tlphone via BlueTooth. Les points forts de MyMax :

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 22/41

    Sa simplicit de dploiement (on colle Mymax derrire son tlphone) va permettre aux opra-teurs de proposer rapidement et simplement de nouveaux services (applications sans contact)aux utilisateurs.

    80% du parc de tlphone mobile est compatible avec MyMax. Une plate forme multi application (paiement, transport, contrle daccs) qui permet de mettre

    dans le sticker des applications totalement indpendantes. Chargement et modification des applications par le rseau GSM ! Plus besoin de passer

    la borne pour recharger son pass Navigo, de demander une carte dautorisation daccs, derecharger sa carte de paiement ! Les informations sont transmises lutilisateur par GSM et lacarte est mise jour.

    La fonctionnalit lecteur de MyMax offre de nouvelles perspectives : le tlphone devientle support daffichage des informations contenues dans des cartes externes ou tout autre objetsans contact. Le tlphone (via son clavier et son cran) permet aussi de changer les donnesde la carte.

    La communication entre 2 MyMax, ce qui permet dchanger des donnes entre 2 tlphones.

    Le sticker permet de faire fonctionner la partie NFC de lapplication mobile : Une connexion blue-tooth est tablie entre le sticker et le tlphone lorsque lutilisateur entre dans la partie NFC de lap-plication et approche le tlphone dune carte puce. Le sticker transmet alors lUniversally UniqueIdentifier (UUID) de la carte au tlphone.

    Bien que Twinlinx soit compatible avec un grand nombre de tlphones, il nest toujours pas op-rationnel pour les tlphones Android, les stickers devraient sortir fin juin 2010.

    II.2.4 Wikitude

    Wikitude est lune des nombreuses applications de ralit augmente prsente sur le march.Contrairement ses concurrents, Wikitude met disposition une API de dveloppement plus libre.Plus prcisment, Layar qui est un concurrent direct de Wikitude ne permet pas la cration de Pointof Interest (POI) directement au sein du code source. Pour utiliser Layar il faut crer et enregistrerces POIs dans leur propre base de donnes. De ce fait il est impossible de configurer des actionspersonnalises au moment dun clic sur un POI.

    Wikitude quand lui mis disposition un plus grand nombre de fonctionnalits. Il est possiblede crer des POIs personnelles sans les hberger sur le serveur de Wikitude. Un point fort de leurAPI est de permettre lassociation dune action personnalise pour chaque POI.

    Wikitude permet de faire fonctionner la partie ralit augmente de lapplication mobile. Lorsquelutilisateur entre dans la partie ralit augmente de lapplication, il lui est possible de choisir untype de POI afficher lcran (Oeuvre dart du parc Valrose, Immobilier, etc.). Une fois sa slectionfaite, les POIs sont crs laide de lapi et une vue de ralit augmente est lance. Une fois danscette vue lutilisateur a la possibilit de slectionner un POI et dafficher une nouvelle vue spcifique ce POI.

    Un bug rside encore dans lapi, au moment de changer de vue lors de la slection dun POI.Wikitude met disposition des outils pour rcuprer les informations lies ce POI dans la vuesuivante. Malheureusement cette fonctionnalit ne sera oprationnelle que dans la prochaine versionde Wikitude qui devrait sortir la mi juin.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 23/41

    II.3 Serveur

    II.3.1 GlassFish v3

    GlassFish est le nom du serveur dapplications Open Source Java EE 6 dans sa version 3.

    Hitorique

    Mai 2006 : v1.0 Septembre 2007 : v2.0 | Ajout des fonctions de haute-dispo/clustering et support de Web Ser-

    vices avancs et une performance accrue. Dcembre 2009 : v3.0 | Sortie en mme temps que Java EE 6, elle apporte un dcoupage modu-

    laire et des temps de dmarrage de quelques secondes.

    Fonctions

    Avec GlassFish v3, cest un support complet de Java EE 6 qui est propos notamment ceux de : JPA 2.0 : collections, verrou pessimiste, API de critres, lutilisation dEclipseLink, ... JSF 2.0 : facelets/XHTML, AJAX intgr, composants composites, ... Et Servlet 3.0 : web.xml optionnel, API asynchrone, ... de dmarrage de quelques secondes.

    Cest ce qui a motiv le choix dun serveur Glassfish.

    Tomcat VS GlassFish

    Au del des diffrences dAPI disponibles (effectivement Tomcat noffre quun sous-ensemble deJavaEE/J2EE), il y a des diffrences sur :

    Les outils dadministration (avantage GlassFish) Le clustering (avantage GlassFish) La "lgret" du produit (avantage historique Tomcat qui a moins de services dmarrer).

    Cependant GlassFish v3 "prelude" vient de sortir et offre une architecture trs modulaire (OSGiFelix) qui permet un temps de dmarrage trs rapide (3-5 secondes) et un dmarrage des ser-vices la demande.

    II.3.2 JSF 2.0

    La technologie JSF (Java Server Faces) reprsente un Framework bas sur les composantes utili-sateurs utilises pour construire des applications web. LAPI de JSF permet de reprsenter les com-posants, de grer leur tat et leur comportement. Elle facilite lcriture dinterfaces utilisateurs enfournissant une bibliothque de contrles :

    Simples : zones de saisie classiques, boutons, liens hypertextes. Complexes : tableaux de donnes Elle permet mme de crer ses propres composants, ou denrichir les composants existants.

    JSF permet principalement de :

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 24/41

    Faciliter le dveloppement de pages web grce un Framework bas sur les composants. De fournir un framework simple pour grer ces composants, leurs interactions et leurs cycles

    de vie. Grer les vnements. Valider cot serveur. Dfinir la navigation des pages. Automatiser au maximum la gnration de code du cot client afin de ne pas avoir se soucier

    des diffrences entre chaque navigateur.JSF tant une simple spcification il existe de nombreuses implmentations celle qui a t retenue estcelle de Sun.

    II.4 Base de donnes

    II.4.1 MySQL

    Ce clbre systme de gestion de donnes est trs connu, son utilisation fut donc indispensable pourla partie Backend de lapplication, en effet un des critres de choix, fut en premier lieu un SGBD re-lationnel compte tenu du cursus universitaire certains membres du groupe possdent dj un bonneexprience sur ce genre de service.Aussi Mysql possde une bonne documentation et une communaut active autour de ce moteur, cequi rend le tout trs agrable. Aprs les phases de test en local qui ont t relativement pnibles auvu des configurations de nos stations de travail et pour plus de confort, une concertation avec lad-ministrateur rseau du mbds (Mr Harris DAHON) sur les besoins et contraintes en matire de base dedonnes dbouch sur une base accessible partout et tout moment. En fin de journe, un serveurMySql tait et est toujours disponible sur la machine : http://neptune.unice.fr

    Le serveur de base de donnes est un point trs critique de lapplication. En effet il contient toutesles donnes utiles pour lapplication mobile. Sans la base de donnes, lapplication est inutilisable.Cest pour cela quil serait important et indispensable de mettre en place un systme de rplicationde donnes, serveur miroir, configuration des backups des tables.

    De mme pour la configuration des droits des utilisateurs sur la base et des paramtres comme lenombre maximum de connexions simultanes sur la base, le nombre maximum de connexions dunclient par heure (pour viter certaines attaques automatiques de robot ou de hack).

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 25/41

    La base est constitue de cinq tables qui ensemble constituent la partie persistante de lapplicationmobile. Le dcoupage en cinq tables semble tout a fait valable, en effet type, commentaire, poi, tagrprsentent quatre entits bien distinctes relies grce une cl trangre.

    La table ter_android.poi dcrit et reprsente lobjet virtuel affich pendant la ralit augmente. Unpoi est un point dintrt possdant absolument des coordonnes gographiques.

    La table type permet de filtrer les poi suivant leur utilisation, immobilier, valrose1913 etc...

    II.5 Communication

    II.5.1 Serveur-BDD

    JPA 2.0

    La Java Persistence API est une interface de programmation Java permettant aux dveloppeursdorganiser des donnes relationnelles dans des applications utilisant la plateforme Java.

    La persistance dans ce contexte recouvre 3 zones : LAPI elle-mme, dfinie dans le javax.persistence package Le langage Java Persistence Query (JPQL) Lobjet/les mtadonnes relationnelles

    Principales proprits de JPA : Pas de code spcial li la persistance implmenter dans le classes, les objets POJO (Plain Old

    Java Object) peuvent tre persistants. Lutilisation dannontations. Des appels simples de haut niveau permettent de grer la persistance, tels que persist(objet)

    pour rendre un objet persistant. Les donnes de la base peuvent tre accdes avec une vision objet .

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 26/41

    EclipseLink

    EclipseLink est un framework open source de mapping objet-relationnel pour les dveloppeurs Java.Il fournit une plateforme puissante et flexible permettant de stocker des objets Java dans une base dedonnes relationnelle et/ou de les convertir en documents XML.EclipseLink est driv du projet TopLink de la socit Oracle. Il supporte un certain nombre dAPIrelatives la persistance des donnes et notamment la JPA.

    Pourquoi EclipseLink ?

    Plusieurs raisons nous ont amens a choisir EclipseLink comme Implmentation de JPA : La raison principale est quil sagit de limplmentation de rfrence de JPA 2.0. De plus cest le framework support nativement par GlassFish v3. Ctait aussi le framework sur lequel nous avions le plus dexprience. Ceci grce lensei-

    gnement reu au cours de notre formation durant lUE "Persistence" dlivre par Mr RichardGRIN.

    II.5.2 Client-Serveur

    Web Services

    Pour assurer la communication entre la base de donnes et le client mobile le choix sest port surle dveloppement de servlets.

    Les servlets ont de nombreux avantages par rapport aux autres technologies ct serveur. Toutdabord, tant donn quil sagit dune technologie Java, les servlets fournissent un moyen dam-liorer les serveurs web sur nimporte quelle plateforme, dautant plus que les servlets sont indpen-dantes du serveur web (contrairement aux modules apache ou lAPI Netscape Server).En effet, les servlets sexcutent dans un moteur de servlet utilis pour tablir le lien entre la servlet etle serveur web. Ainsi le programmeur na pas se soucier de dtails techniques tels que la connexionau rseau, la mise en forme de la rponse HTTP, ...

    Enfin une servlet tant une application Java, peut utiliser toutes les API Java afin de communiqueravec des applications extrieures, se connecter des bases de donnes, accder aux entre-sorties(fichiers par exemple).

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 27/41

    Quatre servlets sont accessibles partir du serveur : Servlet dajout de commentaire : Permet dajouter un commentaire dans la base de donnes en

    spcifiant en paramtre lid dun POI. Servlet de rcupration des commentaires : Permet de rcuprer tous les commentaires en sp-

    cifiant en paramtre lid dun POI. Servlet de rcupration des POIs : Permet de rcuprer soit tous les POIs soit un ensemble de

    POIs en spcifiant en paramtre le type souhait. Servlet de rcupration des types : Permet de rcuprer tous les types de POIs partir de la

    base de donnes.Chaque servlet renvoie ses rsultats au format XML.

    Serialisation XML

    La srialisation XML possde plusieurs diffrences avec la srialisation binaire. La plus videnteest que les donnes gnres le sont dans un format textuel (XML) et non binaire. Ensuite la sria-lisation XML a t spcialement conue pour tre utilise avec les JavaBeans ce qui apporte certainsavantages mais aussi certaines limitations.

    Avantages : La portabilit : il ny a aucune dpendance avec limplmentation propre des classes qui peuvent

    donc tre changes entre diffrentes VMs de diffrents fournisseurs. Les documents XML gnrs sont compacts grce lutilisation dun algorithme dlimination

    des redondances (par exemple les attributs ayant leur valeur par dfaut ne sont pas crits). La tolrance aux fautes : si une erreur non structurelle est dtecte, la partie affecte nest pas

    prise en compte. tant un document XML, le rsultat est lisible par lhumain et exploitable par dautres pro-

    grammes.

    SAX

    Simple API for XML ou SAX est une API gnrale pour la lecture dun flux XML.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 28/41

    Il existe des implmentations de cette API dans tous des langages tels que C++, C#, Java, Pascal,perl, PHP, car XML sest largement impos aujourdhui dans le monde du logiciel pour lchangedinformations.

    Il existe deux grandes API pour relire les flux XML : DOM et SAX.

    SAX est vnementielle alors que DOM transforme larborescence XML en arborescence du lan-gage cible. Lintrt majeur de DOM est donc la possibilit quil offre daller et venir votre gr danslarborescence, son inconvnient majeur reste la lourdeur du traitement. En effet, SAX tant vne-mentiel, son traitement se fait au fil du flux entrant.

    La lgret et la rapidit dexcution du parseur SAX t un choix majeur tant donn quil doitsexcuter sur une appareil mobile.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Troisime partie

    Implmentation

  • Ralit augmente avec Google Android 30/41

    Cette partie prsente limplmentation des diffrents choix de conception de manire non ex-haustive. Ils sont ordonns par ordre de dpendances. La premiere section aborde est la persistancequi est utilise par les webs services et linterface dadministration prsents ensuite. Cette partie setermine par la prsentation de limplmentation du client mobile.

    III.1 Persistance

    Limplmentation de la persistence est bas sur lutilisation des patterns les plus courants.

    III.1.1 Les entites

    Les entites sont dclares dans le fichier persistence.xml

    org.eclipse.persistence.jpa.PersistenceProviderpersistence.entites.Commentairepersistence.entites.POIpersistence.entites.Tagpersistence.entites.Typepersistence.entites.TerAndroidUser...

    Et voici un exemple de comment ces entits sont dfinies, simplement en utilisant les annotationsde JPA.extrait de POI.java :

    ...@Entity@Table(name = "poi")public class POI implements Serializable {

    @Id@GeneratedValueprivate int id;@ManyToOneprivate Type type;@OneToOne(cascade = CascadeType.PERSIST)private Tag tag;private double latitude;private double longitude;private double altitude;private String name;@Column(length=2000)private String description;private String link;private String detailAction;private String iconResource;private String iconUri;@OneToMany(mappedBy = "poi", cascade = CascadeType.ALL)private List comments;

    ...

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 31/41

    III.1.2 Pattern DAO

    Ce pattern permet de faire le lien entre la couche daccs aux donnes et la couche mtier duneapplication. Il permet de mieux matriser les changements susceptibles dtre oprs sur le systmede stockage des donnes, donc, par extension, de prparer une migration dun systme un autre(BDD vers fichiers XML par exemple...).Ceci se fait en sparant accs aux donnes (BDD) et objets mtiers (POJO).

    III.1.3 Pattern Factory

    Lutilisation de ces patterns nous permet de dlguer linstanciation des DAOs a une factory etainsi de prvoir un possible changement de Base de donnes dans le futur.Ces modles de conceptions amliorent lindpendance vis--vis du type de persistance.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 32/41

    III.2 Interface dadministration

    III.2.1 Java Server Faces Configuration

    Comme beaucoup de framework Java JSF utilise le XML comme moyen de configuration.

    web.xml

    Il faut dfinir comme dans toute application web les paramtres de contexte de JSF dans le fichier web.xml

    ...

    javax.faces.STATE_SAVING_METHODclient

    javax.faces.PROJECT_STAGEdeveloppement

    com.sun.faces.resourceUpdateCheckPeriod-1

    com.sun.faces.validateXmltrue

    Faces Servletjavax.faces.webapp.FacesServlet

    Faces Servlet/AndroidTer/*

    ...

    faces-config.xml

    Cependant JSF possde son propre fichier de configuration. Il sert a dfinir les rgles de naviga-tion. Mais aussi a dclar les Managed-Bean qui sont en fait nos composants.

    defaultControllercontroller.Controllersession

    ...

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 33/41

    III.2.2 Connexion

    Login

    Avant de pouvoir utiliser linterface de gestion lutilisateur doit se connecter laide dun login

    mot de passe.

    Au moment de lauthentification seule le DAO des utilisateurs est instanci.

    Singleton

    Pour sassurer quil ny ai quune connexion douverte par utilisateur, lapplication utilise le pat-tern Singleton.

    ...public class ConnectionMySQL implements Serializable {

    private static ConnectionMySQL connMySQL;

    ...

    private ConnectionMySQL() {}

    ...

    public static ConnectionMySQL getConnMySQL() {if (connMySQL == null) {

    connMySQL = new ConnectionMySQL();}return connMySQL;}

    ...}

    Session

    Si lauthentification est reussi la connexion est mise en session. Pour cel il faut rcuprer le contextde JSF le FacesContext et recuprer la session et y ajouter un attribut.

    public static HttpSession getSession() {return (HttpSession) FacesContext.getCurrentInstance().getExternalContext

    ().getSession(true);}...getSession().setAttribute("connection", ConnectionMySQL.getConnMySQL());

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 34/41

    III.2.3 Le composant de gestion des types

    Cette sous section presente les deux parties dun composant le controller et la vue.

    Le controller

    ...@ManagedBean@SessionScopedpublic class TypeController extends Controller {

    private Type type = null;private transient DataModel types = null;private transient DataModel superTypes = null;private String superTypeString = "";

    public TypeController() {super();refreshTypes();

    }

    private void refreshTypes() {superTypes = new ListDataModel();types = new ListDataModel();if (UserController.getIsConnect(null)) {

    types.setWrappedData(getSessionConnection().getTypeDAO().findAll());}}

    public String index() {if (!UserController.getIsConnect(null)) {

    return "index";}refreshTypes();type = null;return "typelist";}

    ...

    La vue

    Index TypeIndex Type

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 35/41

    III.3 Web Services

    La servlet GetPOI : Fonction : Cette servlet renvoie un ensemble de POIs en fonction du type pass en paramtre. URL dappel : http://neptune.unice.fr:8080/DAO_Servlet_Android/GetPOI?type=all

    Type de rponse : Renvoi la srialisation en XML dune liste de POI.

    La servlet GetComment : Fonction : Cette servlet renvoie un ensemble de Commentaire lis un POI donc lid est pass

    en paramtre. URL dappel : http://neptune.unice.fr:8080/DAO_Servlet_Android/GetComment?poiId=3

    Type de rponse : Renvoi la srialisation en XML dune liste de Commentaire.

    La servlet addComment : Fonction : Ajoute un commentaire sur un POI dans la base de donnes. URL dappel : http://neptune.unice.fr:8080/DAO_Servlet_Android/AddComment?author=anthony&date=02/11/1988&comment=mon+message&poiId=3

    Type de rponse : Aucune.

    La servlet GetType : Fonction : Cette servlet renvoie tous les types des POIs prsent dans la base de donnes. URL dappel : http://neptune.unice.fr:8080/DAO_Servlet_Android/GetType Type de rponse : Renvoi la srialisation en XML dune liste de type.

    Algorithme de fonctionnement : Chaque servlet instancie une connexion la base de donnes,rcupre un objet DAO et interroge la base de donnes. Enfin grce la classe XMLEncoder prsentedans le langage Java, lobjet rcupr est srialis puis envoy dans le flux de sortie de la servlet.

    III.4 Application TouchView

    III.4.1 NFC

    Rappel : Cette partie nest pas encore implmente car les stickers TwinLinx ne sont pas encoredisponibles. Pour le moment lapplication ne fait que simuler le contact dune carte NFC.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 36/41

    Lorsque TouchView est lanc et que lutilisateur appuie sur le bouton Touch, une requte est en-voye une servlet pour interroger la BD est rcuprer sous la forme dun fichier XML le POI corres-pondant lUUID.Le POI est dserialis cot mobile laide du parser SAX puis lActivity NFC est instancie et affichetoute les informations lies au POI.

    Exemple de lActivity NFC avec le POI du chteau Valrose. On voit apparatre lcran le titredu POI, une image du chteau, une courte description et un lien internet correspondant au POI quipermet douvrir le navigateur web du mobile.

    Un menu est disponible pour pouvoir utiliser les deux rseaux sociaux disponibles dans Touch-View savoir Facebook et Twitter mais aussi pour laisser un commentaire qui sera stock sur la BDdu projet.

    Le bouton "Ajouter Commentaire" ouvre une Activity prsentant un formulaire lutilisateur entreson nom et le commentaire puis valide.Le nom et le commentaire sont alors encods au format HTML avec lencodage "utf-8" et transmis enparamtre dune servlet pour tre stocks dans la base de donnes.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 37/41

    Le bouton "Voir Commentaires" ouvre une ListActivity rpertoriant tous les commentaires lis auPOI. Les commentaires sont rcuprs laide dune servlet hberge sur le serveur dapplication.

    Exemple de code XML retournant une liste de commentaires :

    Anthony

    Jadore le chateaux de Valrose

    594428400000

    201

    Le bouton "Facebook" lance une Activity dj prsente dans lapi fb-connect. Lapi fournit tous lesoutils pour se connecter et publier sur son propre mur Facebook.

    Intent intentFb = new Intent(Nfc.this, FacebookActivity.class);startActivity(intentFb);

    Ce bout de code permet de lancer lActivity Facebook partir de la vue NFC.

    Le bouton "Twitter" permet de lancer une boite de dialogue de connexion. Un objet Twitter estinstanci pour vrifier la connexion.Si la connexion est valide, lutilisateur peut alors crire le contenu de son Tweet et lenvoyer.

    Twitter twitter = new Twitter(user,password);twitter.setStatus("Mon message");

    Code permettant la connexion et lenvoi dun tweet avec lapi Twitter.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 38/41

    III.4.2 Realite Augmente

    Pour la vue Ralit Augmente, il a fallu tout dabord enregistrer lapplication auprs de Wiki-tude pour obtenir une cl afin de ne plus avoir linscription BETA visible sur la vue Camra silapplication nest pas enregistre.

    Lorsque lapplication TouchView est lance et que lutilisateur appuie sur le bouton View, lutili-sateur se retrouve dans lactivity AugmentedReality, ici, il a le choix entre les diffrents types de POIqui sont stocks dans la base de donnes (Immobilier, Valrose ...).

    Une fois le type de POI selectionn, une requete est envoye une Servlet pour interroger la BD etrcuperer sous la forme dun fichier XML les POI du type choisi prsents dans la base de donnes. LesPOI sont dserialiss cot mobile laide du parser SAX puis, la vue Wikitude (ralit augmente)est lance avec les POI de la base de donnes.

    La vue ralit augmente est lance avec la mthode : startARViewBasic(), et les POI sont ajou-ts la vue avec le constructeur :

    new WikitudePOI(double latitude, double longitude, double altitude, String name, String des-cription, String link, String detailAction, String iconresource, String iconuri) les paramtrestant bien sr ceux rcuperes par la requete sur la base de donnees. Le detailAction est le nom

    de lactivity qui sera lanc par le bouton visible lorsquun POI est selectionn.

    wikiPoi.setDetailAction("wikitudeapi."+poi.getDetailAction());

    Il est cependant obligatoire de prfixer les detailAction des POI par wikitudeapi. (dfinis parlAPI Wikitude).

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Ralit augmente avec Google Android 39/41

    Dans cette vue lutilisateur peut parcourir les diffrents POI, ces derniers representent la localisa-tion de lobjet rel, une fois selectionn lutlisateur peut se rendre sur le site web du POI (clic sur le

    bouton ), lancer lactivity du POI (clic sur le bouton ), ou bien faire dfiler tous les POIprsents dans la vue.

    Lors du lancement de lactivity du POI, lutilisateur se retrouve sur une nouvelle activit o il aune galerie contenant les diffrentes images du POI ainsi que la description de ce dernier.

    A. GAUDINO, M. WADJAHDI, T. TEIXEIRA, X. BONTEMPS

  • Conclusion

    A la date de rendu le vendredi 27 mai, le cahier des charges global a t respect, tout a long dudveloppement du projet le planning et plus particulirement les sous objectifs hebdomadaires ontt strictement tenus. La rpartition des tches entre les membres de lquipe a jou un rle crucialpermettant ainsi une bonne cohsion du groupe et un travail efficace.

    Cependant certains problmes techniques ont empch de rendre lapplication totalement fonc-tionnelle. Le plus important tant celui du sticker NFC, pour le systme Android, de la socit Twin-lix, qui est encore au stade de dveloppement (Aucune version bta disponible). De mme pour lAPIWikitude.

    Tout naturellement, lapplication peut tre sujet a des modifications et optimisation. Bien entendu,limplmentation de la nouvelle version de lAPI Wikitude et du Sticker NFC pourront faire lobjetde futurs travaux.

    Une ide damlioration serait une utilisation en mode dconnect. La conception dune base in-terne au tlphone grce a SQLite, permettant lutilisateur de se synchroniser avec le serveur etdenregistrer tous les POIs disponibles sur son mobile. Cette nouvelle fonctionnalit est pratiquepour le client. En effet, suivant la situation gographique de lutilisateur, la connexion 3G et un r-seau Wifi ne sont pas toujours disponibles.

    tant donne la motivation du groupe, ce projet de fin danne fut une trs bonne expriencehumaine et une dcouverte dun domaine en pleine expansion, le monde de la mobiquit.

  • Rfrences

    Voici une liste non exhaustive des rfrences des documentations utilises pour ltude et le d-veloppement de ce projet :

    Eclipse, http://eclipse.org Netbean, http://netbeans.org GlassFish v3, https://glassfish.dev.java.net/ Java Server Faces 2.0, http://java.sun.com/javaee/javaserverfaces/ MySQL,http://www.mysql.com/ JPA, http://java.sun.com/developer/technicalArticles/J2EE/jpa/ EclipseLink, http://www.eclipse.org/eclipselink/ API Facebook, http://code.google.com/p/fbconnect-android/ API Twitter, http://www.winterwell.com/software/jtwitter.php API Wikitude, http://www.wikitude.org/developers Twinlix, http://www.twinlinx.com/ Android, http://android.comhttp://developer.android.com/index.html

    HTC, http://www.htc.com/www/product/desire/overview.html

    RsumRemerciementsIntroductionI ObjectifsApplicationDescription de l'applicationClientBackend

    Exigences TechniquesAndroidTwinlinxWikitude

    II ConceptionArchitecture 3-tiersClientAndroidRseaux SociauxTwinlinxWikitude

    ServeurGlassFish v3JSF 2.0

    Base de donnesMySQL

    CommunicationServeur-BDDClient-Serveur

    III ImplmentationPersistanceLes entitesPattern DAOPattern Factory

    Interface d'administrationJava Server Faces ConfigurationConnexionLe composant de gestion des types

    Web ServicesApplication TouchViewNFCRealite Augmente

    ConclusionRfrences