rapport projet asr - faure et raoust

Upload: hajar-zemmouri

Post on 16-Jul-2015

64 views

Category:

Documents


0 download

TRANSCRIPT

DVELOPPEMENT DUNE APPLICATION DE COMMUNICATION BLUETOOTH SUR ANDROIDProjet de fin dtudeJanvier 2010 VAP Architecte de Services en Rseau

Guillaume Faure et Maxime Raoust

Acteurs du projettudiantsGuillaume Faure Elve ingnieur en troisime anne Telecom SudParis [email protected] Maxime Raoust Elve ingnieur en troisime anne Telecom SudParis [email protected]

EncadrantsLaurent Bernard Enseignant-chercheur Telecom SudParis, dpartement RST [email protected] Sbastien Leriche Enseignant-chercheur Telecom SudParis, dpartement Informatique [email protected]

Avec laide deToko Luyeye Ingnieur de recherche Telecom SudParis [email protected]

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 2

tAble des mAtires55 6

1Prsentationduprojet1.1 Le sujet 1.2 Nos objectifs

77 7 7 8 9 9 10 11 12 12 15 16 17 18 18 20 20 21 21 22 23

2Travailralis2.1 tude prliminaire 2.1.1 Obtention du SDK 2.1.2 Environnement de travail 2.1.3 Environnement de test 2.1.4 Pile Bluetooth 2.1.5 Ouverture 2.1.6 Tableau rcapitulatif 2.1.6 Conclusion 2.2 Prise en main de lenvironnement 2.2.1 Prsentation du SDK 2.2.2 Lchec du Samsung Galaxy 2.2.3 La victoire du Hero 2.2.4 Application test 2.3 Le problme du profil PAN 2.3.1 Architecture dAndroid 2.3.2 Profil PAN sous Android 2.3.3 Nouvelle orientation de notre problmatique 2.4 Premire solution 2.4.1 Thorie 2.4.2 Pratique 2.4.3 Bilan de la premire solution

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 3

24 24 25 25 27

2.5 Deuxime solution 2.5.1 Prsentation du NDK 2.5.2 Thorie 2.5.3 Pratique 2.5.4 Bilan de la deuxime solution

28 2929 30 30

3Bilan 4Suiteduprojet4.1 Tests de VoIP 4.2 Automatisation de lapplication 4.3 Android Dev Phone

31 3232 32

Conclusion Bibliographieetrfrences1 Documents relatifs au projet 2 Liens Internet

34

Chargedetravail

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 4

1 prsentAtion du projet1.1 Le sujet

C

e projet de dveloppement sur tlphone mobile, encadr par Laurent Bernard du dpartement RST de Telecom SudParis et Sbastien Leriche du dpartement Informatique, sinsre dans un projet de recherche plus large men Telecom SudParis la demande de la RATP. En effet, dans le cadre de la modernisation des services de tlcommunication entre agents et usagers, la RATP souhaite mettre profit les volutions observes dans les technologies de linformation et de la communication en faveur des personnes mobilit rduite. Elle a dans ce but fait appel Telecom SudParis pour tudier la faisabilit dun service dinterphonie mobile visant mettre en relation les usagers concerns avec un agent RATP. Lide est de permettre lusager de connecter simplement son tlphone mobile un point daccs et daccder au service qui lui permettra dtablir une communication bidirectionnelle avec un agent sans utiliser le rseau dun quelconque oprateur GSM. Les deux aspects importants pour ce service sont dune part lutilisation de Bluetooth comme

technologie de rseau daccs et dautre part une disponibilit du service pour lusager sur de multiples plate-formes pour smartphones (ou ordiphones, la traduction officielle depuis peu). Le schma ci-contre prsente larchitecture rseau simplifie qui supportera le service en question. Les premiers travaux mens ont dmontr la faisabilit dun tel service grce la mise en uvre dune plate-forme dexprimentation et de tests de communications entre usager et agent. Ces rsultats concluants ont t raliss avec un smartphone Sony-Ericsson embarquant le systme dexploitation Symbian. Mais dautres tests, notamment avec des smartphones embarquant Windows Mobile, ont mis en vidence des verrous technologiques qui peuvent ventuellement tre levs moyennant des dveloppements spcifiques.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 5

1.2 Nos objectifs

L

a faisabilit dun tel service de communication a dj t dmontre sur quelques supports. Cependant, elle devra terme avoir t dmontre sur la plupart des environnements pour smartphone existant aujourdhui. Notre quipe de projet ASR a donc eu pour tche dtudier cette faisabilit sur un support nayant pas encore fait lobjet dtudes, parmi ceux-ci : Mac OSX Mobile (ou iPhone OS, embarqu par exemple sur les Iphone 3GS) et Android (embarqu par exemple sur le Samsung Galaxy). Nos objectifs de projet proprement parler furent les suivants :

Choisir celui qui semble le plus adapt la mise en place du service

Dvelopper un prototype dapplicationclient permettant daccder au service sur la plate-forme choisie La fentre temporelle de notre projet ASR tant assez courte (environ 10 semaines) et ce sujet ncessitant un investissement important, un calendrier a d tre rapidement mis en place. Des runions davancement avec nos encadrants taient organises toutes les deux semaines. Dautre part, nous devions galement donner rgulirement dans le cadre du projet des retours lquipe de projet RATP, par lintermdiaire de runions dchange ou de rapports crits. Nous avons donc mis en place le planning prvisionnel ci-contre.

Prendre connaissance de tous les travaux effectus dans le cadre du projet global

Explorer les possibilits offertes par lesenvironnements iPhone et Android

Fournir une tude comparative de cesdeux supports

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 6

2 trAvAil rAlis

A

