
3. Le Serveur sur le PC 
 
Dans ce projet, nous avons implémenté deux classes:  
-Server.java  
-XmmsShellHelper.java. 
 
1.Server.java  
Server.java a été créée afin d'établir la connexion via bluetooth coté ordinateur. Pour 
cela, on utilise rfcomm car il est simple d'utilisation et qu'il envoi des messages non 
bornés.  
Cette classe permet à un client (téléphone) de se connecter et de se déconnecter autant de 
fois qu'il le souhaite. Elle utilise l'objet provenant de la classe XmmsShellHelper.java. 
C’est dans cette partie que le serveur va répondre aux sollicitations du téléphone en 
envoyant à celui-ci les données qu’ils demandent. 
 
2.XmmsShellHelper.java 
XmmsShellHelper.java permet de gérer le logiciel Xmms. Cette classe utilise le logiciel 
Xmmsctrl qui permet de diriger Xmms à partir d'un shell. Comme par exemple 
« Xmmsctrl play » qui va lancer le « play » sur xmms. Par ce même procédé, nous avons 
implémenté les fonctions de contrôle du volume ainsi que « play, stop, pause ,next, 
prev». 
 
 
4. Le Client sur le téléphone 
 
En ce qui concerne la partie sur le téléphone , nous n'avons qu'une seule et unique classe 
qui se charge de tout , elle va donc devoir gérer la connexion avec le serveur , les 
communications , la création de l'interface graphique ainsi que tout le cote événementiel 
(quand on clique sur un bouton par exemple). 
 
Pour gérer tout cela en une seule classe nous avons procéder par étape:  
Tout d'abord , nous créons l'interface graphique et tous les éléments dont on aura besoin 
de (StringItem , TextBox ....) , pour certains nous leur ajoutons un listener qui permettra 
, de définir les comportements lors d'un évènements. 
 
Ensuite grâce a la fonction connect(String url) qui utilise un StreamConnection , on crée 
la connexion avec le serveur proposant le service xmms-bluetooth ( a l'heure actuelle , 
nous codons l'adresse a utiliser , via le protocole btspp , en dur , alors qu'on pourrait faire 
cela dynamiquement). 
 
Une fois la connexion établie , il faut pouvoir communiquer de façon bi-directionnelle 
avec le serveur , nous avons donc mis en place deux flux de stream grâce a un Input et 
un Output stream , on pourra donc recevoir des informations et envoyer des directives 
grâce a des tableaux de bytes. 
 
C'est justement  les actions causées par les conséquences d'un clique , l'envoi de données 
ou/et la réception ; par exemple en cliquant sur vol+ on augmentera la valeur du volume