今天写了个小程序,想在线程进行到某个时刻开始播放声音,苦苦琢磨搜索了好久,终于实现了这个功能,赶紧记下来,留待后用。
一、要安装java的JMF包(java media framework,简称JMF)
我是在oracle官网下的,http://www.oracle.com/technetwork/java/javasebusiness/downloads
l那个慢啊,而且撇脚的英文水平找了半天才找到JMF下载的页面;
于是赶紧放到百度网盘里备用http://pan.baidu.com/s/1kTulj1P
双击安装,最好安装到默认目录。
接下来开始配置环境(计算机—》右键,属性—》高级系统设置—》环境变量,相信都知道)
在ClassPath变量里添加
D:\Program Files\JMF2.1.1e\lib\sound.jar;
D:\Program Files\JMF2.1.1e\lib\jmf.jar;
最好在开头添加,然后没添加一条结尾都有分号,这样不会影响后面;
Path
D:\Program Files\JMF2.1.1e\bin;
记得改成你自己的相应的路径。
这是打开eclipse,
选择你的工程下面的JRE systemLibrary,右击,buildPath——》configure Build Path——》add External JARs……进入JMF安装目录,选择jmf.jar和sound.jar,确定
现在,在该工程的java程序中import javax.media不会提示not found了;
二、实现MP3播放
下面是一些核心代码,并不是完整的程序,相信
private static Player player=null;
private static String path="";
//当前路径
private static File file=null;
path="D://a.mp3";
//给出绝对或相对地址
file=new File(path);
try {
URL url=file.toURL();
player=Manager.createPlayer(url);
player.prefetch();
player.start(); //播放开始的控制
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (NoPlayerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
我自己是把player.start();放到线程中了
if((remainTime/1000)==11)
{
player.start(); //开始播放
}
然后可以控制stop
if((remainTime/1000)==0)
{
player.stop();//停止播放
//发出提示音
Toolkit.getDefaultToolkit().beep();
//弹出提醒框
JOptionPane.showMessageDialog(this,"时间到!!","倒计时提示",JOptionPane.OK_OPTION);
break;
}
顺便提一下资源的引用,
path="D://a.mp3";这是绝对路径的引用方式,但很少这么用
path="./src/music/music.mp3";//相对路径,用的比较多,目录结构如下
当然,详细的用法建议查看官方给出的文档。