jéroli media player auteurs : j.fellus & o.nesty

66
JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Upload: tatienne-fernandes

Post on 03-Apr-2015

108 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

JérOli Media Player

Auteurs : J.FELLUS & O.NESTY

Page 2: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

A quoi ça sert ????

JérOli Media Player

Page 3: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

A quoi ça sert ????

1. Gestionnaire de PlayList

JérOli Media Player

Page 4: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

A quoi ça sert ????

1. Gestionnaire de PlayList2. Outil de Recherche de Mp3 dans l’arborescence

JérOli Media Player

Page 5: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

A quoi ça sert ????

1. Gestionnaire de PlayList2. Outil de Recherche de Mp3 dans l’arborescence3. Player

JérOli Media Player

Page 6: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Exemples de fonctionnement

Page 7: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Exemples de fonctionnement

Approche :

« Je cherche tous les morceaux d’Oscar Peterson qui datent de plus de 10 ans »

Page 8: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Exemples de fonctionnement

Approche :

« J’ai entendu parler de Songs in the key of life, je ne sais pas si c’est le nom de l’album ou le titre d’une chanson… que me propose le JérOli Media Player ??? »

Page 9: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Exemples de fonctionnement

Actions sur la PlayList

Page 10: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Exemples de fonctionnement

Ecoute tranquille de musiques tout en faisant autre chose

Page 11: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Dissection du JérOli Media Player

Ses aspects Internes

Page 12: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

Page 13: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

C Main : Point de démarrage du programmeC

Page 14: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC Main : Point de démarrage du programme

Page 15: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

Interface Configuration Player PlayList en

Cours

Main : Point de démarrage du programme

Page 16: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

Interface Configuration Player PlayList en

Cours

Méthodes :Ajouter à la PlayListRetirer …Charger une PlayListLook&Feel

Main : Point de démarrage du programme

Page 17: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

Main : Point de démarrage du programme

Page 18: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

CC PlayList : Liste de MP3Desc

Main : Point de démarrage du programme

C

Page 19: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

CC PlayList : Liste de MP3Desc

Méthode : Add, remove …IsPlaying?Déplacement de MP3Navigation (précédent, suivant, stop, play)

Main : Point de démarrage du programme

C

Page 20: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CC Application : classe principale d'une application

CC

CC Config : classe qui va gérer les fonctions de configurations

CC PlayList : Liste de MP3Desc

Méthode : Add, remove …IsPlaying?Déplacement de MP3Navigation (précédent, suivant, stop, play)

Player

C

Main : Point de démarrage du programme

Page 21: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CI Interface

Gestion du Splash ScreenMode Quick Play !

Page 22: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire : classes principales

CI Interface

Fenêtre PrincipaleFenêtre Quick Play !

Page 23: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire.repertoireClasses qui gèrent le contenu de l’arborescence

C Répertoire (Arborescence)CVecteur de Données (tableau dynamique de MP3Desc )C

Méthode : FiltrageTriRandom [Debug]

Page 24: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Gestionnaire.repertoireClasses qui gèrent le contenu de l’arborescence

C Répertoire (Arborescence)C

CC MP3Desc (Description d’un fichier Mp3)

* tag ID3 Lire le tag (sous forme compacte « byte[ ] »)

via un Tag Reader* Récupérer les champs* Passer à travers des filtres* Comparaison par critères (critère vector)

Page 25: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Aspect Visuel…

Page 26: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Interface Graphique

Aspect Visuel…

Page 27: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Interface Graphique

Aspect Visuel…

CC WSplashScreen : gère la fenêtre de chargement

Page 28: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC WSplashScreen : gère la fenêtre de chargement

Page 29: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC

CC WFenetrePrincipale : gère toute la fenêtre principale

WSplashScreen : gère la fenêtre de chargement

Page 30: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC

CC WFenetrePrincipale : gère toute la fenêtre principale

CC WQuickPlay : gère toute la fenêtre Quick Play !

WSplashScreen : gère la fenêtre de chargement

Page 31: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Interface Graphique

Aspect Visuel…

CC WConfig : gère toute la fenêtre de configuration

CC

CC WFenetrePrincipale : gère toute la fenêtre principale

CC WQuickPlay : gère toute la fenêtre Quick Play !

WSplashScreen : gère la fenêtre de chargement

CC WRechecheRapide : Affiche le résultat de la recherche rapide

Page 32: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Aspect Visuel…

Page 33: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Composants

Aspect Visuel…

Page 34: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Composants

Aspect Visuel…

CC CCritèreTri : gère le choix des Critères de recherche

Page 35: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Composants

Aspect Visuel…

CC CInfos : gère le tableau d’information

CC CCritèreTri : gère le choix des Critères de recherche

Page 36: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Composants

Aspect Visuel…

CC CInfos : gère le tableau d’information

CC

CC CPlaylist : gère la Liste de chansons

CCritèreTri : gère le choix des Critères de recherche

Page 37: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Composants

Aspect Visuel…

CC CInfos : gère le tableau d’information

CC

CC CPlaylist : gère la Liste de chansons

CC CTitreBlock : Affiche le titre de chaque module

