PROJET RESEAU AVANCE Contrôle à distance de XMMS via bluetooth 1.

advertisement
Camillos Renaud
Hertz Florent
Lunven Thomas
Plaisance Remy
Master SDRP 2006-2007
PROJET RESEAU AVANCE
Contrôle à distance de XMMS via bluetooth
1. Introduction
Le projet consiste en la réalisation d'une commande à distance pour XMMS à l'aide d'un
Sony-Ericsson p910i via bluetooth. XMMS est un lecteur audio open-source disponible
sur la grande majorité des distributions linux.
2. Réalisation
Le premier choix que nous avons dû faire est la manière de faire transiter les
informations de XMMS vers notre application "serveur" côté PC. XMMs est doté d'un
système de plugin qui permet d'accéder aux différentes fonctions du lecteur mais étant
donné le temps imparti pour le projet et celui qu'il nous faudrait pour connaître les
interfaces nous avons opté pour une autre solution, utiliser une application shell tierce
permettant de contrôler les fonctions de base d'XMMS.
Nous avons choisi xmmsctrl (http://user.it.uu.se/~adavid/utils/) une application open
source qui en lui passant les commandes en arguments (comme "vol" pour le volume ou
"playlist" pour obtenir la liste de lecture complète) imprime le résultat sur la sortie
standard. Cela nous a permis de réaliser le projet entièrement en Java (5.0 côté serveur et
J2ME côté téléphone).
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
puis on enverra la directive pour ajuster le volume sur xmms, avec la methode next on
dit qu'on veut avancer dans la playlist puis on reçoit le titre du nouveau morceau
Ces évènements sont gérés grâce a la méthode commandAction ou il suffit de rajouter un
cas si on veut rajouter un événement (a condition d'avoir aussi rajouter le listener
correspondant au bouton)
De plus , une fois la connexion établie , il y a une prise d'information pour connaître le
titre courant et le volume courant au moment de la connexion
Une fois que l'on a finit de manipuler xmms il suffit de quitter la middlet et la méthode
disconnect() sera appellée et fermera la connexion .
5. Utilisation du logiciel
Pour utiliser le logiciel, il faut installer sur le téléphone, les fichiers ProjetBT.jar et
ProjetBT.jad disponible dans l’archive. Ces fichiers sont obtenus à partir du fichier
source Client.java et compilés avec l’aide du J2ME Wireless Toolkit. Dans ce fichier
Client.java se trouve l’adresse du serveur codé en dur ainsi que le channel, il faut donc
modifier ce fichier puis le recompiler pour pouvoir l’utiliser.
Une fois cela, fait, il convient de lancer le serveur sur le PC, après avoir compilé les
fichiers Server.java et XmmsShellHelper.java (ne pas oublier de bien installer la
bibliothèque Rfcomm), il faut lancer le serveur avec la commande Server suivi de
l’addresse propre du serveur et du channel de communication.
Pour le bon fonctionnement du programme, Xmms doit être lancé et une playlist doit
être déjà insérée.
Après le lancement du serveur sur le PC, nous pouvons lancer le programme
ProjetBT sur le téléphone et utiliser le stylet du téléphone pour commander l’interface
graphique et donc Xmms.
6. Conclusion et extensions possibles
Conformément à nos attentes en début de projet, nos objectifs principaux ont été
atteint.
Nous avons établi une connexion bidirectionnelle entre le client sur le téléphone et le
serveur sur le PC. Cette connexion permet au téléphone d’envoyer des données au
serveur, permettant ainsi de gérer l’interface graphique du téléphone, mais aussi au
serveur d’envoyer des données au téléphone pour avoir une synchronisation possible
entre les 2 éléments.
Ainsi l’interface graphique de notre téléphone permet d’effectuer les commandes de
bases d’un lecteur Audio comme Xmms, tel que lecture, pause, stop, changement de
chanson, changement du volume.
Il reste cependant bien entendu des évolutions et améliorations possibles :
- dans un premier temps, la mise en place d’un service SDP pour pouvoir gérer
dynamiquement les connexions entre téléphone et PC.
- mais également favoriser une meilleur gestion de la playlist. Actuellement, sur le
téléphone ne s’affiche que la musique en cours, une évolution serait de permettre sur le
téléphone un affichage complet de la playlist de Xmms, pour permettre de choisir
directement n’importe quel fichier a lire depuis le téléphone.
- enfin nous pourrions obtenir une gestion événementielle au niveau logiciel, pour
permettre qu’une modification sur Xmms directement avec le PC se répercute sur le
téléphone.
Téléchargement