你好:
娄星网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联公司于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
synchronized(this)里面的this很关键,也就是想要2个线程同时迸发,必须是同一个this,否则就不行,你可以考虑下。
可以使用Applet组件,主要的代码如下(缺点是能播放WAv格式的,还有其它格式,不过mp3不行,):
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.io.File;
import java.net.MalformedURLException;
//播放音乐按钮
private JButton getPlayButton(){
if(playButton==null){
playButton=new JButton("播放");
playButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(filePath.getText()!=null){
try{
if(audioClip!=null){
audioClip.stop();
}
audioClip=Applet.newAudioClip(new File(filePath.getText()).toURI().toURL());
audioClip.play();//播放
}//只需要添加一个File对象传入文件路径
catch(MalformedURLException ee){ee.printStackTrace();}
}
}
});
}
return playButton;
}
playCycle(String s)这个是单曲重复播放;play(String s)这个是单曲播放。
/******* part one start *******/
//获取媒体文件流
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
//获取文件格式
AudioFormat aif = ais.getFormat();
//这个类不知道是什么,没用过,在这里应该是对媒体流处理的一个类
SourceDataLine sdl = null;
//这个貌似通过媒体格式,获取媒体文件的信息
DataLine.Info info = new DataLine.Info(SourceDataLine.class,aif);
//通过媒体文件的信息初始化处理媒体文件的类
sdl = (SourceDataLine)AudioSystem.getLine(info);
//媒体工具类 打开媒体流
sdl.open(aif);
//媒体工具(播放器)开启
sdl.start();
/******* part one end *******/
/******* part two start ********/
int nByte = 0;
byte[] buffer = new byte[128];
//媒体工具类(播放器类)对媒体流进行写入处理,此时应该会有音乐响起吧
while(nByte != -1){
nByte = ais.read(buffer,0,128);
if(nByte = 0){
int oByte = sdl.write(buffer, 0, nByte);
//System.out.println(oByte);
}
}
//媒体流结束,并关闭这个媒体工具类
sdl.stop();
/******* part two end********/