CCritèreTri : gère le choix des Critères de recherche

Page 38: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ORGANISATION DE L’ARBORESCENCE

Tri & Filtrage

Page 39: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 1 : FILTRAGE

REPERTOIRE MP3DESC Visible ?

FILTRE

Filtrer

Page 40: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 1 : FILTRAGEClasse Filtre : Méthode d’exécution du filtre C

Page 41: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 1 : FILTRAGE

N x nbFiltres comparaisons à effectuer (nbFiltres << N)

C = o(N)

Page 42: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 2 : TRI PAR CRITERES

REPERTOIRE Vector<MP3DESC>

CRITERES Vector

MP3DESC

Sort ( ) Custom COMPARATOR

Custom compareTo ( ) method

Visible ?

Page 43: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 2 : TRI PAR CRITERES

Classe Filtre : Méthode d’exécution du filtre C

Page 44: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 2 : TRI PAR CRITERES

Classe MP3Desc : méthode de comparaison par critèresC

Page 45: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 2 : TRI PAR CRITERES

compareTo() : nbCriteres comparaisons à effectuer (dans le pire des cas)

sort() : algorithme issu de la bibliothèque de classes standard – complexité en n.log(n)

nbCriteres << N

C = o(N.log(N))

Page 46: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

lBound : intrBound : int

Parent : MP3Node

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRepertoireTree ( ~Jtree)

DefaultTreeModel

MP3TreeModel

Repertoire

MP3Node

Page 47: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Page 48: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Page 49: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Page 50: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Root

Page 51: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

A X 1

A X 2

A Y 1

B X 3

B X 4

B Y 1

B Y 2

C X 1

C X 5

C X 12

C Y 1

C Z 109

C Z 110

Root

0

1

2

Page 52: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

X 1

X 2

Y 1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

Page 53: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

X 1

X 2

Y 1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

Page 54: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

X 1

X 2

Y 1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

Page 55: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

CRITERE 1 CRITERE 2 CRITERE 3

1

2

1

X 3

X 4

Y 1

Y 2

X 1

X 5

X 5

Y 1

Z 109

Z 109

Root

0

1

2

A

B

C

X

Y

0

1

Page 56: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

Repertoire

1

2

1

3

4

1

2

1

5

5

1

109

109

MP3Node

lBound

rBound

Childs

Page 57: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

Repertoire

MP3 A

MP3 B

MP3 C

MP3 D

MP3 E

MP3 F

MP3 G

MP3 H

MP3 I

MP3 J

MP3 K

MP3 L

MP3 M

MP3Node

lBound

rBound

Childs

GetChildCount ()•Nombre de valeurs différentes dans

[ lBound,rBound ]

GetChild(int i)Parcours jusqu’à trouver ‘i’ valeur différentes et retourne l’indice courant

GetParent ()Chaque nœud garde une trace de son père

TreeModel overrides

parent

Page 58: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

ETAPE 3 : AFFICHAGE HIERARCHIQUE

On doit accéder n x nbCriteres fois à un mp3 du répertoire

nbCriteres << n

C = o(N)

Page 59: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Complexité finale de l’opérationFiltrage + Tri

C = o(N) + o(N.log(N)) + o(N)

C ~ o ( N.log(N) )

Page 60: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Les Librairies Externes

Jlayer : le player

TinyLAF : les thèmes de l’interface Graphique

Page 61: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Les points Négatifs…

• Pas de Menu Clic-Droit pourtant implémenter• Après avoir fait « suivant » la chanson d’après ne se joue pas• Pas de lecture de durée

pas d’indication d’avancement dans la lecturepas de bouton « pause » fonctionnel !

• Pas d’interface Textuelle• Problème de superposition de fenêtres

Page 62: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Les plus de notre projet…

• Quick Play !• Recherche Rapide• Capacités de Filtrage et Tri avancées• Plusieurs thèmes• Redimensionnement pratique de chaque module• Portabilité des PlayLists générées par notre application vers

d’autres plus connues comme Real Player, etc.

Page 63: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Les futures mises à jour de notre projet…

• Tag ID3 v1.1, v2• Edition des tags• Durée, avancement• Le Drag ’N’ Drop

Page 64: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Remerciements

• P.LAROQUE & JL.BOURDON (pour le cours de JAVA)

• B.DERDOURI & M.NAÏMI (pour le cours de calcul de la complexité)

• V.SANS (pour le cours d’UML)

• Les Concepteurs de la JAVADOC

Page 65: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

Modèle UML de notre projet

interfaceMode (boolean)

Application

thread

Player Interface

menuPrincipal

InterfaceTexte

fenetrePrincipale

InterfaceGraphique

Root (String)

Repertoire

configData (Map<String,String)

Config

Tag (byte[])isVisible (boolean)

MP3Desc

fromEnd (boolean)tagSize (int)

TagReader Name (String)Opération (String)Value (Object)

Filtre

Criteres (String[])

CriteresVector

Name (String)Size (int)Sortable (boolean)

Field

isPlaying (boolean)Filename (String)

Playlist

FILTRER

Page 66: JérOli Media Player Auteurs : J.FELLUS & O.NESTY

To be continue…