prs avoir pris connaissance du sujet, une runion de dmarrage avec lensemble de lquipe de projet de Telecom SudParis a eu lieu, afin que nous puissions prendre connaissance de tous les avancements effectus jusqu prsent sur le projet global. Les diffrents rapports nous ont t transmis, et leur lecture nous a permis davoir une vision plus prcise du contexte et des moyens dont nous disposions pour mener bien notre projet. Nous prsentons dans cette partie les diffrentes tapes de notre travail.

2.1 tude prliminaireNotre premier travail a t ltude comparative des environnements iPhone OS et Android, afin de choisir la plate-forme sur laquelle nous allions nous concentrer. Voici les lments que nous avons tudis et retenus pour notre comparaison.

2.1.2 Environnement de travailCest principalement ce niveau que ces deux environnements se sont avrs diffrents. Environnement de dveloppement Lenvironnement de dveloppement pour liPhone est Xcode. Cest lenvironnement de dveloppement utilis pour toutes les technologies Apple, cest pourquoi cest outil nest disponible que pour Mac OS. Le dveloppement dapplications Android est possible aussi bien sur Eclipse, que sur Apache Ant ou JDK. Cest pourquoi le dveloppement dapplications Android est possible aussi bien sur Windows que sur Linux ou Mac. Langage utilis Le dveloppement dapplications pour Android se fait entirement en Java. Java est un puissant langage orient objet, utilis trs largement dans le monde du dveloppement. Le dveloppement dapplications pour iPhone OS

2.1.1 Obtention du SDKDvelopper sur un iPhone ou sur Android ncessite linstallation dun kit de dveloppement logiciel (ou SDK), fourni par les concepteurs du systme. Dans le cas dAndroid, cet outil est totalement libre daccs et gratuit, disponible en tlchargement sur le portail des dveloppeurs dAndroid. Le SDK pour iPhone OS est galement gratuit et disponible sur le portail des dveloppeurs dApple, mais ncessite une inscription gratuite la communaut des dveloppeurs Apple.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 7

se fait avec Objective C, une extension du langage C, orient objet et rflexif. Accs la documentation Dans les deux cas, on dispose dune part dune riche documentation sur les sites officiels de dveloppement des deux plate-formes, et dautre part dune communaut bien vivante de dveloppeurs. Il existe donc de nombreux sites, blogs et forums, professionnels ou amateurs, traitant du dveloppement sur ces deux plateformes. La documentation officielle dAndroid semble cependant plus claire que celle propose pour liPhone OS. Publication dapplications Les deux plate-formes permettent de rendre disponibles les applications aux utilisateurs finaux via une plate-forme de tlchargement intgre aux terminaux. Android propose la plate-forme Android Market pour la publication des applications. Notons qua lheure o nous crivons ces lignes, il y a environ 20 000 applications sur lAndroid Market. http://www.android.com/market/ Pour publier une application sur lAndroid Market, il faut sinscrire sur le site en question et payer des frais dinscription de 25$. http://market.android.com/publish/signup Apple propose la fameuse plate-forme App Store, pionnire, avec ce jour environ 200 000 applications.

http://www.apple.com/iphone/apps-for-iphone/ Il est ncessaire pour publier des applications sur iPhone de souscrire un des deux programmes pour dveloppeurs proposs: http://developer.apple.com/iphone/program/apply.html

Le programme standard, 99$, permetaux dveloppeurs de publier des applications gratuites ou payantes sur lApp Store

Le programme entreprise, 299$, permet aux socits de plus de 500 employs de crer des applications propritaires et de les distribuer de manire prive au sein de leur entreprise

2.1.3 Environnement de testIl est galement trs important de pouvoir effectuer des tests facilement et rapidement chaque tape du dveloppement, sans avoir installer chaque fois son application sur un terminal. Heureusement, dans les deux cas, les SDK intgrent un simulateur denvironnement dexcution (mulateur) reproduisant sur la machine du dveloppeur le comportement du tlphone et permettant de tester le fonctionnement de lapplication sur un terminal virtuel. Cependant, ces simulateurs ont des fonctionnalits moindre quun vrai terminal; dans les deux cas, lmulateur ne propose pas de gestion du Bluetooth.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 8

2.1.4 Pile BluetoothDans un systme dexploitation, les fonctionnalits Bluetooth sont gres par un composant logiciel du coeur du systme appel pile Bluetooth (ou Bluetooth stack). Comparons les piles Bluetooth de chacun des environnements. Android Android contient Bluez, la pile Bluetooth open source utilise par le noyau Linux. http://www.bluez.org/ Daprs la documentation officielle dAndroid, le profil Bluetooth PAN nest pas encore support officiellement dans Android 2.1. Cependant, le dmon pand permettant deffectuer des connexions Bluetooth PANU est compil dans le systme et peut tre utilis de manire exprimentale (voir paragraphe sur la premire approche). iPhone La documentation de liPhone fait trs peu tat du Bluetooth. Il semble que les dveloppeurs naient aucun accs aux couches bas niveau de la pile Bluetooth. Nous avons seulement trouv des mthodes haut niveau (par exemple dans la librairie GameKit, pour connecter deux tlphones via Bluetooth). Mme si une partie du profil PAN est implment (PANNAP pour lutilisation du terminal comme modem Internet), le rle PANU ne semble pas tre prsent.

