为了这个纠结了一个下午,现在总结一下我所知道的三种常用的播放音频的方法;
其中JDK本身自带的有两个,用JMF实现一个.
1.用 Applet 实现:(最简单的方法)
AudioClip player = Applet.newAudioClip(url);
AudioClip 介绍:
AudioClip 接口是用于播放音频剪辑的简单抽象。多个 AudioClip 项能够同时播放,
得到的声音混合在一起可产生合成声音。
重复播放:player.loop();//一句就搞定了
2.通过JDK自带的audio实现
sun.audio.AudioPlayer;//播放器
sun.audio.AudioStream;//音频流
do {
InputStream is = url.openStream();// 获得音乐文件的输入流
AudioStream as = new AudioStream(is);//创建音频 流
AudioPlayer.player.start(as);//开始播放
while(loop&&as.available() > 0 );//如果要实现重复,必须要停在这里,不然会一直只放开头,因为一直在重复读取
} while (loop);
3.通过JMF实现
Player player = Manager.createPlayer(url);//创建播放器对象
player.addControllerListener(new ControllerListener() {//加上对应的控制监听器
@Override
public void controllerUpdate(ControllerEvent e) {
// TODO Auto-generated method stub
if (e instanceof EndOfMediaEvent) {//如果播放到音频文件末尾,则再次开始播放
player.setMediaTime(new Time(0));
player.start();
}
if (e instanceof PrefetchCompleteEvent) {//Prefetch是指播放器的一种状态
player.start();
}
}
});
player.prefetch();//这个是用来触发上面监听器对应的第二种时间,以开始播放音频文件
JMF 工具包在下面的附件里,如果需要可以直接下载.