当前页面: 开发资料首页 → J2SE 专题 → 作了个定时器,怎么让他到时间了发声音出来啊
作了个定时器,怎么让他到时间了发声音出来啊
摘要: 作了个定时器,怎么让他到时间了发声音出来啊
作了个定时器,怎么让他到时间了发声音出来啊
timer
/a
?
我用了thread,都弄好了,就是不会发声音
给你一段播放声音的代码学习一下:
import javax.sound.sampled.*;
import java.io.*;
import java.net.*;
class PlaySound {
public PlaySound(String pos) {
try {
// 创建一个你要播放的文件
AudioInputStream stream = AudioSystem.getAudioInputStream(new File(pos)); //在此改成你的文件路径
AudioFormat format = stream.getFormat();
if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
format = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits()*2,
format.getChannels(),
format.getFrameSize()*2,
format.getFrameRate(),
true); // big endian
stream = AudioSystem.getAudioInputStream(format, stream);
}
// Create line
SourceDataLine.Info info = new DataLine.Info(
SourceDataLine.class, stream.getFormat(),
((int)stream.getFrameLength()*format.getFrameSize()));
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
line.open(stream.getFormat());
line.start();
// Continuously read and play chunks of audio
int numRead = 0;
byte[] buf = new byte[line.getBufferSize()];
while ((numRead = stream.read(buf, 0, buf.length)) >= 0) {
int offset = 0;
while (offset < numRead) {
offset += line.write(buf, offset, numRead-offset);
}
}
line.drain();
line.stop();
stream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
}
}
}