//播放声音的类(利用一个线程)
class PlayWave extends Thread{
private String filename;
public PlayWave(String wavfile){
filename=wavfile;
}
public void run(){
File soundFile=new File(filename);
//调用音频流
AudioInputStream audioInputStream=null;
try {
audioInputStream=AudioSystem.getAudioInputStream(soundFile);
} catch (Exception e) {
e.printStackTrace();
return;
}
AudioFormat format=audioInputStream.getFormat();
SourceDataLine auline=null;
DataLine.Info info=new DataLine.Info(SourceDataLine.class, format);
try{
auline=(SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
}catch(Exception e){
e.printStackTrace();
return;
}
auline.start();
int nBytesRead=0;
//缓冲
byte[] abData=new byte[1024];
try{
while(nBytesRead!=-1){
nBytesRead=audioInputStream.read(abData,0,abData.length);
if(nBytesRead>=0)
auline.write(abData, 0, nBytesRead);
}
}catch(Exception e){
e.printStackTrace();
return;
}finally{
auline.drain();
auline.close();
}
}
}