Mplayer Remote Midlet Am au r y Fr an cois , An t h on y Ch at ellier , Mickael Mela s , Cyp r ien Car m ier Introduction ● Le but du projet est de créer une télécom m ande de contrôle de Mplayer via Bluetooth. Plan de la présentation ● MIDlet : présentation de l'interface graphique sur le téléphone. ● Com m unication Bluetooth du point de vue client et serveur. ● Intéraction du serveur Java avec Mplayer. ● Dém onstration. ● Evolutions envisagées. MIDlet ● Présentation générale, aspect graphique. Communication Bluetooth ● Objectifs initiaux ● Problèm es rencontrés ● Com m unication du côté client ● – Essai détection de service – Bilan : adresse MAC en dur dans le code Com m unication côté serveur – Création d'un service, enregistrement auprès du serveur SDP. Communication avec Mplayer ● Interaction Java – C+ + : introduction JNI ● Découverte de la Xlib : début de solution proposée par le projet n°10 de l'an passé. Introduction JNI ● Classe JAVA où l'on déclare les fonctions souhaitées. public class HelloWorld { static { System.loadLibrary("HelloWorld"); } public static native void printCpp(); public static void main(String args[]) { System.out.println("Hello "); HelloWorld.printCpp(); } } Introduction JNI (suite) ● Squelette généré par la com m ande javah * DO NOT EDIT THIS FILE ­ it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorld * Method: printCpp * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloWorld_printCpp (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif / Découverte Xlib ● Ex em ple de code pour l'envoi d'une sim ulation de pressage de touche. Display* disp = XOpenDisplay( NULL ); if( disp = = NULL ) return; XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_F ), True, CurrentTime ); XTestFakeKeyEvent( disp, XKeysymToKeycode( disp, XK_F ), False, CurrentTime ); XcloseDisplay(disp); Démonstration... Conclusion ● Ex tensions possibles : – Sélection du fichier via un navigateur implémenté sur la télécommande – Détection de service Bluetooth – Créer une sorte de plugin pour Mplayer au lieu de passer par un serveur dédié. (Etudier l'utilisation de la commande - slave, listes des commandes disponibles avec - input cmdlist) – Visualisation sur le téléphone de l'avancement du film (scrollbar, problème de retour avec Mplayer)