2.1.5 OuvertureLes deux plate-formes prsentent chacune quelques limitations. Cependant, des solutions officieuses existent pour les contourner. Mme si ces solutions ne sont pas viables dans un environnement de production, elle permettent de faire des exprimentations sur les diffrentes plate-formes. Certains terminaux embarquant Android ne sont pas mis jour par les constructeurs lorsquune nouvelle version dAndroid est rendue disponible. Cependant, une technique officieuse permet de modifier la version dAndroid prsente sur le terminal (flasher la ROM). Cette technique permet ainsi dinstaller une ROM alternative, soit avec plus de fonctionnalits, soit avec un systme plus rcent ce qui peut tre intressant pour le dveloppeur si une nouvelle version dAndroid intgre la gestion du profil Bluetooth PAN avec le rle PANU. Une manipulation officieuse existe aussi pour liPhone. Cette opration appele jailbreak consiste modifier les droits daccs la partition systme afin de pouvoir modifier directement le systme de lappareil et y installer des applications alternatives. Il semble que beaucoup de choses soient faisables sur un iPhone jailbreak. Malheureusement peu de documentation existe pour les dveloppeurs, la communaut ne sexposant que trs peu sur Internet. Notons que cette manipulation annule la garantie du tlphone et quApple fait tout pour rendre cette manipulation impossible.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 9

2.1.6 Tableau rcapitulatifiPhone OS SDK Obtention du SDK IDE supports Plate-forme de dveloppement Langage applicatif Portail des dveloppeurs iPhone SDK Gratuit, sur inscription Xcode Mac Android Android SDK Gratuit Eclipse, JDK, Apache Ant Windows, Mac, Linux

Objective C http://developer.apple.com/ iphone

Java http://developer.android. com

Emulateur Gestion du Bluetooth dans lmulateur Plate-forme de publication des applications Frais dinscription la plate-forme de publication

Oui Non

Oui Non

App Store

Android Market

99$ ou 299$

25$

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 10

2.1.6 ConclusionCette tude prliminaire a fait apparatre les forces et faiblesses de chacun des environnements proposs, de sorte que nous avons pu faire le choix de notre environnement de dveloppement. Nous avons dcid de concentrer nos efforts sur Android (avec le Samsung Galaxy achet par le dpartement RST de Telecom SudParis), et ce principalement pour deux raisons : La portabilit Le dveloppement dapplications pour Android peut se faire sur de nombreux systmes (Windows, Mac, Linux) alors que le dveloppement dapplications pour iPhone OS est rserv aux possesseurs de Mac. Etant deux sur le projet et Maxime habitant Paris, nous avons estim que le fait de pouvoir travailler sparment sur nos machines personnelles (des PC sous Windows) reprsenterait un gain de temps consi-

drable et faciliterait grandement lorganisation du travail. Louverture Cette tude nous a permis de voir que ltendue des possibilits en terme de dveloppement Bluetooth sur iPhone OS est trs limite. Certaines fonctions haut niveau sont disponibles, mais ne correspondent pas nos besoins. Le dveloppeur na par ailleurs pas suffisamment accs aux couches bas niveau pour implmenter ce type de fonctionnalit. Android, quant lui, dispose dune API Bluetooth qui semble plus complte. Si elle ne permet pas encore deffectuer des connexions Bluetooth PANU, il est raisonnable de penser que limplmentation de ces fonctionnalits aura lieu tt ou tard. En attendant et dans le cadre de ltude de faisabilit, la solution de lutilisation du dmon exprimental pand nous est apparue comme une solution intressante.

Ce choix tant fait, nous avons rapidement rcupr le Samsung Galaxy, et avons commenc nos premiers pas dans le monde merveilleux dAndroid.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 11

2.2 Prise en main de lenvironnement

L

a premire tape de notre travail avec lenvironnement Android a t dapprhender le SDK, larchitecture et le dveloppement dune application ainsi que son dploiement sur un terminal embarquant Android.

lies Android. Le tout est trs bien fait et permet de rapidement tre confortable vis--vis du dveloppement sur Android. Le SDK Android Loutil le plus important est le SDK Android. Facile installer, il permet de tlcharger tous les outils indispensables au dveloppement dapplications. Un petit logiciel permet dabord de tlcharger les diffrentes versions du SDK (une version du SDK par version dAndroid : 1.4, 1.5, 1.6, 2.0 etc.). Il permet galement de tlcharger les diffrentes versions des Google APIs (APIs pour intgrer des fonctionnalits lies aux services Google tels que Maps etc.) ou de la documentation JavaDoc. Son fonctionnement est similaire aux gestionnaires de paquets de Linux.

2.2.1 Prsentation du SDKGoogle a mis en place un grand nombre doutils pour aider les dveloppeurs Android. Le portail des dveloppeurs La premire chose visiter est le portail des dveloppeurs Android, mis en place par Google.

http://developer.android.com/ Trs complet, ce site prsente Android, explique comment installer et utiliser les diffrents outils (SDK, NDK etc.), propose un ensemble de tutoriels et articles concernant le dveloppement dapplications Android, expose la rfrence de lAPI Android ainsi que les actualits

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 12

ADT pour Eclipse Eclipse est lEnvironement de Dveloppement Intgr (ou IDE) le plus largement utilis pour la programmation Java; trs performant, il est de plus gratuit et open source. http://www.eclipse.org/ Le langage privilgi pour le dveloppement dapplications Android est justement Java. Google a donc tout naturellement conu un plugin pour Eclipse (un plugin est un module qui complte un logiciel hte pour lui apporter de nouvelles fonctionnalits). Android Development Tools, ou ADT, est trs complet et surtout trs pratique : conception graphique dinterfaces utilisateur, debug distant sur un tlphone, gestion de larchitecture de fichiers dune application etc.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 13

Emulateur Nous lavons voqu plus haut, le SDK propose un mulateur Android. Il permet de lancer sur la machine du dveloppeur un terminal virtuel reprsentant lcran un tlphone embarquant Android. Cest bien videmment un outil indispensable pour le dveloppement mobile. A chaque version dAndroid est associe une version de lmulateur, permettant au dveloppeur de voir exactement quoi ressemblera son application sur un matriel rel. Rappelons cependant que lmulateur ne propose pas toutes les fonctionnalits dun vrai tlphone. Il ne permet par exemple pas dmuler la gestion du Bluetooth.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 14

