Académique Documents
Professionnel Documents
Culture Documents
Rapport Projet ASR - Faure Et Raoust - Copie PDF
Rapport Projet ASR - Faure Et Raoust - Copie PDF
DUNE APPLICATION
DE COMMUNICATION
BLUETOOTH SUR ANDROID
Projet de fin dtude
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
1 Prsentation du projet
1.1 Le sujet
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
30
30
31
Conclusion
32
Bibliographie et rfrences
34
Charge de travail
32
32
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 4
1 Prsentation du projet
1.1 Le sujet
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 5
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.
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 7
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 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
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 8
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.
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.
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 9
Android
SDK
iPhone SDK
Android SDK
Obtention du SDK
Gratuit
IDE supports
Xcode
Plate-forme de dveloppement
Mac
Langage applicatif
Objective C
Java
http://developer.apple.com/
iphone
http://developer.android.
com
Emulateur
Oui
Oui
Gestion du Bluetooth
dans lmulateur
Non
Non
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
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
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
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
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 14
Le driver standard
permet dinteragir avec
le systme dexploitation
pour les usages standards:
synchronisation du tlphone avec les contacts de
lordinateur, le calendrier
etc.
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-
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.
http://www.frandroid.com/4178/comparatif-htc-hero-etsamsung-galaxy/
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 15
288MB de RAM
512MB de mmoire interne et slot microSDHC
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 16
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
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 :
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 19
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 20
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.
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
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 23
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.
Implmentation de
fonctions du systme
dexploitation qui ne sont
pas prsentes dans la
bibliothque Java
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 24
accs plus de fonctionnalits que ce que propose lApplication Framework. Le NDK fournit:
2.5.3 Pratique
Une manire de dployer ce code compil sur un matriel Android et de lintgrer une application Android crite en
Java
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
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,
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.
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 29
Guillaume Faure & Maxime Raoust - Telecom SudParis - Janvier 2010 Page 30
Conclusion
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
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