como faço para tocar um som em java?? Tem como controlar o volume???
Alguem sabe onde posso procurar?
Valeu !!!
OBS: Se possivel sem utilizar um Applet e sim um frame.
Diego Coronel Cavalcante
como faço para tocar um som em java?? Tem como controlar o volume???
Alguem sabe onde posso procurar?
Valeu !!!
OBS: Se possivel sem utilizar um Applet e sim um frame.
Diego Coronel Cavalcante
DiegoCoronel, tem um exemplo pra quem instala o JMF na máquina, se estudar alguns código da sun vc vai ver um tal de Player.getControlPanelComponent() que retorna controle de volume e coisas desse tipo.
da uma pesquisada em “getControlPanelComponent()” que eu acho que vc vai encontrar o que vc quer !
Abraço,
Maicon
tipo, vc pode utilizar som em um Frame do mesmo jeito q em um applet, pois o metodo getAudioClip(URL url) de Applet eh estatico, entaum vc pode fazer:
File f = new File("arquivo");
AudioClip ac = Applet.getAudioClip(f.toURL());
ac.play();
basta vc importar o pacote java.applet… o problema eh q desse jeito, se tem poucos recursos, vc soh pode tocar, parar e mandar ficar repetindo…
agora se vc quiser, vc pode usar JavaSound, q fornece um pouco mais de recursos para som (n sei como se faz, mas provavelmente deve dar pra controlar o volume)…
um ex simples de java sound:
import javax.sound.sampled.*;
public class Toca implements LineListener{
private File arquivo;
private Clip clip;
public Toca(String arq){
arquivo = new File(arq);
}
public void toca(){
AudioInputStream soundStream = null;
AudioFormat audioFormat = null;
DataLine.Info dataLineInfo = null;
try{
soundStream = AudioSystem.getAudioInputStream(arquivo);
audioFormat = soundStream.getFormat();
dataLineInfo = new DataLine.Info(Clip.class,
AudioSystem.getTargetFormats(AudioFormat.Encoding.PCM_SIGNED, audioFormat),
audioFormat.getFrameSize(),
audioFormat.getFrameSize() * 2);
if (!AudioSystem.isLineSupported(dataLineInfo)) throw new Exception("Formato nao suportado!");
clip = (Clip)AudioSystem.getLine(dataLineInfo);
clip.addLineListener(this);
clip.open(soundStream);
clip.start();
}
catch (Exception erro){
JOptionPane.showMessageDialog(null, erro, "Erro!", JOptionPane.ERROR_MESSAGE);
}
}
public void update(LineEvent e){ // metodo para tratar eventos da linha
if (e.getType() == LineEvent.Type.STOP){
// essa parte eh executada qndo para de tocar
clip.close();
}
}
}