2.2.2 Lchec du Samsung GalaxyNous venons de voir que lmulateur Android ne permet pas la gestion du Bluetooth. Or, nous avions bien videmment besoin de cette fonctionnalit pour lapplication dinterphonie. Le dpartement RST de Telecom SudParis a donc fait lacquisition dun tlphone embarquant Android : le Samsung Galaxy. La configuration du Samsung Galaxy est tout fait classique :

Le driver standard permet dinteragir avec le systme dexploitation pour les usages standards: synchronisation du tlphone avec les contacts de lordinateur, le calendrier etc. Le driver ADB est le driver ddi aux dveloppeurs. Il permet de dployer sur le tlphone une application en dveloppement, et de dbuguer une application tournant sur le tlphone depuis lIDE Eclipse sur lordinateur du dveloppeur. En pratique, le driver ADB ne fonctionne pas avec le Samsung Galaxy. Nous ne le savions pas au dbut et nous avons ainsi perdu beaucoup de temps avec ce problme. Voici lextrait dun article trouv plus tard sur Frandroid, un excellent portail francophone ddi Android: Enfin pour les dveloppeurs, sachez que le fonctionnement dadb sur le Samsung reste pour le moment approximatif et des solutions non officielles existent. http://www.frandroid.com/4178/comparatif-htc-hero-etsamsung-galaxy/ Nous tions ainsi compltement bloqus sur le projet. Il nous fallait absolument trouver une solution pour pouvoir concrtement dployer une application sur un matriel.

Android 1.5 cran tactile AMOLED HVGA 3.2Mp 3G, WiFi b/g, Bluetooth, GPS 8Go de mmoire interne et port microSDHC

115 x 56 x 11,9 mmSur le papier, ce tlphone tait donc parfait pour nous permettre de travailler sur le projet dans de bonnes conditions. En pratique, nous avons rencontr beaucoup de difficults et nous avons ainsi perdu du temps avec ce matriel. Lorsquun terminal Android est branch sur un ordinateur via son port USB, deux types de drivers permettent de grer le matriel :

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 15

2.2.3 La victoire du HeroLe dpartement Informatique de Telecom SudParis a fait lacquisition de deux tlphones embarquant Android, des HTC Hero, a peu prs au moment o le dpartement RST a achet le Samsung Galaxy. Ils ont donc gracieusement accept de nous prter un HTC Hero le temps du projet. Voici les caractristiques du HTC Hero:

3G, WiFi 802.11b/g, Bluetooth, GPS Processeur Qualcomm MSM7200A528MHz

288MB de RAM 512MB de mmoire interne et slot microSDHC

112 x 56.2 x 14.35 mmLe HTC Hero est trs bien gr par le driver ADB. Nous pouvions ainsi facilement dployer nos applications sur le tlphone. Nous tions alors dans de bonnes conditions pour continuer notre travail sur le projet.

Android 1.5 avec une couche graphiquepersonnalise dveloppe par HTC

cran TFT LCD tactile multi-touch de3,2Mp (320 x 480)

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 16

2.2.4 Application testRien de mieux pour shabituer un environnement de dveloppement que de pratiquer cet environnement. Cest pourquoi nous avons commenc par dvelopper une application de test pour apprhender les concepts lis aux applications Android : architecture de lapplication, manifeste de lapplication, architecture et conception des interfaces utilisateur, Activities et Services (qui permettent dafficher une fentre ou de lancer un service en tche de fond) et liens entre ces entits, persistance des donnes etc.

Ce travail nous a conforts dans lide que le SDK Android est vraiment agrable utiliser: bien conus, les diffrents outils permettent de faire gagner beaucoup de temps au dveloppeur. Le SDK Android est donc un modle dergonomie.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 17

L

2.3 Le problme du profil PANe sujet de notre projet prcise que notre application de communication doit se connecter au rseau de la RATP en utilisant la technologie Bluetooth. Cette technologie de communication sans fil propose diffrents profils de communication, qui correspondent des spcifications fonctionnelles lis un usage particulier. Il existe de nombreux profils Bluetooth : le profil HeadSet par exemple, qui permet de grer la connexion Bluetooth entre un ordinateur et des couteurs sans fils, ou encore le File Transfer Profile, utilis pour le transfert de fichiers entre deux appareils. Dans notre cas, le smartphone doit se connecter au point daccs en utilisant le profil PAN, pour Personal Area Network, qui est un profil gnral pour la connexion un rseau local. Ce profil PAN implmente diffrents rles, dont le rle PAN-U (pour PAN-User, utilisateur du rseau) dont va se servir notre tlphone et le rle PAN-NAP (pour PAN-Network Access Point, ou point daccs rseau) qui sera utilis sur les points daccs de la RATP. Nous avons donc besoin daccder au profil PAN sous Android pour effectuer la connexion au point daccs.

2.3.1 Architecture dAndroidPour bien comprendre comment accder ce profil, commenons par dtailler larchitecture du systme Android. Le portail des dveloppeurs Android nous prsente larchitecture du systme avec le schma ci-contre.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 18

Linux Kernel Android sappuie sur le noyau Linux 2.6 pour les services systme de base tels que la scurit, la gestion de la mmoire et des processus, le rseau et la gestion des drivers. Le noyau sert de couche dabstraction entre le matriel et le reste de la pile logicielle. Android Runtime Android inclut un ensemble de librairies fournissant la plupart des fonctionnalits des librairies standard de Java. Chaque application Android sexcute dans un processus, avec sa propre instance de la machine virtuelle Java, appele Dalvik. Dalvik a t crit pour optimiser lexcution dune multitude dinstances de la machine virtuelle, avec une empreinte mmoire rduite. Dalvik sappuie sur le noyau Linux pour les fonctionnalits bas-niveau tels que les threads ou la gestion de la mmoire. Libraries Android fournit un ensemble de librairies C/C++ utilises par diffrents composants du systme. Ces fonctionnalits sont rendues disponibles aux dveloppeurs au travers du framework dapplication dAndroid. On trouve parmi ces librairies: librairie C standard, moteurs daffichage 2D et 3D, SQLite, rendu des polices de caractres etc. Application Framework Le framework dapplication est la couche qui nous intresse tout particulirement. Cest elle qui fait le lien, grce un ensemble dAPIs Java, entre le systme et lapplication. tant un systme ouvert, Android permet aux dveloppeurs de concevoir des applications trs

riches et de tirer partie dun maximum de fonctionnalits. Les dveloppeurs ont donc accs aux mme fonctionnalits que celles utilises par les applications fournies avec Android. Toute application Android repose sur un ensemble de services et systmes parmi lesquels :

Un ensemble de Views permettant deconstruire linterface graphique de lapplication : listes, grilles, champs textes, images, et mme intgration dun navigateur web ou dune vue Google Maps

Des Content Providers qui permettentaux applications daccder des donnes dautres applications ou de partager ses propres donnes

Un Ressource Manager pour accder des lments autres que du code : donnes textuelles traduites, images, descriptions XML dinterfaces graphiques etc.

Un Activity Manager pour grer lecycle de vie de lapplication Ce rapide survol de larchitecture du systme nous permet de mieux comprendre comment fonctionne une application Android. Confine dans la couche la plus haute, elle accde au systme uniquement via les APIs Java exposes par la couche Application Framework. Ainsi, si une fonctionnalit est prsente dans le noyau Linux (couche rouge sur le schma) ou dans les libraires systme (couche verte), mais quelle nest pas relie au framework dapplication, elle ne sera pas utilisable directement dans une application Android.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 19

2.3.2 Profil PAN sous AndroidLe profil PAN est bien prsent sous Android, cependant il se trouve au niveau du noyau Linux, et na pas encore t reli lAPI Java de dveloppement dapplications. Cela signifie que les dveloppeurs dapplications dAndroid nont pas accs ce profil. Normalement le profil PAN se trouve donc hors de notre porte. Il est donc impratif pour nous de trouver un moyen de contourner ce problme et de faire fonctionner une connexion utilisant le profil PAN sur le tlphone.

2.3.3 Nouvelle orientation de notre problmatiqueNous avons donc d rviser nos objectifs initiaux, puisque le dveloppement dune application serait inutile tant que nous navons aucun moyen deffectuer la connexion Bluetooth entre le tlphone et le point daccs. Nous nous sommes donc concentrs sur les diffrents moyens de faire marcher le profil PAN sous Android, et les tests de ses diffrents moyens, avant de se servir de ces rsultats pour dvelopper lapplication finale. Nos recherches nous ont permis didentifier deux solutions, que nous dtaillons dans la partie suivante.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 20

2.4 Premire solution

L

2.4.1 Thoriea gestion du Bluetooth dans une application passe par lAPI Java Bluetooth dAndroid. Malheureusement, au moment du projet, le profil Bluetooth PAN ntait pas intgr lAPI Java et donc pas utilisable directement dans une application. Nous venons de voir quAndroid est bas sur le noyau Linux 2.6 et il contient Bluez, la pile Bluetooth open source du noyau Linux. Bluez supportant le profil PAN, on pouvait penser que le systme contenait les briques ncessaires pour la gestion du profil en question, mme si ces briques ntaient pas relies au framework dapplication. Le schma cicontre prsente larchitecture du Bluetooth dans Android. Les briques de base du profil PANU sont prsentes dans le rectangle Bluez mais ne sont pas relies lAPI Java comme cest le cas, par exemple, pour RFCOMM.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 21

Cest le dmon pand qui permet de grer le profil PAN sous Linux (avec ses trois rles PANU, NAP et GN). Cet excutable est compil avec Android et est donc prsent dans le systme. En thorie, il suffit donc de lancer ce dmon pour tablir une connexion Bluetooth PANU. Le problme est que le systme Linux, et encore plus Android, est trs restrictif en terme de droits daccs. Lorsquun usager (un utilisateur physique) interagit avec son terminal, il utilise de manire transparente un utilisateur virtuel sur le systme (on peut faire lanalogie avec les comptes utilisateurs de Windows). Ainsi, lutilisateur virtuel standard dAndroid na pas accs aux fichiers systme et notamment au dmon pand. Pour y accder, il faut bnficier des droits daccs du super utilisateur root. Bien videmment, par dfaut root nest pas utilisable. Il est cependant possible davoir accs cette fonctionnalit en dbloquant le tlphone. Cette manipulation officieuse consiste modifier le systme install sur le tlphone (flasher la ROM). Des acteurs de la communaut ont ainsi rendu disponible des ROM alternatives permettant, entre autre, laccs lutilisateur root. Notons cependant quune solution officielle (et plus pratique, comme nous le verrons plus loin) existe. Google distribue des Android Dev Phone ou ADP, tlphones ddis aux dveloppeurs et compltement dbloqus : lutilisateur root est accessible et il est facile de flasher la ROM pour installer une version modifie.

Dans notre cas, nous avions un tlphone standard sans accs lutilisateur root. Il suffisait donc, en thorie, dinstaller une ROM alternative et de lancer avec lutilisateur root le dmon pand crant ainsi une connexion Bluetooth PANU avec notre point daccs Bluetooth. Un article lu sur le blog dun dveloppeur nous montra que cette solution tait thoriquement possible. Notons que lauteur de ce billet utilisait un ADP ! http://mrkunkel.com/2009/08/11/the-other-tether-theg1android-as-a-bluetooth-panu-client/ Il est important de prciser que cette approche est une bidouille et nest donc absolument pas envisageable dans un environnement de production. Les utilisateurs finaux de lapplication ont pour la plupart un systme standard et donc pas laccs lutilisateur virtuel root. Cette approche permet cependant de montrer que le systme contient les lments ncessaires ltablissement dune connexion Bluetooth PANU.

2.4.2 PratiqueEn pratique, ce ne fut pas si simple. Nous avons install diffrentes ROMs, chacune venant avec son lot derreurs et de difficults. Modaco custom ROM http://android.modaco.com/content/htc-hero-heromodaco-com/292018/11-jan-3-1-modaco-custom-rom-forgsm-hero/ La Modaco custom ROM donne accs lutilisateur root. Le dmon pand nest plus

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 22

prsent dans le systme, mais il est prsent dans une application installe par dfaut avec la ROM. Nous navons cependant pas russi crer une connexion Bluetooth PANU. Il nous manquait dans cette ROM des outils initialement fournis dans Android tels que hcitool. Firmware Smartphone France http://android.smartphonefrance.info/actu.asp?ID=328 Le portail Smartphone France propose lui aussi une ROM alternative pour Android avec accs lutilisateur root. Nous avons avec cette ROM rencontr les mmes problmes avec la ROM Modaco, savoir quil nous manquait certains lments cls du systme pour faire fonctionner le profil PAN. Modaco stock rooted ROM http://android.modaco.com/content/htc-hero-heromodaco-com/291942/22-jan-stock-roms-radios-in-update-zipformat-for-gsm-hero/

Le portail Modaco propose galement une ROM stock rooted, cest--dire une ROM usine avec comme seule modification laccs lutilisateur root. En thorie, cela devait rsoudre nos problmes. En pratique, nous navons pas trouv le dmon pand (ni dailleurs dautres outils usuels tels que locate, which ou mme grep !). Nous avons donc eu des doutes sur le fait que cette ROM soit rellement une ROM usine.

2.4.3 Bilan de la premire solutionCette premire approche se solde donc par un chec. Parce que nous navions pas accs lutilisateur root, nous navons pu lancer un appel systme au dmon pand. Nous navons de plus pas russi obtenir un systme runissant tout ce dont nous avions besoin: dmon pand, outils associs et utilisateur root.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 23

2.5 Deuxime solution

CJNI

ette solution nous est apparue assez tardivement (dans les deux dernires semaines du projet), grce aux conseils de Sbastien Leriche. Elle consiste en lutilisation du NDK.

Amlioration des performances, un langage compil (cest--dire du code natif ) tant plus rapide que de passer par le bytecode de Java. NDK Le NDK pour Android (Native Development Toolkit) propose un ensemble doutils pour permettre aux dveloppeurs dutiliser le framework JNI dans leurs applications. Alors quune application sxcute au sein de la machine virtuelle Dalvik, le NDK permet dimplmenter une partie de lapplication en utilisant du code natif tel que C ou C++. Cette technique permet dune part damliorer les performances de certains algorithmes ou programmes, et dautre part davoir

2.5.1 Prsentation du NDK

Daprs http://fr.wikipedia.org/wiki/Java_Native_ Interface Le JNI (Java Native Interface) est un framework qui permet du code Java sexcutant lintrieur de la JVM dappeler et dtre appel par des applications natives (cest--dire des programmes spcifiques au matriel et au systme dexploitation de la plateforme concerne), ou avec des bibliothques logicielles bases sur dautres langages (C, C++, assembleur, etc.). Voici quelques exemples dutilisation de la JNI :

Implmentation defonctions du systme dexploitation qui ne sont pas prsentes dans la bibliothque Java

Interfaage avec desapplications crites dans dautres langages

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 24

accs plus de fonctionnalits que ce que propose lApplication Framework. Le NDK fournit:

tout fait envisageable dans un environnement de production.

Un ensemble doutils pour compiler ducode source C ou C++ pour Android

2.5.3 PratiqueNous avons dans un premier temps tlcharg et install le NDK Android sur nos machines. La configuration sest faite sans problme. Nous avons pu rapidement concevoir et dvelopper une application permettant de tester le NDK en faisant appel une fonction crite en C++ depuis notre application Android crite en Java. Les premiers tests furent donc concluants. Ltape suivante a alors t de rcuprer le code des fonctions qui nous intressaient et de les incorporer dans notre application. Nous avons donc tlcharg le code source de Bluez et regard les sources. Malheureusement pour nous, Bluez est un projet peu document avec un code source non comment et assez obscur. Il nous a donc fallu un certain temps pour comprendre la structure du code et isoler la partie concernant ltablissement dune connexion Bluetooth PANU. Une fois cette partie isole, il ne restait plus qu la recopier dans notre projet NDK et de compiler le tout pour Android. Mais bien entendu, la compilation sest avre assez difficile. En effet, de nombreuses fonctions dclares dans ce code taient en ralit dfinies dans dautres fichiers. A ldition des liens, nous obtenions donc de nombreux messages derreur signalant des fonctions introuvables. Aucune documentation ntant disponible, il a fallu pour chacune de ces fonctions rechercher le fichier la dfinissant, lincorporer

Une manire de dployer ce code compil sur un matriel Android et de lintgrer une application Android crite en Java

De la documentation, des exemples etdes tutoriels

