JLayer Thread

2 respostas
Filipe_A

Ola gente, estou com problemas…

Tenho um programa que toca mp3 com o Jlayer, mas quando ele começa a tocar ele não faz outra coisa a não ser isso.

Minha aplicação não avança ! ela fica esperando o som acabar.

Tem alguma forma de desabilitar isso ? O que eu devo fazer ?

Obrigado.

2 Respostas

laurovitor

Ola. cara sou meio novo em java mais porem acho que posso dar uma luz no seu problema pq ja passei por issu. porem eu estou com um outro problema que talvez algum possa me ajudar…

bom primeiro vamor resolver o seu problema.

estou utilizando o jLayer 1.0.1

MP3.java

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

public class MP3 extends Thread {

// Objeto para nosso arquivo MP3 a ser tocado
    private File mp3;
// Objeto Player da biblioteca jLayer. Ele tocará o arquivo MP3
    private Player player;
    public static boolean musicaAtiva = false;

    public MP3(File mp3) {
        this.mp3 = mp3;
    }

    @Override
    public void run() {
        try {
            FileInputStream fis     = new FileInputStream(mp3);
            BufferedInputStream bis = new BufferedInputStream(fis);
            this.player = new Player(bis);
            //System.out.println("Tocando!");
            musicaAtiva = true;
            this.player.play();
            //System.out.println("Terminado!");
            musicaAtiva = false;
        } catch (Exception e) {
            System.out.println("Problema ao tocar a música: " + mp3);
            //e.printStackTrace();
        }
    }
}

e para chamar esta aplicação vc utiliza da seguinte forma:

String path = "C:\musica.mp3";
    File mp3File = new File(path);
    MP3 musica = new MP3(mp3File);
    if(jukeboxPainel.MP3.musicaAtiva == false) musica.start();

o meu problema e que eu nao consigo dar um Stop ou pause na musica. mais pelo menos assim ele toca a musica e continua a aplicação.

A

voce tem que colocar uma Thread para ela executar em segundo plano
tipo assim
[code] public void playMp3(final boolean valor) {
try {
\\aqui e o local onde vc quer que comece a executar
new Thread() {
public void run() {
try {
FileInputStream fis = new FileInputStream(mp3);
BufferedInputStream bis = new BufferedInputStream(fis);
Player player = new Player(bis);
if(valor == false){
player.play();

}

else
System.exit(0);


} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
//final da Thread
} catch (Exception e) {
e.printStackTrace();
}
}

Criado 3 de maio de 2009
Ultima resposta 14 de jan. de 2013
Respostas 2
Participantes 3