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

publicité
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 application 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 1 est une librairie Java permettant de lire des fichiers MP3.
Le fichier MyPlayer.java 2 illustre 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 disponible 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 5 a également
été modifiée pour gérer le volume.
Une documentation en ligne est disponible à cette adresse 6 .
1.
2.
3.
4.
5.
6.
http://www.javazoom.net/javalayer/javalayer.html
MyPlayer.java
jl1.0.1.modified.jar
LillePlayer.java
JavaSoundAudioDevice.java
http://www.javazoom.net/javalayer/docs/docs1.0/index.html
1
3
Tag ID3
Les tags ID3 7 associent des informations à chaque fichier, comme le nom de l’artiste, le titre du morceau ou le genre.
La librairie jd3Lib 8 permet 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 ajouterez dans le compte rendu toute information que vous jugerez utile.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
http://www.id3.org
http://javamusictag.sourceforge.net/index.html
jid3lib-0.5.4.jar
ID3Reader.java
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/Timer.html
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html
mp3database.zip
http://fr.wikipedia.org/wiki/SQLite
TestSQLite.java
http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC
sqlite-jdbc-3.7.2.jar
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
Téléchargement