Como interromper um áudio?

17/04/2015

0

Consegui reproduzir um áudio assim:

package audio;

import java.awt.Button;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;

public class Principal extends JFrame implements MouseListener{
    
    Button btnPlay, btnStop, btnPause;
    Audio mp3p;
    
    public Principal() {
        super("Janela");
        setSize(400,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(null); 
        
        btnPlay = new Button("Play");
        btnPlay.setBounds(10, 10, 80, 30);
        add(btnPlay);
        
        btnStop = new Button("Stop");
        btnStop.setBounds(10, 50, 80, 30);
        add(btnStop);
        
        btnPause = new Button("Pause");
        btnPause.setBounds(10, 90, 80, 30);
        add(btnPause);
        
        btnPlay.addMouseListener(this);
        btnStop.addMouseListener(this);
        btnPause.addMouseListener(this);
    }
    
    public static void main(String[] args) {
       new Principal().setVisible(true); 
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        
        if(e.getSource()==btnPlay){
            System.out.println("Clicou play");
            mp3p = new Audio("C:\\Users\\Usu�rio\\Documents\\NetBeansProjects\\Audio2\\src\\audios\\who_knew.mp3");
            mp3p.play(); 
        }
        else if(e.getSource()==btnStop){
            System.out.println("Clicou stop");
        }
        else if(e.getSource()==btnPause){
            System.out.println("Clicou pause");
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {}
        
    @Override
    public void mouseReleased(MouseEvent e) {}
        
    @Override
    public void mouseEntered(MouseEvent e) {}
        
    @Override
    public void mouseExited(MouseEvent e) {}
    
}


E a classe

package audio;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

public class Audio {
    
    File file;
    FileInputStream fis;
    BufferedInputStream bis;
    Player player;
    
    public Audio(String url) {
        try{
            file = new File(url);
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);

            play();
        }catch(IOException e){}
    }
    
    public void play(){
      try{
            player = new Player(bis);
            player.play();
        }catch(JavaLayerException ex){}  
    }
    
    public void stop(){
       player.close();
    }
    
}


Agora preciso saber como parar e pausar o áudio.
percebi que durante a reprodução a aplicação fica toda travada impedino o acionamento de outro botao e até o fechamento da aplicação.
Reinilton

Reinilton

Responder

Posts

21/04/2015

Ronaldo Lanhellas

Você precisa trabalhar com Threads, ou seja, criar uma Thread separada para executar o áudio, assim a sua aplicação não ficará travada.

Segue:https://www.devmedia.com.br/trabalhando-com-threads-em-java/28780
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar