播放声歌类
复代码代码如下:
java.io.파일 가져오기;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
//播放声歌类
공개 클래스 PlaySounds는 Thread {를 확장합니다.
개인 문자열 파일명;
공개 PlaySounds(문자열 wavfile) {
파일 이름 = System.getProperty("user.dir")+wavfile;
}
공개 무효 실행() {
File soundFile = 새 파일(파일명);
AudioInputStream audioInputStream = null;
노력하다 {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} 잡기(예외 e1) {
e1.printStackTrace();
반품;
}
AudioFormat 형식 = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, 형식);
노력하다 {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} 잡기(예외 e) {
e.printStackTrace();
반품;
}
auline.start();
int nBytesRead = 0;
//这是缓冲
바이트[] abData = 새 바이트[512];
노력하다 {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} 잡기(IOException e) {
e.printStackTrace();
반품;
} 마지막으로 {
auline.drain();
auline.close();
}
}
}
下면是一个java播放声 sound 应用程序,可以单次播放声音、循环播放声音
MusicPaly myMusicPlay = new MusicPlay(getClass().getResource("/music/button.wav"));
myMusicPlay.start();//播放一次
myMusicPlay .stop();//재생
myMusicPlay .continuousStart();//循环播放
myMusicPlay .continuousStop();//재생
复代码代码如下:
// 문서명:MuiscPlay.java
import java.io.*;
java.net.URL 가져오기;
import sun.audio.*;
/**
*
* @author 우후이웬
* 播放음을 频文件,产生소리效
*/
공개 클래스 MusicPlay {
개인 AudioStream as; //单次播放声소리용
ContinuousAudioDataStream cas;//循环播放声音
// 构造函数
공개 MusicPlay(URL url)
{
노력하다 {
//打开一个声输入声输入
as = new AudioStream(url.openStream());
} 잡기(FileNotFoundException e) {
// TODO 자동 생성된 캐치 블록
e.printStackTrace();
} 잡기(IOException e) {
// TODO 자동 생성된 캐치 블록
e.printStackTrace();
}
}
// 一次播放 开始
공개 무효 시작()
{
if( as==null ){
System.out.println("AudioStream 객체가 생성되지 않았습니다!");
반품;
}또 다른{
AudioPlayer.player.start (as);
}
}
// 一次播放 停止
공공 무효 중지()
{
if( as==null ){
System.out.println("AudioStream 객체가 생성되지 않았습니다!");
반품;
}또 다른{
AudioPlayer.player.stop(as);
}
}
// 循环播放 开始
공개 무효 연속 시작()
{
// AudioData 소스를 생성합니다.
AudioData 데이터 = null;
노력하다 {
데이터 = as.getData();
} 잡기(IOException e) {
// TODO 자동 생성된 캐치 블록
e.printStackTrace();
}
// ContinuousAudioDataStream을 생성합니다.
cas = 새로운 ContinuousAudioDataStream(데이터);
// 오디오를 재생합니다.
AudioPlayer.player.start(cas);
}
// 循环播放 停止
공개 무효 연속 정지()
{
if(cas != null)
{
AudioPlayer.player.stop(cas);
}
}
}