TP : jTunes 1 Contexte 2 Lecture de fichiers MP3 : JLayer

Université Lille 1 - Master 1 informatique 2012-2013
IHM
TP : jTunes
Objectifs
concevoir et mettre en oeuvre une interface
1 Contexte
Les lecteurs de fichiers mp3 actuels permettent d’organiser facilement des morceaux de musique par
ordre alphabétique suivant l’album, le titre, l’artiste ou le genre. Les utilisateurs peuvent lire les morceaux
séquentiellement suivant les critères de tri choisis. Cependant la lecture aléatoire reste un mode de lecture
privilégié.
Les possibilités offertes par la lecture aléatoire sont souvent limitées. Par exemple, il n’est pas toujours
possible de voir quels seront les morceaux prochainement lus. Quand cela est faisable, il n’est pas possible
de supprimer des morceaux ou de les réordonner. Il n’est pas non plus toujours possible de rejouer les
derniers morceaux dans ce mode ou de relancer un mélange sur les prochains morceaux à jouer. Le filtrage
des morceaux utilisés pour la lecture aléatoire peut être obscur. Par ailleurs quand plusieurs personnes
ont accès à une même bibliothèque musicale, il est impossible d’associer les morceaux à un ou plusieurs
utilisateurs. Dans ce cas, la lecture aléatoire peut contraindre un utilisateur à écouter des morceaux qui
ne correspondent pas à ses goûts.
L’objectif de ce projet est de proposer une interface possédant les fonctionnalités de base d’une ap-
plication de lecture de fichiers mp3 et de proposer des fonctionnalités avancées de lecture aléatoire.
En outre, votre application doit gérer les fonctionnalités suivantes :
lire, arrêter, mettre en pause un morceau de musique
afficher titre, artiste, album
enchaîner la lecture des morceaux
trier les morceaux suivant différents critères (artiste, genre ...)
afficher de manière optionnelle une vue sur les informations détaillées du morceau en cours de
lecture
proposer une barre de recherche avec affichage dynamique des résultats
ajout d’informations comme le nombre de lectures d’un morceau
proposer des fonctionnalités de lecture aléatoire avancée
optionnellement, créer/éditer des listes de lecture
2 Lecture de fichiers MP3 : JLayer
JLayer 1est une librairie Java permettant de lire des fichiers MP3.
Le fichier MyPlayer.java 2illustre un exemple d’utilisation de la librairie. Le fichier jl1.0.1.modified.jar 3
est nécessaire à la compilation. Notez que ce fichier a été modifié par rapport à la version originale dispo-
nible en ligne, afin de permettre la mise en pause, l’obtention de la durée et l’avance et le retour rapide. Le
fichier source de la classe LillePlayer est disponible ici 4. La classe JavaSoundAudioDevice 5a également
été modifiée pour gérer le volume.
Une documentation en ligne est disponible à cette adresse 6.
1. http://www.javazoom.net/javalayer/javalayer.html
2. MyPlayer.java
3. jl1.0.1.modified.jar
4. LillePlayer.java
5. JavaSoundAudioDevice.java
6. http://www.javazoom.net/javalayer/docs/docs1.0/index.html
1
3 Tag ID3
Les tags ID3 7associent des informations à chaque fichier, comme le nom de l’artiste, le titre du mor-
ceau ou le genre.
La librairie jd3Lib 8permet de lire les tags ID3. Le fichier jid3lib-0.5.4.jar peut directement être
téléchargé ici 9. Le fichier ID3Reader.java 10 montre un exemple d’utilisation.
4 Recherche dynamique
L’objectif de la recherche dynamique est de commencer à afficher des résultats de recherche en cours
de frappe. Plus précisément, à chaque appui sur une touche du clavier, il faut armer un timer de courte
durée de vie. Si le timer expire, alors il faut lancer la requête. Si une autre touche est enfoncée avant son
expiration, alors il faut le réarmer. En pratique, une durée de vie du timer de 200ms fonctionne bien.
La requète doit se faire de manière asynchrone (i.e. elle doit permettre l’interaction) et les résultats
doivent être affichés au fur et à mesure qu’ils arrivent.
L’objectif est d’obtenir un résultat similaire à la nouvelle interface de recherche de Google. Un moyen
de tester votre recherche quand le nombre d’éléments à rechercher est faible est d’ajouter un sleep dans
la recherche pour vérifier l’affichage progressif des résultats et vérifier que l’interface reste interactive
pendant la recherche.
Pour implémenter la recherche dynamique, vous utiliserez la classe Timer 11 pour implémenter le timer
ainsi que la classe Thread 12 pour réaliser la requête de manière asynchrone.
5 SQLite
Pour tester votre application, en particulier la partie concernant la recherche dynamique, l’archive
mp3database.zip 13 (contient plus de 13000 entrées), contenant le fichier mp3database.sqlite au format
SQLite 14 est mis à votre disposition. Un exemple 15 de lecture des données de la base est mis à votre
disposition. Il utilise la librairie SQLiteJDBC 16 (sqlite-jdbc-3.7.2.jar 17). Il existe de nombreux utilitaires
pour visualiser le contenu d’un fichier SQLite, comme par exemple l’extension SQLite Manager 18 pour
Firefox.
6 Travail demandé
Vous rendrez sur Moodle une archive zip contenant un jar exécutable de votre application, un compte
rendu de 3-4 pages au format pdf ainsi qu’un répertoire contenant le code source de votre application.
Le compte rendu devra par ailleurs expliquer le fonctionnement de l’application avec une capture
d’écran de l’interface. Vous détaillerez dans votre compte rendu comment vous avez respecté
le modèle MVC en vous appuyant sur un diagramme de classes de votre application. Vous
détaillerez également les fonctionnalités que vous proposez pour améliorer la lecture aléatoire. Vous ajou-
terez dans le compte rendu toute information que vous jugerez utile.
7. http://www.id3.org
8. http://javamusictag.sourceforge.net/index.html
9. jid3lib-0.5.4.jar
10. ID3Reader.java
11. http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/Timer.html
12. http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html
13. mp3database.zip
14. http://fr.wikipedia.org/wiki/SQLite
15. TestSQLite.java
16. http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC
17. sqlite-jdbc-3.7.2.jar
18. https://addons.mozilla.org/en-us/firefox/addon/sqlite-manager/
2
Au lancement de votre application, celle-ci ne doit pas commencer par demander où se trouve le ré-
pertoire contenant les fichiers mp3 ou commencer à parcourir le disque dur à la recherche de fichiers mp3.
Votre archive contiendra 2 ou 3 fichiers mp3 libres de droits et se lancera dans un état fictif correspondant
à une utilisation répétée de l’interface. L’application doit utiliser les 13000 entrées du fichier SQLite. La
lecture d’une des entrées lancera la lecture d’un des 3 fichiers mp3 et l’enchainement du morceau suivant,
par exemple, lancera la lecture d’un des deux autres fichiers.
Les critères de notation suivants seront utilisés pour évaluer votre travail :
Critère d’utilisabilité (pertinence des solutions proposées pour la lecture aléatoire) :
L’interface proposée répond-elle au problème posé ?
L’interface permet-elle d’atteindre l’objectif fixé ?
L’interface permet-elle d’atteindre l’objectif fixé rapidement et avec un effort minimal ?
L’interface est-elle satisfaisante sur des critères subjectifs (satisfaction utilisateur) ?
Autres critères :
Le jar exécutable fonctionne-t-il ?
L’application est-elle robuste (plantages, comportements bizarres) ?
Respect du modèle MVC
Réalisation correcte de la recherche dynamique
Mise en oeuvre de glisser-déposer, annuler/refaire, raccourcis clavier, reconnaissance de gestes
Le compte rendu est-il clair, pertinent, bien présenté et au format pdf ?
Clarté du code source
3
1 / 3 100%

TP : jTunes 1 Contexte 2 Lecture de fichiers MP3 : JLayer

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !