Bonjour,
j'utilise JLayer (un .jar) pour lire des musiques .mp3.
J'ai implémenté cette classe et j'aimerais avoir quelques avis ^^' :
Le défaut ici est qu'on ne peut pas mettre la musique en pause (même si j'en aurais pas besoin pour l'utilisation que je vais en faire) et je n'arrive pas à lire la musique en boucle ^^'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 //POUR LA LECTURE D'UNE MUSIQUE .MP3 //LE TRAITEMENT EST TRES SIMPLE, CEPENDANT //UNE FOIS QU'ON ARRETE UNE CHANSON, IL FAUT DESALLOUER L'INSTANCE MusiqueMP3 DU CODE QUI L'A //INSTANCIE ET EN REALLOUER UNE NOUVELLE CAR ON NE PEUT PAS METTRE UNE MUSIQUE EN PAUSE public class MusiqueMP3 { private String cheminFichier; private boolean lireEnBoucle; //Pour savoir si la musique doit être lue en boucle ou non private Player lecteur; //Pour la lecture du fichier private Thread thread; //Thread utilisé pour la lecture de la musique public MusiqueMP3(String cheminFichier, boolean lireEnBoucle) { super(); setCheminFichier(cheminFichier); setLireEnBoucle(lireEnBoucle); FileInputStream fichier = null; try { fichier = new FileInputStream(this.cheminFichier); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { lecteur = new Player(fichier); } catch (JavaLayerException e) { // TODO Auto-generated catch block e.printStackTrace(); } //THREAD DE LA METHODE lire() initThread(); } //INITIALISER/REINITIALISER LE THREAD DE LECTURE public void initThread() { this.thread = new Thread() { public void run() { try { lecteur.play(); //On lit la musique au moins une fois //LOOP? while(isLireEnBoucle() && lecteur.isComplete()) { //Si on termine la lecture de la musique lecteur.close(); lecteur.play(); } } catch (JavaLayerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; } //POUR LIRE LE FICHIER public void lire() { thread.start(); } //POUR ARRETER LA LECTURE public void arreter() { if(thread.isAlive()) { thread.interrupt(); lecteur.close(); } } public boolean isLireEnBoucle() { return lireEnBoucle; } public void setLireEnBoucle(boolean lireEnBoucle) { this.lireEnBoucle = lireEnBoucle; } public Thread getThread() { return thread; } public void setThread(Thread thread) { this.thread = thread; } public String getCheminFichier() { return cheminFichier; } public void setCheminFichier(String cheminFichier) { this.cheminFichier = cheminFichier; } public Player getLecteur() { return lecteur; } public void setLecteur(Player lecteur) { this.lecteur = lecteur; } }
J'ai entendu parler de la Java Media Framework mais je ne sais pas s'il est préférable de l'utiliser à la place de JLayer ou non...
De plus, d'après ce que j'ai vu c'est un installateur pour Windows, Linux, ... C'est donc pas un .jar...?
Merci d'avance pour vos avis... ^^'
Partager