2.5.2 ThorieDans notre cas, ce qui est intressant est de pouvoir accder aux fonctionnalits du dmon pand, situ dans la pile Bluetooth Bluez, elle-mme faisant partie du noyau Linux tournant sur le tlphone. Bluez tant un projet open source, lide tait de rcuprer le code source du dmon pand et, grce au NDK, de lincorporer dans du code natif qui sera ensuite appel par notre application. videmment, cette mthode semble quelque peu archaque, puisquelle consiste recopier du code dj prsent dans le systme au sein de notre application. Cependant, son avantage principal est de ne pas ncessiter de modification pralable du tlphone, contrairement la solution prcdente. En effet, elle na pas recours des oprations ncessitant des droits dadministration, le flashage du tlphone est donc inutile. De plus, cette solution est potentiellement portable sur tout systme Android. Cette solution semble donc la plus propre et la plus viable pour le projet, tant que le profil PANU naura pas t implment directement au sein de lAPI Java. Elle est

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 25

au projet, puis corriger toutes les nouvelles erreurs de syntaxe et de dpendance lies larrive de ces nouveaux fichiers dans le projet. Ce fut donc un travail long et fastidieux. Cependant, nous avons fini par russir liminer toutes les erreurs de compilation et dditions des liens et compiler notre application. En pratique, notre application affiche un champ de texte dans laquelle on peut renseigner ladresse

MAC du point daccs Bluetooth auquel on dsire se connecter. Lorsque lutilisateur appuie sur le bouton de validation, une fonction native est appele, avec en paramtre ladresse MAC fournie par lutilisateur. Cette fonction essaie de se connecter au point daccs avec le rle PANU, puis affiche le code de retour du programme (message derreur ou de succs) dans un boite de dialogue.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 26

2.5.4 Bilan de la deuxime solutionNous navons malheureusement pas russi tablir une connexion Bluetooth PANU avec succs en utilisant cette mthode. Le programme compile et la fonction sexcute sur le tlphone, mais des erreurs se produisent lexcution. La suite du travail tait donc de comprendre ces erreurs et de les corriger. Nous navons cependant pas eu le temps de continuer ce travail dans le cadre de notre projet. Cela a cependant permis de montrer que lintgration du code source du dmon pand via le NDK est une solution trs intressante. Nous pensons quil sagit de la meilleure solution tant que le profil PANU ne sera pas officiellement intgr dans lAPI Java de gestion du Bluetooth.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 27

3 bilAnNous avons donc termin notre projet avec un bilan plutt mitig. Dun ct, nous avons effectu un grand travail de tri de linformation et de rsolution de problmes qui permettra aux groupes de travail aprs nous de gagner du temps et de directement travailler sur le coeur du problme. Dun autre ct, nous aurions aim russir dployer avec succs une connexion Bluetooth PANU ! Notre intuition nous dit quavec tout le travail que nous avons ralis, le dploiement effectif du profil PANU sous Android nest pas loin. Nous regrettons donc ne pas avoir eu le temps de russir cette tche. Enfin, sur un plan plus personnel, nous avons regrett de ne pas avoir eu plus de programmation faire, lessentiel du travail ralis sur le projet tant de manipuler Android sous toute ses coutures pour comprendre pourquoi telle ou telle manipulation ne marchait pas. Ce fut cependant une exprience enrichissante et surtout trs intressante. Nous sommes maintenant parfaitement laise avec le systme Android et le dveloppement dapplications ddies. La technologie tant vraiment dactualit, cest une exprience que nous pouvons donc valoriser auprs des entreprises, aspect important puisqu lheure o nous crivons ces lignes nous nous apprtons entrer dans la vie active. Par rapport au planning initial, la rpartition effective du temps de travail sest faite assez diffremment, puisque presque tout le temps ddi au dveloppement de lapplication a t utilis en ralit pour les tests des diffrentes solutions dutilisation du profil PAN sous Android. Notre plan de charge effectif est disponible en annexe, et reflte clairement cet tat de fait. Rtrospectivement, nous nous sommes rendus compte que le planning initial aurait d prvoir quune phase de tests de connexion Bluetooth serait ncessaire avant de se lancer dans le dveloppement de lapplication, et cet oubli na pas facilit lorganisation de notre travail. Il aurait t cependant bien difficile de prvoir quelle ampleur cette phase allait prendre, ainsi que tous les problmes quelle allait nous apporter. Nous estimons que ce temps de recherche de solutions au problme du profil PAN et de test nous a cot plus de 60 heures de travail chacun, soit environ 40% de notre temps pass sur le projet.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 28

4 suite du projet

N

otre projet ASR sinscrivant dans le cadre dun projet plus global, il nous semble important de faire en sorte que notre travail puisse tre facilement rutilis par la suite pour servir de base pour des dveloppements futurs, dautant plus que la reprise de nos travaux fera lobjet dun projet PJ20 Telecom SudParis cette anne. Si nous navons pas pu remplir tous les objectifs que nous nous tions fixs au dbut du projet, notre travail aura permis didentifier les problmes majeurs lis au dveloppement de cette application, et dapporter une base de solution qui nous semble satisfaisante. Cette base permettra lquipe PJ20 de dmarrer dans la bonne direction et dviter les problmes que nous avons eus rsoudre. Voici selon nous les prochaines tapes du projet.

4.1 Tests de VoIPUne fois la connexion Bluetooth mise en place, lutilisateur devra pouvoir appeler un agent RATP via un protocole de voix sur IP. Lapplication devra donc, aprs connexion Bluetooth et initialisation des paramtres rseau IP, lancer une application de VoIP permettant dappeler un poste sur le rseau. Une fois lapplication de VoIP choisie et relie notre application, des tests devront tre effectus pour sassurer que la communication via ce logiciel fonctionne correctement. Il existe diffrents logiciels VoIP disponibles sur Android, notamment sipdroid, qui semble correspondre nos besoins et fonctionner sur un rseau local. Il sagit dun projet open source, on peut ainsi sintresser la possibilit dadapter et dintgrer le code source de cette application lapplication ddie au projet (attention cependant aux questions de licence). http://sipdroid.org/ Dautres logiciels comme Fring ou NimBuzz sont disponibles, mais semblent cependant moins intressants, car ils ncessitent de crer un compte avant utilisation. Dautre part Fring ncessite pour fonctionner un accs Internet, tandis que notre application est voue tre excute uniquement sur un rseau local. Notons que ces informations sont thoriques et quelles ncessitent dtre approfondies.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 29

4.2 Automatisation de lapplication

U

n des aspects fonctionnels qui doit galement tre mis en place est lautomatisation de lapplication. En effet, plutt que de demander lutilisateur dentrer toutes les informations ncessaires, lapplication doit une fois lance dcouvrir delle-mme tous les points daccs porte, choisir delle-mme celui auquel se connecter, et une fois connecte lancer dellemme un appel vers un poste dun agent de la RATP. En ce qui concerne la dcouverte des points daccs bluetooth, nous avons trouv au cours de nos recherches une mthode qui semblerait convenir. Nous navons pas pu la tester par manque de temps mais nous pensons quelle mrite quon sy attarde. Larticle original

dtaillant cette mthode peut tre consult ladresse suivante : http://blog.bruary.net/2009/07/android-bluetoothhacking-using-ndk.html Notre travail effectu sur le projet est disponible sur un serveur SVN, avec toute la documentation correspondante. http://code.google.com/p/gou1-sandbox/source/ browse/#svn/trunk/android Nous nous proposons de plus de rencontrer les futurs membres du projet PJ20 afin dchanger sur le projet, de faciliter la transition.

4.3 Android Dev PhoneGoogle propose aux dveloppeurs deux tlphones entirement dbloqus et sans aucun blocage de la carte SIM : accs lutilisateur systme root, possibilit de flasher la ROM pour installer sa propre version du systme Android etc., ce matriel est lidal pour les dveloppeurs. Il serait ventuellement judicieux de faire lacquisition dun tel tlphone pour rduire les soucis lis au matriel; la difficult que nous avons eu trouver une ROM alternative correcte pour le HTC Hero illustre bien ces soucis. http://developer.android.com/guide/developing/device. html#dev-phone-1 Le premier ADP, surnomm ADP1 et bas sur un HTC Dream/G1, est propos au prix de 399$ sur le portail des dveloppeurs Android.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 30

conclusion

C

ette tude a permis de montrer que le dploiement de lapplication de communication Bluetooth tait thoriquement possible sur la plate-forme Android. Mme si nos exprimentations concrtes ont chou, nous sommes confiants quune solution est possible moyennant un travail supplmentaire. Il nous parait de plus judicieux de remarquer que le profil PAN sera probablement implment, dans le futur, dans lAPI Java Bluetooth dAndroid. En effet, chaque nouvelle version dAndroid apporte son lot de nouveauts, y compris concernant le Bluetooth; plusieurs profils ont ainsi t implments depuis Android 1.0. Aucune date nest cependant officiellement prvue concernant lintgration du profil PAN Android.

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 31

bibliogrAphie et rfrences1 Documents relatifs au projetRapport de projet Projet RATP - Voix sur Bluetooth Lidia Rodriguez Fernandez & Oussama Ben Cheikh Souguir, Juin 2007 Rapport de projet Exprimentation de la voix sur Bluetooth Achille Notue Souop & Philippe Tagoum Fogang & Daf Gnabaly, 2008 Rapport de stage Linterphonie mobile sur Bluetooth Toko Luyeye, novembre 2008

2 Liens InternetPortail des dveloppeurs Apple (rfrences, documentation, tutoriels) http://developer.apple.com/ Portail des dveloppeurs Android http://developer.android.com/ Documentation officielle du Bluetooth sur Android http://developer.android.com/guide/topics/wireless/bluetooth.html http://developer.android.com/reference/android/bluetooth/package-summary.html Etablissement dune connexion Bluetooth PANU sur un ADP1 http://mrkunkel.com/2009/08/11/the-other-tether-the-g1android-as-a-bluetooth-panu-client/ Site officiel de Bluez http://www.bluez.org/ Rfrence du NDK Android http://developer.android.com/sdk/ndk/1.5_r1/index.html

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 32

Application alternative de Tethering pour Android, utilisant le dmon pand http://code.google.com/p/android-wifi-tether/ Tutoriel sur le NDK avec utilisation du Bluetooth http://blog.bruary.net/2009/07/android-bluetooth-hacking-using-ndk.html API Bluetooth exprimentale pour Android http://code.google.com/p/android-bluetooth/ Tutoriel en franais pour flasher la ROM du HTC Hero http://wiki.smartphonefrance.info/%28X%281%29S%28r1onbd554mjg4rntopujcy45%29%29/ Default.aspx?Page=hero-upgrade-modaco-rom&AspxAutoDetectCookieSupport=1 Communaut anglophone ddi au HTC Hero, nombreuses ROM disponibles http://android.modaco.com/content/htc-hero-hero-modaco-com/

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 33

chArge de trAvAilGuillaume Maxime

TotalenheuresTcheProposition calendrier Recherche de documentation sur Android et iPhone Rdaction du rapport prliminaire Rcupration du SDK Android, installation, configuration, premiers tests Tests de pilotage du Samsung Galaxy via l'interface USB Construction d'une premire application "bac sable", installation sur HTC Hero Prparation & prsentation RATP Documentation sur le rootage, premier rootage du HTC Hero Tests d'excution du dmon "pand" sur Hero root Documentation sur le NDK, rcupration, installation Configuration du NDK, Dveloppement d'une application Hello World utilisant le NDK Rcupration, tude du code de Bluez Dveloppement d'un prototype d'application de un point d'accs Bluetooth utilisant le NDK Rdaction rapport Prparation prsentation Runions d'avancement

1531 10 5 5 5 10 4 10 20 5 3 10 20 20 10 15

1511 15 4 5 10 10 4 10 30 4 0 5 8 20 10 15

Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 34