Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2915 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème avec un JSlider dans un lecteur audio

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec un JSlider dans un lecteur audio

n°1548354
frankie_fl​owers
Posté le 24-04-2007 à 20:12:44  profilanswer
 

Je suis en train de développer un lecteur de média basique, qui utilise JMF.

 

J'ai réussi à naviguer dans le fichier en déplaçant un JSlider. (le composant Player possède une methode setMediaTime)
Naturellement, je voudrais aussi que le curseur de ce JSlider se déplace tout seul lors de la lecture.

 

J'ai donc un thread qui recupere tous les X ms le temps actuel de la video, et qui actualise la position du curseur en fonction :

Code :
  1. for(;;) {
  2.                 Thread.sleep(200);
  3.                     if (player.getState()==600) {
  4.                           Double seconds = player.getMediaTime().getSeconds();
  5.                           flag = true; // bricolage, po bieng
  6.                           slider.setValue(seconds.intValue());
  7.                           flag = false; // bricolage
  8.                 }
  9. }
 

D'autre part j'ai dans ma classe de l'interface graphique un Listener qui écoute le jSlider (noms différents mais y'en a qu'un) et qui bouge dans la vidéo quand on déplace le curseur. Le problème, c'est que le code suivant doit s'executer quand l'utilisateur bouge le slider, et PAS quand le thread modifie la valeur du slider.

 

La seule solution que j'ai trouvée pour empêcher ça, c'est l'utilisation d'un flag, méthode moche et pas vraiment fiable, qui permet de repérer quand la modif de la valeur du JSlider vient du thread.

Code :
  1. private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {       
  2.             if (!jSlider1.getValueIsAdjusting() && mediaPlayer1.getState()==600 && !thread.flag) {
  3.                     Time i = new Time(new Double(jSlider1.getValue()));
  4.                      mediaPlayer1.setMediaTime(i);
  5.              }
  6. }

Sauriez-vous comment faire ça proprement  :jap:  ?

Message cité 1 fois
Message édité par frankie_flowers le 24-04-2007 à 20:16:18
mood
Publicité
Posté le 24-04-2007 à 20:12:44  profilanswer
 

n°1558439
frankie_fl​owers
Posté le 10-05-2007 à 20:00:21  profilanswer
 

Bon j'ai trouvé une solution plus fiable, mais c'est pas encore super clair je trouve : je unregister le Listener avant chaque mise à jour auto, et le register juste après

frankie_flowers a écrit :

Code :
  1. for(;;) {
  2.                 Thread.sleep(200);
  3.                     if (player.getState()==600) {
  4.                           Double seconds = player.getMediaTime().getSeconds();
  5.                           slider.removeListener(blabla)
  6.                           slider.setValue(seconds.intValue());
  7.                           slider.addListener(blabla)
  8.                 }
  9. }


Y'a mieux comme solution pour une seek-bar ?


Message édité par frankie_flowers le 10-05-2007 à 20:00:45
n°1558524
wapcamer
Posté le 11-05-2007 à 00:35:02  profilanswer
 

Salut,
 
oui en principe il ya mieux.
 
Les players de JMF possèdent des contrôles qui permettent de controller un certain nbre de paramètres, genre volume du son, seekbar etc...
 
Regarde la classe javax.media.control.FramePositioningControl et les exemples de JMF. Ils sont assez faciles à réutiliser et améliorer.
Tiens, tu peux essayer qqch dans le genre de  

Code :
  1. FramePositioningControl fpc = (FramePositioningControl)player.getControl("javax.media.control.FramePositioningControl" );


 :hello:


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
n°1558541
frankie_fl​owers
Posté le 11-05-2007 à 02:56:14  profilanswer
 

Merci :jap: je regarde ça


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème avec un JSlider dans un lecteur audio

 

Sujets relatifs
Problème avec les tableaux[MySQL/JDBC/JAVA] Problème de connexion à une DB
probléme de paramétrage CreateWindowEx (win32)probleme d'affichage sous ie
Problème de namespaceProblème avec le positionnement du corps
Problème avec une calculatrice[CSS?] Problème de titre avec IE.
Problème avec Debug avec log4j[.Net - VSTO] Problème de tableaux dans word
Plus de sujets relatifs à : Problème avec un JSlider dans un lecteur audio


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR