Vous êtes sur la page 1sur 34

DVELOPPEMENT

DUNE APPLICATION
DE COMMUNICATION
BLUETOOTH SUR ANDROID
Projet de fin dtude

VAP Architecte de Services en Rseau

Guillaume Faure et Maxime Raoust


Janvier 2010

Acteurs du projet
tudiants
Guillaume Faure
Elve ingnieur en troisime anne Telecom SudParis
guillaume.faure@telecom-sudparis.eu
Maxime Raoust
Elve ingnieur en troisime anne Telecom SudParis
maxime.raoust@telecom-sudparis.eu

Encadrants
Laurent Bernard
Enseignant-chercheur Telecom SudParis, dpartement RST
laurent.bernard@telecom-sudparis.eu
Sbastien Leriche
Enseignant-chercheur Telecom SudParis, dpartement Informatique
sebastien.leriche@telecom-sudparis.eu

Avec laide de
Toko Luyeye
Ingnieur de recherche Telecom SudParis
toko.luyeye@telecom-sudparis.eu

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

Table des matires


5

1 Prsentation du projet

1.1 Le sujet

1.2 Nos objectifs

2 Travail ralis

7
2.1 tude prliminaire
7
2.1.1 Obtention du SDK
7
2.1.2 Environnement de travail
8
2.1.3 Environnement de test
9
2.1.4 Pile Bluetooth
9
2.1.5 Ouverture
10
2.1.6 Tableau rcapitulatif
11
2.1.6 Conclusion
12
2.2 Prise en main de lenvironnement
12
2.2.1 Prsentation du SDK
15
2.2.2 Lchec du Samsung Galaxy
16
2.2.3 La victoire du Hero
17
2.2.4 Application test
18
2.3 Le problme du profil PAN
18
2.3.1 Architecture dAndroid
20
2.3.2 Profil PAN sous Android
20
2.3.3 Nouvelle orientation de notre problmatique
21
2.4 Premire solution
21
2.4.1 Thorie
22
2.4.2 Pratique
23
2.4.3 Bilan de la premire solution

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

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

28

3 Bilan

29

4 Suite du projet

29

4.1 Tests de VoIP

30

4.2 Automatisation de lapplication

30

4.3 Android Dev Phone

31

Conclusion

32

Bibliographie et rfrences

34

Charge de travail

32
32

1 Documents relatifs au projet


2 Liens Internet

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

1 Prsentation du projet
1.1 Le sujet

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

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 :

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


global

Explorer les possibilits offertes par les


environnements iPhone et Android

Fournir une tude comparative de ces

Choisir celui qui semble le plus adapt


la mise en place du service

Dvelopper un prototype dapplication


client 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.

deux supports

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

2 Travail ralis

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 prliminaire


Notre 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.1 Obtention du SDK


Dvelopper 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.

2.1.2 Environnement de travail


Cest 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

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

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$, permet


aux 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 test


Il 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.

Apple propose la fameuse plate-forme App


Store, pionnire, avec ce jour environ 200 000
applications.

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

2.1.4 Pile Bluetooth

2.1.5 Ouverture

Dans 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.

Les 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.

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.

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 rcapitulatif


iPhone OS

Android

SDK

iPhone SDK

Android SDK

Obtention du SDK

Gratuit, sur inscription

Gratuit

IDE supports

Xcode

Eclipse, JDK, Apache Ant

Plate-forme de dveloppement

Mac

Windows, Mac, Linux

Langage applicatif

Objective C

Java

Portail des dveloppeurs

http://developer.apple.com/
iphone

http://developer.android.
com

Emulateur

Oui

Oui

Gestion du Bluetooth
dans lmulateur

Non

Non

Plate-forme de publication des applications

App Store

Android Market

Frais dinscription la
plate-forme de publication

99$ ou 299$

25$

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

2.1.6 Conclusion

drable et faciliterait grandement lorganisation


du travail.

Cette 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-

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

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.

2.2.1 Prsentation du SDK


Google 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.

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.

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 Galaxy


Nous 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.

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.

La configuration du
Samsung Galaxy est tout
fait classique :

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

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:

croSDHC

115 x 56 x 11,9 mm
Sur 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.

Enfin pour les dveloppeurs, sachez que le fonctionnement


dadb sur le Samsung reste pour le moment approximatif et des
solutions non officielles existent.

Lorsquun terminal Android est branch sur


un ordinateur via son port USB, deux types de
drivers permettent de grer le matriel :

Nous tions ainsi compltement bloqus


sur le projet. Il nous fallait absolument trouver
une solution pour pouvoir concrtement
dployer une application sur un matriel.

http://www.frandroid.com/4178/comparatif-htc-hero-etsamsung-galaxy/

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

2.2.3 La victoire du Hero


Le 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.

3G, WiFi 802.11b/g, Bluetooth, GPS


Processeur Qualcomm MSM7200A
528MHz

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

112 x 56.2 x 14.35 mm

Voici les caractristiques du HTC Hero:

Android 1.5 avec une couche graphique


personnalise dveloppe par HTC

cran TFT LCD tactile multi-touch de


3,2Mp (320 x 480)

Le 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.

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

2.2.4 Application test


Rien 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

2.3 Le problme du profil PAN

e 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 dAndroid


Pour 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 de


construire linterface graphique de lapplication : listes, grilles, champs textes,
images, et mme intgration dun navigateur web ou dune vue Google Maps

Des Content Providers qui permettent


aux 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 le


cycle 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 Android

2.3.3 Nouvelle orientation de notre


problmatique

Le 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.

Nous 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


2.4.1 Thorie

a 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 Pratique
En 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 solution


Cette 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

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.

2.5.1 Prsentation du NDK


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

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

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

Interfaage avec des


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

Un ensemble doutils pour compiler du

tout fait envisageable dans un environnement


de production.

2.5.3 Pratique

code source C ou C++ pour Android

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 et


des tutoriels

2.5.2 Thorie
Dans 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

Nous 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

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 solution


Nous 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 Bilan
Nous 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

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 VoIP


Une 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 pos-

sibilit 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

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 Phone


Google 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

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 rfrences
1 Documents relatifs au projet
Rapport 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 Internet
Portail 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 travail
Total en heures

Guillaume

Maxime

153

151

1
10
5
5
5
10
4
10
20
5
3
10
20

1
15
4
5
10
10
4
10
30
4
0
5
8

20
10
15

20
10
15

Tche
Proposition 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

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

Vous aimerez peut-être aussi