Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    termine riproduzione traccia audio

    Salve a tutti,ho creato un player di file musicali in formato mp3 e wav...riproduco i file mp3 tramite la libreria JMF (java media framework,e il plugin MP3) ma ho un problema:non riesco a determinare l'evento della terminazione di un brano:

    per riprodurre un file mp3 opero in linea di massima in questo modo:


    codice:
    import javax.swing.Timer;
    ....
    ....
    Timer t;
    Player p = Manager.createRealizedPlayer(fileDaRiprodurre.toURI().toURL());
    p.start();
    t=new Timer(300,new ActionListener(){
                public void actionPerformed(ActionEvent ae){
                       //QUI SVOLGO DETERINATI CONTROLLI E AZIONI (AD ESEMPIO CONTROLLO LA TERMINAZIONE DELLA CANZONE COSì:
                       if(p.getMediaTime().getSeconds() == p.getDuration().getSeconds())
                            System.out.println("canzone terminata");                
                }
            });
            t.start();

    ma pur facendo nel modo sopra mostrato al termine della canzone (momento in cui il tempo corrente di rirpoduzione e il tempo totale della canzone dovrebbero essere uguali) non mi entra nell'if...perchè?dove sbaglio?come posso risolvere?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Ho appena notato che ad esempio nell'actionPerformed mettendo:

    codice:
    System.out.println(p.getMediaTime().getSeconds()+"  -  "+ p.getDuration().getSeconds());
    alla fine della canzone stampati i due valori che non sono uguali,esempio:
    245.81224489700003 - 245.866
    l'errore penso sia questo,devo arrotondarli ad un punto tale da essere confrontabili...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Edit:
    facendo ad esempio:

    codice:
    if(Math.ceil(p.getMediaTime().getSeconds()) == Math.ceil(p.getDuration().getSeconds())){
                        System.out.println("entratoooo!");
    funziona!rischio di tagliare frazioni di secondo della traccia audio ma funziona!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.