Home
Interface adaptative sur la plateforme Android
Contents
1. Le client s adresse au Service Directory pour avoir la liste des services ainsi que l IP Port du DSContainer associ Ensuite il s adresse directement au container pour utiliser le service La communication avec l annuaire et les services se fait par des requ tes HTTP Les clients existant sont donc un simple navigateur dans lequel on tape les requ tes dans la barre d adresse ou bien notre application Android Les requ tes permettent d obtenir une description logique et une description human readable des services propos s Pour l instant les services proposent l utilisateur un ensemble de commandes avec un certain nombre d inputs et d outputs INSA de Lyon D partement T l communications Laboratoire LIRIS 8 PFE 2009 Interface Adaptative sous Google Android Voici un exemple communications possible entre un client et l environnement pervasif HTTP GET IP Port Service Directory datasource R ponse Liste des DataSource D or Ea disponibles Dette is A AMIE NON SE GNU C ma eA T TO 60 0 C o e A A a OS HTTP GET 134 214 107 71 8080 time desc R ponse Ihis _ Dat souree provides dogal time and 1s updated in real time Description d un DataSource ne CR 134 214 107 71 8080 time command R ponse Structure logique d une getTime withoutDisplay Display current time commande latente Our pue time AT string Current time HTTP GET 134 214 107 71 8080 time command
2. Laboratoire LIRIS 27 PFE 2009 Interface Adaptative sous Google Android type de bundle permettant de cr er une vue en la renvoyant l application Viewfactory a droid P y PP Au sens Android nom donn e aux View permettant une interaction avec Widget H 8 l utilisateur INSA de Lyon D partement T l communications Laboratoire LIRIS PFE 2009 Interface Adaptative sous Google Android 28 Annexe 1 Installation et utilisation d Apache Felix sur Android en utilisant le shell Il est possible de connecter un shell Android notre mulateur gr ce la commande a Une fois connect il suffit de se cr er un r pertoire de travail data felix par exemple dans lequel nous copieront les fichiers suivants bin felix jar gt archive jar du serveur Apache Felix conf config properties gt configuration standard de Felix lan ant les bundles ci dessous au d marrage du serveur mettre en annexe bundle org apache felix shell 1 0 2 jar gt Shell felix bundle org apache felix shell tui 1 0 2 jar Console pour le shell de felix Pour copier les fichiers on utilise la commande adb push ATTENTION Tous les jars utilis s sous android doivent tre adapt s pour pouvoir tourn s sur la DalvikVM Pour cela google fournit un utilitaire dx permettant de convertir les class au format dalvik LR SRE En EE ET E ER EC RER AFS EN NS EU UN EN SENTE ENS ENS ET SRE NIET SENS ER ERN NN ENT AN E T a EE NT DE D 5 D E
3. tre capable de d tecter les DataSource pr sents et d afficher une interface graphique permettant d utiliser les commandes que ces DataSource proposent Nous avons donc tout d abord un service OSGI ServiceWatcher charg de la d couverte des DataSource disponibles dans l environnement pervasif Un onglet de l interface graphique Params utilise alors ce service pour permettre l utilisateur de choisir les services qu il veut utiliser Lorsque l utilisateur choisit d utiliser un DataSource ServiceWatcher enregistre alors un nouvel l ment dans l environnement OSGI un service de Captorinterface qui aurait d s appeler en fait Datasourcelnterface qui permet de s adresser ce DataSource de l environnement pervasif D un autre cot un service OSGI BoxFactory est charg de g n rer une interface graphique partir de la description d un service Ainsi gr ce un ServiceTracker il guette l apparition d un service Captorinterface dans l environnement OSGI Puis il s adresse lui pour r cup rer la description des commandes propos es par le DataSource CaptorGui est l onglet d affichage des Box Pour que BoxFactory sache dans quelles View afficher les Box il est au pr alable initialis par CaptorGui Pour supprimer une Box si l utilisateur choisit de ne plus utiliser un DataSource nous utilisons encore une fonctionnalit d OSGI le ServiceListener Au moment de la cr atio
4. A PP CO D PP CO En POS E dx dex output chemin complet classes dex chemin complet JAR file jar cd chemin complet dap add JAR Pile Jar Class s dex ATTENTION Il est important de se mettre dans le dossier de travail pour utiliser la commande aapt add sinon classes dex ne sera pas ajout correctement l archive l arborescence compl te sera ins r e dans l archive et elle sera inutilisable pour la DalvikVM Ensuite nous pouvons lancer notre serveur apache felix adb shell gt pour lancer un shell cd data felix Len mm mm mm mm mm mm mm mm mm mm mmmmmm m system bin DalvikVM Xbootclasspath system framework core jar CL sSsSpath bin frelix Jar org apache felix marn Main Nous avons alors un serveur felix OSGI et la possibilit de charger d autres bundles INSA de Lyon D partement T l communications Laboratoire LIRIS 29 PFE 2009 Interface Adaptative sous Google Android
5. getTime R ponse time Tue Jui 23 14 53 32 CEST 2009 Execution d un commande En premier lieu l annuaire retourne le nom des services disponibles et l IP du DScontainer associ Ensuite il faut s adresser directement au DScontainer pour utiliser un service On peut obtenir une description du service ainsi que la structure de ses commandes Chaque input ou output a un nom un type et une description Dans notre projet le seul type utilis est la cha ne de caract re AT string Le contexte tant maintenant pos nous allons passer la partie r alisation INSA de Lyon D partement T l communications Laboratoire LIRIS 9 PFE 2009 Interface Adaptative sous Google Android 2 Travail R alis 2 1 Int gration d OSGI dans une application Google Android Pour notre projet nous avons choisi l impl mentation d OSGI Apache Felix A priori Android tant compatible avec les applications JAVA nous aurions pu choisir n importe quelle impl mentation Cependant quelques l g res adaptations sont tout de m me n cessaires en particulier pour le chargement dynamique des classes qui doit se faire partir de bytecode au format dex et non au format JAVA standard Nous avons trouv 2 impl mentations d OSGI compatible avec Android e ProSyst mBedded Server Android Edition C est une impl mentation bas e sur equinox Elle est livr e avec plusieurs outils graphiques permettant d administrer le serveur OSGI
6. l origine novice sur l architecture OSGI il nous est apparu n cessaire de faire le maximum d tapes manuellement afin de bien comprendre l architecture OSGI et l utilisation des bundles 3 2 Gestion de projet Redaction du rapport Pr paration de la soutenance 1j semaines Vac 3j semaines 5j semaines Figure 13 Diagramme de Gant de notre Projet Les technologies Android et OSGI tant totalement nouvelles pour nous il nous a fallu un certain temps de d couverte et de prise en main C est pourquoi nous avons commenc travailler r ellement sur notre application seulement fin avril pour d finir les grandes lignes de l architecture que nous souhaitions r aliser En mai nous avions plus de temps pour le PFE et avons donc pu commencer l impl mentation Il fut assez ardu de mettre en place un serveur Apache Felix permettant d utiliser les fonctions graphiques d Android Une fois cela r alis nous avons pu commencer d velopper notre application INSA de Lyon D partement T l communications Laboratoire LIRIS 24 PFE 2009 Interface Adaptative sous Google Android D s que le travail de l autre groupe f t suffisamment avanc nous avons proc d une mise en commun de mani re ce que notre application r ponde leur impl mentation d environnement pervasif Durant la phase de d veloppement nous faisions un point hebdomadaire d avancement avec notre tutrice ainsi qu avec l autre groupe sur la fin
7. lors de la mise en commun 3 3 Avis sur Android Android est r ellement un syst me d exploitation d avenir pour les utilisateurs comme pour les d veloppeurs Le syst me est bien pens et il est facile et rapide de d velopper pour cette plateforme notamment gr ce la possibilit d impl menter la partie graphique dans un langage XML Cependant les choses se g tent lorsque notre application sort des chantiers battus La cr ation graphique est quasi d pendante d une description en XML avant la compilation Il est vrai que lors de nos premiers pas sur la plateforme nous avons trouv ce syst me simple et puissant Mais afin de d velopper une interface totalement adaptative nous avons dus faire l impasse sur l utilisation du XML Cela fut extr mement contraignant tout d abord d un point de vue r alisation puisque toutes les options ne sont pas accessibles en java mais aussi d un point de vue d veloppement tous les exemples et tutoriels utilises le XML Nous avons pass du temps chercher la fonction java qui fait peu pr s la m me chose que le XML De plus Android est encore jeune et connait donc quelques probl mes de jeunesse Certaines fonctions ne sont pas impl ment es et pas mal de limitations que nous esp rons temporaire arbre des vues limit s impossibilit de supprimer un seul onglet Si bien que l on se demande parfois s il n est pas trop t t pour coder sur Android Cep
8. nos coll gues l ensemble des fonctions peuvent tre utilis es telles que Ouverture et fermeture d une porte repr sent e par un l go Utilisation des lumi res du composant sunspot R cup ration de valeurs temp rature luminosit puissance du signal Le but recherch a t atteint puisque nos coll gues pouvaient d velopper de nouveaux services qui taient directement utilisable par notre client sans modification de celui ci INSA de Lyon D partement T l communications Laboratoire LIRIS 23 PFE 2009 Interface Adaptative sous Google Android 3 Retour d exp rience 3 1 Environnement de travail Android met disposition un environnement de travail performant pour le d veloppement d applications Il s agit d un plugin pour Eclipse permettant de packager facilement une application Android et de connecter Eclipse l mulateur pour uploader l application et afficher sur la console debug les sorties texte Cette console debug devient rapidement indispensable Il est galement possible d ex cuter l application pas pas avec des points d arr t pour d bugger une application Pour travailler 2 nous avons utilis un SVN sans lequel nous n aurions pu avancer simultan ment sur le projet Pour packager nos bundles OSGI nous avons pr f r utiliser de simple scripts bat plut t qu on outil comme Maven qui nous a sembl bien trop complexe pour notre projet De plus tant
9. Cependant dans l tat elle ne permet pas aux bundles de point d entr e sur l interface graphique d Android De plus n ayant pas le code source de cette impl mentation nous n avons pas pu r aliser les modifications n cessaires e Apache Felix Cette impl mentation est compatible Android depuis la version 1 0 3 De plus plusieurs sources nous ont permis r aliser quelques exemples de bundles r alisant un affichage via l API graphique propos par Android Bien que Felix soit compatible avec android il est en fait assez compliqu de faire tourner un serveur Felix sur l mulateur et de l utiliser via le shell d Android cf annexe 1 Malheureusement ce mode ne permet aucun affichage sur le t l phone La plus grosse difficult est de fusionner une application Android avec une instance d Apache Felix de mani re pouvoir r aliser une application graphique sur une architecture OSGI Il est en effet n cessaire de partager la fois le contexte OSGI BundleContext et le contexte Android Activity Dans nos recherches nous avons trouv une bauche de solution relativement vieille les 2 technologies Android et Felix voluent tr s vite dont nous nous sommes inspir s pour notre application Malheureusement celle ci utilisait une version b ta de l mulateur Android et certaines fonctions avaient disparues Nous avons donc choisi de diss quer les sources afin de comprendre comment l application tait capable d embarquer Apach
10. L Par exemple la notion de weight permet aux vues d occuper un espace proportionnel leur poids et donc de s adapter la taille de l cran L utilisation de telles fonctionnalit s aurait pu nous permettre de simplifier la complexit de l arbre de View tout en offrant une meilleure disposition sur l cran l impl mentation de l interface graphique directement dans le code Java complexifie le code d une part et ne permet pas d utiliser pleinement les possibilit s d Android pour la pr sentation l cran 2 5 Mode d emploi Tests et r sultats Pour utiliser notre application il faut installer l application Android Felix4Android sur l mulateur Cette application comprend simplement un affichage vide et lance un serveur Apache Felix qui son tour lance dans l ordre les bundles n cessaires l application L ensemble des bundles d crits au chapitre 2 2 1 doivent tre copi s sur l mulateur dans le dossier data felix2 bundles Le chemin de ce dossier peut tre chang en modifiant la configuration du serveur Felix dans l application Felix4Android Il ne faut pas oublier de changer les droits du dossier data dalvik cache chmod 777 car felix a besoin d utiliser ce cache pour fonctionner correctement Ensuite on peut lancer l application en utilisant l interface du t l phone et les 2 onglets se chargent Notre client t test avec succ s avec tous les services d velopp s par
11. Lyon D partement T l communications Laboratoire LIRIS 7 PFE 2009 Interface Adaptative sous Google Android Les deux plates formes donnent des solutions tr s diff rentes pour la m me question Le mod le bas sur l isolement Processus dans Android est un avantage dans la gestion des ressources mais la difficult du partage de classes limite s rieusement l ergonomie de cette solution Un point fort d OSGI est qu il peut tre utilis sur de nombreuses plateformes dont Google Android Nous avons donc choisi d utiliser OSGI pour le d veloppement d une interface adaptative 1 4 Pr sentation de l environnement pervasif Data Sources Container Service Directory Data Sources Container Figure 4 Architecture du composant services de l environnement pervasif Le sujet de notre PFE tait initialement d veloppement d une interface adaptative sous Google Android Apr s avoir d couvert la plateforme Android et l environnement OSGI il nous fallait trouver quelle application nous souhaitions concr tement r aliser Nous avons alors d cid de nous appuyer sur le projet d un autre groupe de PFE travaillant dans notre salle sur un composant de gestion de service pour un environnement pervasif Comme l on peut le voir sur le sch ma ci contre leur architecture comporte un annuaire de services Service Directory et plusieurs containers contenant 1 ou plusieurs services DataSources
12. Projet de Fin d tudes Interface adaptative sur la plateforme Android Rapport Final Durey Guerric Lebert Val rian Tutrice Fr d riqe Laforest Ai Li an22012 Sommaire L Anod S LS PRET E E E 4 1 1 Description du proOjet ssessssesesrsesersesesreserrrsererreserrrserrrsesrrsrseseorrsesrrseseeseseeresesreresrerrseerene 4 1 2 Pr sentation d Android sersriisisicrsrririririssrinrsn cristias saistot em ep me 4 1 2 1 A CR ES TANGOIO sessa aonn EEEE EE 4 1 2 2 intertaces graphiques sesrsiterirerersritene rererere an E RENEE ETN EAn IONES 6 1 3 Pourquoi utiliser OSGI sur Android seeeessssereeresseresresenresresseresresresrorenreseeseerrereseesreresreseesees 6 1 3 1 Procenti ona G E E EE 6 1 3 2 Comparaison OSGI Android eseesesessessrserrresrrrerrrsrrersrtrerrirsrtrsrrrsrteesriesrrresrersrreeerereens 7 1 4 Pr sentation de l environnement pervasif iii 8 2 Travail ReAlISe 8 de d ee enussnsnes 10 2 1 Int gration d OSGI dans une application Google Android 10 2 2 Explication de notre solution ie senesessesssenesessenssnns 13 2 2 1 LISTE des CSSS a tete osier ten miettes 13 2 2 2 100 01 O PR AR 14 2 5 Adaptation A INL TIACR i 18 2enressacsre ace saneecaue casa era ete sane semaine E de else doses dar dececece 18 2 3 1 Adaptation a lenyironne ment an te ne 18 2 3 2 ACID Ed ON PCT 19 2 4 Probl mes rencontr s is iiiiisiinsesrsesnseseseeeesesnnns 21 2 4 1 DECH VIC
13. W T BR a aies end niet etat eee A D 21 2 4 2 U isaionde API BR OIQU s 2 on ones no nine 22 25 Mooca MOLTE LS ECTS ARS a ae NANNE 23 3 Retour d exp rience s ssssessssecsssssesssseossssososeoesssseososeosossoeososeseosossseossoeossssossssoesseseoseseossseseoee 24 31 Enyiromnementde TAVAIE Sven ve vers til vebsvebtvetsn vole vels E Er a Eea inaeonte 24 2 EONA DOI A EEEE EE E T 24 Jo AVS SUAN Se date dep e ns sb te a meta een 25 3 4 Possibilit s d am lioration sise 26 LOX OUO 27 Annexe 1 Installation et utilisation d Apache Felix sur Android en utilisant le shell 29 INSA de Lyon D partement T l communications Laboratoire LIRIS 2 PFE 2009 Interface Adaptative sous Google Android Introduction Nous allons vous pr senter dans ce rapport notre travail effectu au sein du laboratoire Liris de mars juin 2009 Ce projet s est d roul sous la tutelle de Mme Fr d rique Laforest maitre de conf rences de l Insa de Lyon Il a t effectu dans le cadre de notre Projet de Fin d Etude projet technique en autonomie quasi compl te L objet de ce projet consiste d velopper une interface adaptative sur Google Android Cela permettra la fois au laboratoire d obtenir une interface adaptative modulaire facilement r utilisable mais aussi d valuer le potentiel de la plateforme Android Ce projet s inscrit dans la continuit des tudes du laboratoire et plus particuli rement de Mme Lafores
14. cation de notre solution 2 2 1 Liste des classes Classes ApacheFelix CaptorGui Box Activator CaptorGuiViewFactory BoxFactory SimpleHttpClient BoxFactoryActivtor BoxDestroyer CommandProcesser InfoButtonListener Interfaces ViewFactory BoxFactoryService SimpleHttpClientinterface Maa a ca E Imports Classes Activator Activator GuiParam Attribute Servicelnfo GuiParamViewFactory Command ServiceWatcher Captorinterface Captorinferfacelnterface ServiceWatcherinterface OSGI httpUtils ES TES a Imports Les imports du framework OSGI et Android ne sont pas d taill s ici BoxFactory I CaptorGUI x Onglet 1 l y s I I i shit PRE PR SEEE Captor i Captor Interface 1 Interface 2 GUISettings Onglet 2 Main GUI S paration 2 onglets ServiceWatcher Service Directory Figure 6 Interaction des composants de l application INSA de Lyon D partement T l communications Laboratoire LIRIS 13 PFE 2009 Interface Adaptative sous Google Android 2 2 2 Explication Pour viter toutes confusions entre la notion de service au sens OSGI et celle de service de l environnement pervasif nous utiliserons respectivement l appellation service OSGI et DataSource Pour l instant nous n impl mentons que la partie commandes de l environnement pervasif car les DataSource ne disposent pour l instant pas de la notion de flux Notre application doit donc
15. ce et des fonctions de manipulation de son affichage Service OSGI fabricant des Box Composant d une application OSGI Bundle permettant de cr er une interface en fonction des param tres logiques renvoy s par un DataSource Dans l environnement pervasif les DataSource proposent plusieurs commandes l utilisateur Nom de la machine virtuelle sp cifique utilis e dans Android Service de l environnement pervasif Il peut s agir d un capteur d une fonction Serveur contenant un ou plusieurs DataSource Widget Android Boite de texte ditable Param tre d entr d une commande Mod le de composant au dessus d OSGI plus flexible que celui ci IPOJO injected Plain Old Java Object ViewGroup servant a disposer des View On a entre autre des LinearLayout horizontaux et verticaux TableLayout Param tre de sortie d une commande Au sens OSGI un service est une instance de classe qui peut tre retrouv e et utilis e par les autres composants gr ce aux fonctions OSGI Annuaire de service dans l environnement pervasif Interface OSGI I permet d effectuer une action en cas de modification d un service cr ation suppression modification Objet permettant de traquer l apparition de services dans l environnement OSGI TextView Widget Android Boite de texte non ditable iew Base de tous les l ments graphiques d Android Layout et widgets extend la classe View INSA de Lyon D partement T l communications
16. des e Multi services mode L utilisateur choisit les services qu il souhaite utiliser et les Box correspondantes sont affich s dans un second onglet D M 7 58 AM 1 48 PM Apache Felix R Params ShellOther set a Input here set b input here 134 214 107 71 8081 set c input here bigFunction Info sum Waiting for command result multiplication Waiting for command result max Waiting for command result Figure 10 Onglet de choix des datasources Figure 9 Onglet d utilisation des datasources INSA de Lyon D partement T l communications Laboratoire LIRIS 19 PFE 2009 Interface Adaptative sous Google Android e Mono service mode L utilisateur dispose d un menu d roulant pour choisir l unique service qu il souhaite utiliser dans le m me onglet Ge 12 28 PM Apache Felix 134 214 107 71 8081 set a input here set p input here set c input here bigFunction Info sum Waiting for command result Figure 11 Vue en Single service mode L utilisateur change de mode en cliquant sur le bouton switchview Pour ce faire il suffit d une simple r initialisation du BoxFactory BoxFactory dispose d une m thode initialize pour lui dire dans quelle View afficher les Box Nous l initialisation avec une View sur l onglet Params puis rendons invisible les onglets Par la suite nous avons gal
17. e Felix Apr s confrontation avec un autre bout de code trouv sur le net et utilisant IPOJO nous avons finalement compris que le serveur OSGI tait configur avec un Filelnstall bundle qui charge tous les bundles dans un r pertoire donn Nous avons donc tout d abord vid celui ci afin de v rifier que le simple fait de lancer cette version de Felix sur Android tait possible et que le programme Android n utilisait que des fonctions support es par notre version de l mulateur Ce fut heureusement le cas et bien que notre programme Android n affichait alors qu un cran noir il ne plantait pas Nous nous sommes alors bas e sur cette version et configuration d apache Felix les fichiers seront donn dans notre archive Afin de s assurer du bon d roulement de l op ration et de tenter quelques chargements de bundles nous avons commenc par chercher mettre en place un shell en utilisant les bundles pr sents sur le site de Felix savoir le remote shell Cependant cette tentative fut un chec car louverture d une session telnet n a pas fonctionn aussi facilement que pr vu Nous avons donc d cid de d velopper notre propre shell graphique Cela nous pris norm ment de temps car nous ne INSA de Lyon D partement T l communications Laboratoire LIRIS 10 PFE 2009 Interface Adaptative sous Google Android savions pas quels taient les causes de nos erreurs faute de shell Pour cela no
18. ement modifi BoxFactory pour que selon le mode il n affiche plus en titre le nom du service le nom est d j affich dans le menu d roulant Le but de cette modification est de simplifier l arbre des View on r duit d un niveau et d viter ainsi un plantage d Android INSA de Lyon D partement T l communications Laboratoire LIRIS 20 PFE 2009 Interface Adaptative sous Google Android 2 4 Probl mes rencontr s 2 4 1 Deep View Tree Quand nous avons cherch optimiser la pr sentation de l application pour l cran du terminal mobile nous avons t confront s des erreurs StackOverflow Exception qui apparaissaient de mani re assez al atoire En recherchant sur internet nous avons d couvert qu il s agit d un probl me de Google Android d j connu Android supporte mal les arbres de Views trop grand les probl mes apparaissant au del de 13 niveaux Deep View Tree Nous avons alors essay de simplifier au maximum l arbre Cependant l utilisation d onglet avec un titre d application n cessite d j la cr ation d une hi rarchie 6 niveaux De m me si l on veut disposer certain l ments horizontalement et d autres verticalement il faut imbriquer un layout conteneur horizontal dans un layout vertical soit 3 niveaux en comptant les widgets Il faut encore ajouter un layout pour avoir une barre de d filement scrolling La limite des 13 vues est d s lors rapidement atte
19. endant malgr ces quelques d fauts nous avons tout de m me r ussi d velopper une interface adaptative fonctionnant sur un serveur OSGI port sur Android C est bien la preuve que L OS est hautement flexible Bien qu Apache Felix n ait la base pas t con u pour Android nous avons prouv que ces 2 technologie restent compatible entre elles au prix de quelques tours de passe passe Durant notre projet ces 2 technologies ont volu nous avons commenc avec Felix 1 4 et Android 1 1 aujourd hui Felix est la version 1 8 et Android 1 5 II semble que la compatibilit se soit am lior e avec ces derni res versions De plus la communaut des d veloppeurs commence s int ress au mariage Felix Android Ezdroid http www ezdroid com est un projet r cent utilisant Apache Felix et Android et peut tre une source d inspiration pour l avenir de ce couple gt http blog luminis nl roller luminis entry osgi on google android using lire UPDATE en haut de la page INSA de Lyon D partement T l communications Laboratoire LIRIS 25 PFE 2009 Interface Adaptative sous Google Android 3 4 Possibilit s d am lioration Notre application en l tat est fonctionnelle et permet d utiliser pleinement les services d velopp s par nos coll gues Nous avons pens quelques am liorations possibles que nous n avons pas pu d velopper faute de temps Au niveau de la pr sentation il serait in
20. et des TableLayout ceci ne r sout pas notre probl me Les FrameLayout on t con us pour afficher des l ments un par un alors que les TableLayout reviennent utiliser une vue pour la table plus une vue pour chaque colonnes 2 niveaux dans le View tree Cela r duit effectivement le nombre de vue totales mais pas la profondeur de l arbre 2 4 2 Utilisation de l API graphique Le probl me pr c dent est li une autre difficult que nous avons rencontr e Android permet d impl menter l interface graphique de 2 mani res cf chapitre 1 2 2 e L arbre peut tre d crit selon un langage XML qui est converti la compilation du projet en une ressource View L interface peut alors tre charg e avec la m thode setContentView e Eninstanciant directement les l ments dans le code de l application et en manipulant leurs m thodes pour aboutir au r sultat voulu comme Swing en java INSA de Lyon D partement T l communications Laboratoire LIRIS 22 PFE 2009 Interface Adaptative sous Google Android L utilisation du fichier XML permet de s parer la partie pr sentation de la partie application Cependant elle n est pas adapt e notre cas car la pr sentation doit tre d finie avant la compilation et ne peut donc pas s adapter l environnement Nous avons donc utilis la seconde m thode seulement certaines possibilit s ne sont utilisables qu avec l utilisation du langage XM
21. icher la sortie des outputs dans leur View respectives INSA de Lyon D partement T l communications Laboratoire LIRIS 17 PFE 2009 Interface Adaptative sous Google Android 2 3 Adaptation d interface 2 3 1 Adaptation l environnement L application sert d interm diaire entre l environnement pervasif et l utilisateur Cet environnement volue dans le temps et l application doit s adapter automatiquement aux services disponible l instant T Ces services sont l origine inconnus c est pourquoi ils doivent mettre disposition une description compl te pour que l application puisse g n rer une interface compr hensible par l utilisateur Le module central pour l adaptation est le BoxFatory A partir de la structure et description du service il dispose sur l cran les l ments graphiques n cessaires son utilisation La version actuelle de l environnement pervasif utilise uniquement des inputs et outputs de type String et les l ments graphiques n cessaires sont donc principalement des zones de texte ditables et non ditables pour les inputs outputs Apache Felix Params a set a input here Scrolling set b input here set c input here bigFunction Commande 1 Info sum Walting for command result multiplication Waiting for command result max Waiting for command result Commande 2 Figure 7 Interface utilisateur du service math Bien que nous n utilisions ce jou
22. int grerait dans son interface Ainsi ce n est plus le client qui g n re l interface partir de la description du DataSource mais le DataSource qui embarque son interface L int r t ici d OSGI est de pouvoir charger l interface du service sans devoir red marrer l application Les services ne proposent l heure actuelle que des commandes c est dire une fonction qui partir de x inputs renvoie y outputs Il reste impl menter aussi bien cot client que cot environnement l environnement une notion de flux Par exemple au lieu de devoir appeler la commande getTime pour recevoir l heure un instant donn le client devrait pouvoir s abonner un flux Time qui se met jour toutes les secondes par exemple Enfin une am lioration int ressante aussi bien du cot de l environnement pervasif que du client serait l utilisation de variables de tous types et pas seulement string comme dans notre impl mentation afin de proposer l utilisateur une interface plus ergonomique INSA de Lyon D partement T l communications Laboratoire LIRIS 26 PFE 2009 Interface Adaptative sous Google Android Activity Box BoxFactory Bundle Captorinterface Commande DalvikVM Datasource DS container EditText Input IPOJO Layout Output Service Service Directory ServiceListener ServiceTracker Lexique Classe principale d une application Android Objet comportant la vue d un DataSour
23. inte et nous n avons pas pu travailler sur la pr sentation aussi facilement que nous l aurions souhait Un outil fourni avec le kit de d veloppement permet d afficher en tant r el la hi rarchie des vues Tr a t g p TabWidget y 0 4365a6a8 en 5 EH iditabs i Gi SO x o LE Le La pe 4 DE y aa Pa A baa RelativeLayout RelativeLayout 04365028 1 436b5aa0 NO_ID NO_ID TextView ImageView ImageView TextView 1 43650ae0 0 43650880 0 436b5fe0 1 436b61f8 idAitle idicon idicon idAitle Figure 12 Arbre des Views Cette capture issue de notre application montre quel point l arbre se complexifie rapidement Voila ce que l on peut trouver sur le blog officiel de google http android developers blogspot com 2009 04 future proofing your apps html INSA de Lyon D partement T l communications Laboratoire LIRIS 21 PFE 2009 Interface Adaptative sous Google Android Technique to Avoid 3 Going Overboard with Layouts Due to changes in the View rendering infrastructure unreasonably deep more than 10 or so or broad more than 30 total View hierarchies in layouts are now likely to cause crashes This was always a risk for excessively complex layouts but you can think of Android 1 5 as being better than 1 1 at exposing this problem Most developers won t need to worry about this but if your app has very complicated layouts you ll need to put it on a diet You can simplify your layouts u
24. lis dans un certain nombre d environnements Java standards Il est int ressant de noter que s il est converti en Ex cutable Dalvik OSGi peut tre ex cut sur Android La diff rence cl entre les 2 plateformes provient du fait que toutes les applications Android sont ex cut es dans des machines virtuelles s par es une instance de VM par application alors qu OSGI ex cute toutes les applications dans la m me VM Ex cuter les applications dans des VM s par s c est dire des processus d OS s par s a l avantage de procurer une gestion de ressources plus rigoureuse Cependant ce mod le exige plus de m moire et le partage de services entre les composants est plus complexe et plus couteux Avec OSGI le partage de ressources entre les diff rents composants bundle se fait par une simple d claration dans le fichier manifest Durant l ex cution tous les bundles partagent le m me contexte classe BundleContext et peuvent acc der aux ressources auxquelles ils ont droit OSGi Existance of CN2201 VM Technology Dahk Java WM L TT d Poo e Clasdosder Process Isolation Isolation Versioning ET p Application Standard 5 lt 1 O Model Aag D Z Inter process PORT ces ou communication Sharing Existanceof open Component Model Exstance of Service Model 3 Figure 3 Comparaison d Android et d OSGI http picisblog blogspot com 2008 02 introduction google and open handset html INSA de
25. n d une Box nous disposons alors d une r f rence sur la View correspondante Nous cr ons alors un ServicelListener qui la disparition du service Captorinterface correspondant d truira la View Il suffit alors de faire un unregister m thode OSGI pour supprimer un service pour que la Box associ e au Captorinterface disparaisse Ci dessous un diagramme de fonctionnement de l application INSA de Lyon D partement T l communications Laboratoire LIRIS 14 PFE 2009 Interface Adaptative sous Google Android ServiceWatcher httpUtils Captorinterface CaptorGui BoxFactory Cr er un Captorlnterface R cup re les Com DS Contai aa propri t s du service INSA de Lyon D partement T l communications Laboratoire LIRIS PFE 2009 Interface Adaptative sous Google Android Initialise Clique Update Update Synchro avec Service Directory Liste Service service Directory dispo Clique afficher service afficher service D tecte un nouveau Captorlnterface R cup re les propri t s du service et de ses commandes Affichage ServiceWatcher httpUtils Captorinterface CaptorGui BoxFactory Clique d safficher service S d safficher service Supprime le Captorinterface ister D tecte unregister Captorlnterface D s hage INSA de Lyon D partement T l communications Laboratoire LIRIS 6 PFE 2009 Interface Adaptative sous Google Android Pour utiliser les commandes nous avo
26. ndroid sont construites en utilisant les classes View et Viewgroup La classe View sert de base un ensemble de sous classes appel es Widget qui permettent l interface avec l utilisateur boutons zone de texte La classe ViewGroup sert de base un ensemble de sous classes appel es layout qui servent organiser les View dans l espace Ainsi une interface graphique peut tre repr sent e sous forme d un arbre de Views ViewGrous ViewGroup Figure 2 Hi rarchie des vues Pour faire appara tre cette interface graphique la classe principale Activity doit appeler la m thode setContentView en passant en r f rence le noeud racine Il y a 2 m thodes pour impl menter une interface graphique dans l API Android e L arbre peut tre d crit selon un langage XML qui est converti la compilation du projet en une ressource View instanciable depuis le programme principal L interface peut alors tre charg e avec la m thode setContentView e On peut instancier directement les l ments dans le code de l application et en manipulant leurs m thodes pour aboutir au r sultat voulu L avantage de d crire l interface graphique en XML est que cela permet de mieux s parer la partie pr sentation de la partie ex cution Cependant la description XML doit tre faite avant la compilation du projet C est pourquoi nous utiliserons la seconde m thode afin de charger dynamiquement des morceaux d interface graphique duran
27. ns cr une classe Command ainsi qu une classe Attribute Un Attribute repr sente un param tre d entr e ou de sortie d une commande Un attribut Un nom Un type Une valeur Une View android associ e Une description Les m thodes pour la manipulation de ces variables Une Command poss de un Vector d Attributs d entr e un Vector d attributs de sortie ainsi que des fonctions de manipulation Ces objets sont cr s suite au parsing de la r ponse la requ te HTTP lt service gt command par Captorlnterface BoxFactory D tection d un service Command Captorinterface Captorinterface GetCommandList Requ te HTTP Retour d un Vector de Command Cr ation des GUI pour chaque commande Association de View aux attributs des commandes R cup ration des L utili utilisateur clique sur le valeurs des inputs dans NR bouton pour ex cuter Ex cution de la les Views associ s une commande commande Mise jour des outputs dans les Views associ es Quand BoxFactory demande la description d une commande Captorinterface celui ci retourne un objet de classe Command BoxFactory g n re donc l interface en se basant sur le nom des attributs leur type et au moment de la cr ation de l interface il leur associe leur View respective TextView et EditText pour les strings Ainsi pour ex cuter la commande on peut r cup rer les valeurs des inputs et aff
28. ory sur l interface graphique dispose de son onglet qui lui est propre le serveur Felix doit tre lanc dans une TabActivity et non simple Activity Nous enregistrons alors les services ViewFactory avec une propri t TabName nomDuTab Ainsi nous utilisons cette propri t pour que le ServiceTracker cr e un Tab pour chaque ViewFactory 4 PRE se aps P Un service tracker sert traquer l apparition la disparition ou la modification des services dans l environnement OSGI et r agir en fonction INSA de Lyon D partement T l communications Laboratoire LIRIS 11 PFE 2009 Interface Adaptative sous Google Android Les bundles peuvent donc d sormais cr er leur propres Views en enregistrant un service ViewFactory Comme dit pr c demment le premier bundle que nous avons r alis est une interface graphique pour le shell de Felix org apache felix shell 1 0 0 jar en raison de la version de notre Felix Nous disposons alors d un environnement Android OSGl pleinement fonctionnel Android Activity Apache Felix Appel de Create Service Tracker Et partage du contexte Android Filtre sur View create Activity ViewFactory Interface ViewFactory R cup ration de la View afficher Enregistrement d un service ViewFatory Bundle x INSA de Lyon D partement T l communications Laboratoire LIRIS 12 PFE 2009 Interface Adaptative sous Google Android 2 2 Expli
29. quoi il nous semble pertinent de travailler sur cette plateforme Les applications Android sont d velopp es en JAVA Android dispose d un set de librairies qui inclut la plupart des fonctionnalit s pr sentes dans JAVA ainsi que des fonctionnalit s suppl mentaires pour la gestion de l interface graphique par exemple Cependant les applications de s ex cutent pas dans la machine virtuelle java sun mais dans la Dalvik VM Il s agit d une machine virtuelle d velopp e par Google pour Android et adapt e aux syst mes restreints en m moire et puissance de processeurs Les classes java doivent tre converties au pr alable au format dex gr ce l outil dx Enfin une autre particularit importance est que chaque application s ex cute dans sa propre instance de Dalvik VM En effet la Dalvik VM est con ue pour que le syst me puisse ex cuter en m me temps plusieurs instances de VM C est un avantage pour la stabilit du syst me mais complique le partage des ressources et des classes entre les applications INSA de Lyon D partement T l communications Laboratoire LIRIS 4 PFE 2009 Interface Adaptative sous Google Android APPLICATIONS APPLICATION FRAMEWORK ackage Manager Manager Manager Manager Manager LIBRARIES ANDROID RUNTIME Media Framework Surface Manager OpenGL ES FreeType WebKit LINUX KERNEL Flash Memory Binder IPC Driver Driver Display RSS Camera Driver Audio Power Keypad Drive
30. r WiFi Driver P Drivers Management Les applications Android sont compos es de 4 types de composants e Activities Une Activity repr sente un cran de l application Une application peut avoir une ou plusieurs activities par exemple pour une application de messagerie on pourrait avoir une Activity pour la liste des contacts et une autre pour l diteur de texte Chaque Activity est impl ment e sous la forme d une classe qui h rite de la classe Activity e Services Les services n ont pas d interface graphique et tournent en t che de fond Il est possible de s inscrire un service et de communiquer avec celui ci en utilisant l API Android e Broadcast receivers Il se contente d couter et de r agir aux annonces broadcast par exemple changement de fuseau horaire appel entrant e Content providers permet de partager une partie des donn es d une application avec d autres applications En r sum Android permet de faire du partage de composant entre applications ainsi que de g rer leur cycle de vie sans toutefois permettre la m me souplesse qu OSGI comme nous le verrons dans la partie suivante i http developer android com guide basics what is android html http developer android com guide topics fundamentals html INSA de Lyon D partement T l communications Laboratoire LIRIS 5 PFE 2009 Interface Adaptative sous Google Android 1 2 2 Interfaces graphiques Les Interfaces graphiques dans A
31. r que des attributs de type string la classe Attribute dispose d ors et d j du champ type et il serait facilement envisageable d utiliser d autres widgets selon les types curseur glissant pour les float par exemple INSA de Lyon D partement T l communications Laboratoire LIRIS 18 PFE 2009 Interface Adaptative sous Google Android Pour que l interface g n r e soit compr hensible par l utilisateur il faut que les noms des commandes et des param tres des services soit parlant Une description plus compl te est accessible l utilisateur en cliquant sur un l ment Nous utilisons dans ce cas le widget Toast de l API Android qui est parfaitement adapt e cet usage set c input here bigFunction Get 3 integers a b and c Return 3 values atb c a b c max a b c Toast at 1418 1UITIONCatION Wa 7 OT CO max Waiting for command result Figure 8 Toast 2 3 2 Adaptation l utilisateur Le module BoxFactory tant un service OSGI il est envisageable de charger un BoxFactory diff rent en fonction des pr f rences de l utilisateur tailles de l cran option d affichage Cependant comme nous le verrons dans le paragraphe suivant nous avons rencontr des difficult s r aliser des interfaces complexes car Android g re mal une hi rarchie de View trop tendue Nous avons donc envisag un cas plus simple l utilisateur peut choisir entre 2 mo
32. sing the more advanced layout classes like FrameLayout and TableLayout eanan M 7 58am Apache Felix ns Params ns set a Input here set b input here set c input here bigFunction Info sum Waiting for command result multiplication Waiting for command result max Waiting for command result set a input here Comme nous pouvons le voir ces restrictions nous limitent norm ment dans notre d veloppement Notre interface tant adaptative il est en plus beaucoup plus simple d utiliser de nombreux layout afin de pouvoir hi rarchiser notre programmation facilement Cela nous a contraints utiliser un affichage des plus basiques La limite des 13 vues tant atteintes nous somme par exemple oblig s de disposer les arguments et les r sultats les uns en dessous des autres La superbe fonction math en est le plus bel exemple impossible d afficher bigFonction et Info c te c te et il en va de m me pour les param tres L cran tant d j petit nous sommes oblig s de g cher de la place et d utiliser un scrolling N tant bien sur pas au courant de cette limitation lors de notre premier design d interface nous avons choisis d utiliser des onglets Cependant si l on souhaite r ellement construire une interface ergonomique nous pensons qu il faudrait repenser la pr sentation des diff rentes fonctions et se passer d onglet Pour ce qui est des FrameLayout
33. t puisque des travaux d adaptation d interface avait d j taient r alis s et de nombreux travaux sur les environnements pervasifs sont en cours INSA de Lyon D partement T l communications Laboratoire LIRIS PFE 2009 Interface Adaptative sous Google Android 1 Android amp OSGI 1 1 Description du projet L application r aliser est une application tournant sur Google Android et servant d interface graphique un environnement pervasif L impl mentation de cet environnement pervasif est le sujet de PFE d un autre groupe de 5TC Il s agit d un environnement de capteurs et de services adressables via un protocole bas sur HTTP Les sp cifications techniques de ce protocole seront vues plus en d tail dans le chapitre 1 4 L application doit alors tre adaptable l environnement sans connaissance pr alable des services qui seront disponibles Elle doit donc tre capable de proposer un GUI sur mesure et adaptable en temps r el 1 2 Pr sentation d Android 1 2 1 Architecture d Android Android est un syst me d exploitation Open Source pour terminaux mobiles con u par Android une startup rachet e par Google en juillet 2005 Cet OS se diff rencie principalement de ses concurrents par le fait qu il est ouvert Le mod le conomique de Google semble tr s pertinent l adoption d Android par les fabricants sera probablement rapide du fait de la gratuit d utilisation pour le constructeur Voil pour
34. t ressant d avoir une plus grande adaptabilit aux pr f rences utilisateurs Comme nous l avons dit pr c demment nous avons t un peu bloqu s dans cette direction car Android ne peut pas pour l instant supporter des arbres de Views trop grands Il faudrait optimiser au maximum l utilisation des views et peut tre s par e l application en plusieurs Activity afin de pouvoir pr senter l interface utilisateur de mani re plus complexe et compacte Notre service charg de la d couverte des DataSource s actualise lorsque l utilisateur clique sur le bouton update Il serait par la suite int ressant que la liste s actualise automatiquement soit par un syst me d abonnement soit en envoyant une requ te intervalles de temps r gulier L utilisateur pourrait alors tre averti de l arriv de nouveaux services dans l environnement ou bien que le service qu il utilise n est plus port Nous avons choisi une architecture OSGI car cela permet de charger des classes chaud et nous semblait int ressant pour la conception d une interface adaptative Nous avons alors construit notre application autour d un serveur Apache Felix dont la compatibilit Android est d sormais prouv e Nous pouvons alors envisager une utilisation plus pouss e des possibilit s d OSGI Par exemple un DataSource complexe et n cessitant une interface plus sp cifique pourrait mettre disposition un bundle OSGI que le client t l chargerait et
35. t l ex cution 1 3 Pourquoi utiliser OSGI sur Android 1 3 1 Pr sentation d OSGI L OSGi est une organisation fond e en mars 1999 L Alliance et ses membres ont sp cifi une plate forme de services bas e sur le langage Java qui peut tre g r e de mani re distante Le c ur de cette sp cification est un framework cadriciel qui d finit un mod le de gestion de cycle de vie d une application un r f rentiel registry de services et un environnement d ex cution INSA de Lyon D partement T l communications Laboratoire LIRIS 6 PFE 2009 Interface Adaptative sous Google Android OSGI introduit une architecture orient e service permettant une plus grande ind pendance entre les diff rents composants d un programme Ainsi on r pond aux probl matiques de r utilisabilit d interop rabilit et de r duction de couplage On parle ainsi de fournisseurs de services et de consommateurs de services les fournisseurs mettant disposition des composants Chaque composant est donc facilement modifiable permettant un d bug et des mises jour sans difficult s OSGI tant une sp cification il en existe plusieurs impl mentations telles que Apache Felix Equinox ou Knopflerfish 1 3 2 Comparaison OSGl Android OSGi et Android d finissent une plate forme de d veloppement orient e composants et fournissent une mise en uvre de l architecture orient e services au sein de l appareil mobile OSGi peut tre uti
36. us avons repris la proc dure trouv dans les diff rents exemples collect s jusqu ici afin d avancer t tons jusqu r ussir cr er un bundle affichant une fen tre puis tant capable d offrir un GUI pour le shell Felix Eb BME 1 22PM Apache Felix Execute A nsrha Caliw Chall i war 1 ALACHI E FERA 5 CEE D j 1 AndroidShell DVUTHS 1 0 0 VIRE avtoriInterface 1 0 0 v 1 0 0 captorGul 1 0 0 ServiceWatcher 1 0 0 GUIParam 1 0 0 Figure 5 R sultat d une commande OSGI sur notre shell A partir de l le projet a pu r ellement avancer Nous avions compris comment interagir avec la partie graphique et tions capable de charger et d marrer des bundles chaud Afin d avoir en parall le le shell et notre projet nous avons modifi notre application pour que chaque bundle souhaitant acc der l affichage graphique dispose de son propre onglet A son lancement l application Android classe Activity lance une instance de Felix Celui ci cr e au d marrage un ServiceTracker org osgi util tracker ServiceTracker avec un filtre sur les services que nous appelons ViewFactory D s qu un service ViewFactory est enregistr dans l environnement OSGI le ServiceTracker utilise la fonction ViewFactory create Activity qui permet de transmettre le contexte Android et de r cup rer en retour une View Afficher Pour que chaque bundle qui souhaite afficher une ViewFact
Download Pdf Manuals
Related Search
Related Contents
PDFファイル Panasonic TH-32LRT12A 32" Black LCD TV SYS68K/CPU-40/41 User`s Manual Online Backup Agreement Samsung FX2490HD Uporabniški priročnik HDMI to DVB-T encoder Modulator User`s Manual VDF Query User Manual ATAPI IDE CD-ROM DRIVE Wentronic AVS 50 HDMI CAT 5/6 Copyright © All rights reserved.
Failed to retrieve file