Ich hab ein kleines DualTone-Waehlprogramm fuer Telefone geschrieben und das Programm samt waves in ein jar gepackt,
allerdings findet das Programm die waves nicht (kommt kein Ton)...
Hier mal der Quellcode(bzw. -kot) :
Die Methode playSampleFile stammt uhrspruenglich von Ramulen
http://www.java-forum.org/de/viewtopic.php?t=8064&highlight=wav+abspielen
und wurde nur leicht veraendert
allerdings findet das Programm die waves nicht (kommt kein Ton)...
Hier mal der Quellcode(bzw. -kot) :
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.sound.sampled.*;
import java.io.*;
import java.net.*;
public class Telefon extends JFrame implements ActionListener{
char[] nummer;
String eing;
JPanel p=new JPanel(new GridLayout(2,1));
JButton b=new JButton("Wählen");
JTextField tf=new JTextField();
static AudioInputStream ais;
static Clip clip;
public Telefon(){
b.addActionListener(this);
p.add(tf);
p.add(b);
getContentPane().add(p);
setSize(300,100);
setVisible(true);
}
public void actionPerformed(ActionEvent ae){
try{
eing=tf.getText();
nummer=eing.toCharArray();
Class c=getClass();
URL url;
for(int a=0;nummer[a]!='\0';a++){
url=c.getResource("n222s_"+nummer[a]+".wav");
playSampleFile(url,Float.parseFloat("5"),Float.parseFloat("5"));
}
}catch(Exception e){
}
}
public static void main(String[] args){
Telefon t=new Telefon();
}
public static void playSampleFile(URL name, float pan, float gain) throws Exception {
// AudioInputStream öffnen
System.out.println("Start");
try{
ais = AudioSystem.getAudioInputStream(name);
System.out.println("1A");
}
catch (IOException e){
System.out.println("IOException!");
System.out.println("1B");
}
catch (UnsupportedAudioFileException e){
System.out.println("UnsupportedAudioFileException!");
System.out.println("1C");
}
AudioFormat format = ais.getFormat();
//ALAW/ULAW samples in PCM konvertieren
if ((format.getEncoding() == AudioFormat.Encoding.ULAW) ||
(format.getEncoding() == AudioFormat.Encoding.ALAW)){
AudioFormat tmp = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits() * 2,
format.getChannels(),
format.getFrameSize() * 2,
format.getFrameRate(),
true
);
ais = AudioSystem.getAudioInputStream(tmp, ais);
format = tmp;
}
// Clip erzeugen und öffnen
DataLine.Info info = new DataLine.Info(
Clip.class,format,((int) ais.getFrameLength() * format.getFrameSize()));
try{
clip = (Clip)AudioSystem.getLine(info);
clip.open(ais);
System.out.println("2A");
}
catch (IOException e){
System.out.println("IOException!");
System.out.println("2B");
}
catch (LineUnavailableException e){
System.out.println("LineUnavailableException!");
System.out.println("2C");
}
// PAN einstellen
FloatControl panControl = (FloatControl)clip.getControl(FloatControl.Type.PAN);
panControl.setValue(pan);
//MASTER_GAIN einstellen
FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(gain);
//Clip abspielen
clip.start();
while(true) {
try {
Thread.sleep(100);
}catch(Exception e) {
//nothing
}
if(!clip.isRunning()) {
break;
}
}
clip.stop();
clip.close();
}
}
http://www.java-forum.org/de/viewtopic.php?t=8064&highlight=wav+abspielen
und wurde nur leicht veraendert