Le Serveur
La communication de notre serveur avec l’application mplayer a été développé grâce à
la technologie JNI et les commandes disponibles dans la bibliothèque Xlib. Bien que mplayer
possède un mode slave, permettant de lui passer les commandes sur l’entrée standard, nous
n’avons pas eu le temps d’orienter notre code vers cette solution. En effet nous n’avions pars
remarqué dans un premier temps cette option du logiciel et elle ne nous a été communiqué que
lors de notre dernier rendez vous avec le professeur. Nous avions déjà passé 4 jours à
comprendre pourquoi notre code ne fonctionnait pas alors que le problème venait de la clé
USB Bluetooth qui était tout simplement défectueuse. Plutôt donc que de passer le dernier
jour qui nous restait sur la création d’un nouveau serveur de communication, nous avons
préféré continuer avec le système existant tout en essayant de vérifier pas à pas chaque point
de notre programme (notamment le problème de communication entre le téléphone et le pc où
nous avions beaucoup de retour d’erreur comme quoi la commande n’était pas envoyée).
Xlib
Commençons par expliquer le rôle de Xlib dans notre projet. mplayer fonctionnant en
ligne de commande, il existe une liste de raccourcis claviers permettant de le contrôler
facilement. Ainsi lorsque l’on veut passer la vidéo en plein écran, il suffit de presser la touche
« f ». Nous avons alors décidé de réutiliser les raccourcis claviers pour à notre tour faire
parvenir les commandes de notre téléphone vers le programme. S’appuyant sur un des
rapports de l’année passée, nous avons pu constaté que Xlib permettait de faire des
simulations d’envois de lettres via une commande XSendEvent(). Après plusieurs essais non
concluant sur l’utilisation de cette fonction, nous nous sommes réorientés vers une autre
fonction de Xlib : XXX. Le seul inconvénient de cette méthode est que le signal sera envoyé à la
fenêtre ayant le focus. Il faut donc lors de l’utilisation de notre serveur que le focus soit sur la vidéo
que nous sommes entrain de lire.
JNI
Xlib étant écrit en C, il a fallu l’interfacer avec notre serveur écrit en java. Nous avons donc du
utiliser les JNI qui permettent de charger dynamiquement une librairie statique dans un programme de
type java. Ici se trouve le véritable intérêt de l’utilisation de Xlib pour notre projet. En effet il doit être
faisable d’envoyer une simulation de touche à partir d’un programme java directement, sans passer par
les commandes Xlib. Notre intérêt dans le projet a été de découvrir un maximum de point technique
pour lors inconnu de chacune des personnes du groupe. L’utilisation des JNI étant ici possible, nous en
avons saisis l’occasion.