Audio

3 respostas
A

SEGUINTE, ESTOU USANDO UM MECANISMO SIMPLES PARA TOCAR UM SOM!

try {
            URL caminho = new URL("http://localhost/portalatendimentos/audio1.wav");
            AudioClip arquivoASerTocado = Applet.newAudioClip(caminho);
            arquivoASerTocado.play();
        } catch (MalformedURLException ex) {
            JOptionPane.showMessageDialog(null, ex);
        }

porem estou com dois problemas…
primeiro preciso pausar o som! e nao achei nenhum metodo para isso, alguem sabe como posso pausar??

e em segundo, eh que consigo instancia somente dentro de um actionPerformance, quero instancio dentro da classe mas nao consigo pq tenho que colocar try e catch!

alguem ae sabe me ajudar, minha tarrefa eh bem facil

tocar/parar/pausar um audio .wav

Grato.

3 Respostas

al.barbosa

Augusto,

Acho que o exemplo abaixo responde às dúvidas.
Obs.: o play() toca o arquivo uma vez, o loop() toca continuamente, e o stop() interrompe a execução.

Adaptei este exemplo de [url]http://www.landofcode.com/java-tutorials/java-sounds.php[/url]

import java.awt.event.*; 
import java.awt.*;
import java.applet.*; 
import java.net.*; 
import javax.swing.*;

class AudioFrame extends JFrame implements ActionListener{
   AudioClip bach;
   JButton play, loop, stop;
   
   public AudioFrame(){
      play = new JButton("Play");
      play.addActionListener(this); 
      add(play); 
    
      loop = new JButton("Loop");
      loop.addActionListener(this);
      add(loop);

      stop = new JButton("Stop");
      stop.addActionListener(this);
      add(stop);

      try{
         bach = Applet.newAudioClip(new URL("file:onestop.mid"));
      }
      //if there is a problem with the URL 
      //then this is the exception to be used 
      catch (MalformedURLException mfe){
         System.out.println("An error occured, please try again...");
      }
      setLayout(new FlowLayout());
      setSize(220, 150); 
      setVisible(true);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
   }

   public static void main(String[] args){
      AudioFrame AF = new AudioFrame();
   }
   
   public void actionPerformed(ActionEvent e){
      //the action event handler tracks which button 
      //is pressed and performs an action accordingly 
      if (e.getSource() == play){
         bach.play();
      }
      if (e.getSource() == loop){
         bach.loop();
      }
      if (e.getSource() == stop){
         bach.stop();
      }
   }
}
A

Obrigado al.barbosa,
porem, fazer tocar o som, parar e ficar tocando (loop) eu consigo!

meu problema é que preciso pausar o audio

ou seja,

preciso de mais dois botões

PAUSAR e CONTINUAR

para caso a pessoa esteja na metade do audio, possa pausar e continuar daonde foi pausado!

pesquisei horrores ja mas nao acho como fazer isso…

Grato!

al.barbosa

Augusto,

Sugiro você ver o Java Media Framework e Java Sound, abaixo um link:

http://www.consultware.com.br/marcelo/bd/java/javamidiaframework.pdf

Há uma outra abordagem no link abaixo que permite tocar e pausar um arquivo. Consegui usar o AudioPlayer.player.start(as) e AudioPlayer.player.stop(as). Mas o autor diz que esta técnica usa recursos não documentados. Não há garantia de que vá funcionar em qualquer SDK.

http://www.javaworld.com/javatips/jw-javatip24.html

Criado 6 de junho de 2012
Ultima resposta 8 de jun. de 2012
Respostas 3
Participantes 2