java编写mp3_java 编写的 mp3 播放器 1

学java也有一段时间了,想拿一些小的例子来练下手。实践的时候总是会发现很多新的问题,在这里简单罗列下实现的过程以及期间出现的一些问题,等待这个寒假给补完吧。现在做了有六七成的样子吧。

首先需要导入一个已经写好的jar包,可以直接百度下载 jaudiotagger.jar   这里面封装了一系列多媒体文件的信息的获取方法。 还有一个就是需要安装Java媒体框架(jmf),在实际的工程下需要导入一下jar包(在jmf的安装目录下能够找到,之前看到网上说只需要导入几个包就可以实际操作中发现不可以,索性就把目录下的全部都导入进去了,如下图)

0818b9ca8b590ca3270a3433284dd417.png

之后就可以开始工作了。

先说一下已经实现的功能:添加歌曲,添加文件夹,上一首,下一首 ,歌曲的列表,歌曲详细信息显示。

0818b9ca8b590ca3270a3433284dd417.png

归纳下做到目前的一些操作过程:

界面部分是通过可视化插件windows builder 直接拖拽的,布局选择absolutelayout 就可以了 可以精确定位,省去了解决borderlayout 局部一些不方便修改布局的问题(一开始用的便是borderlayout发现修改起来难度比较大)

目前这个界面可以进行优化的地方是:

1 控制按钮可以将 开始,暂停做成一个按钮

2 专辑图片的显示用一个自动缩放的组件把它展示出来

3 增加一个进度条可以来拖拽

下面说一下功能实现:

1  MP3Info.java :  用于封装获取歌曲的详细信息

实现代码 如下(写的比较低级,还请见谅)

private MP3File mp3File;                  //jar包中封装的 mp3文件类

private String singer;                          //歌手

private String albumName;               //专辑名

private String songName;                 //歌曲名

private String year;                             //年份

private File file;                                   //歌曲绝对路径

private byte[] byteArrayx = new byte[1024];  //用于存放专辑图片

然后设置get set 方法  ,初始化方法

// 之前要初始化file

mp3File = new MP3File(file);

try {

if (mp3File.hasID3v1Tag()) {

Tag tag = mp3File.getTag();

singer = ("歌手:" + tag.getFirst(FieldKey.ARTIST) + "\n");

albumName = ("专辑名:" + tag.getFirst(FieldKey.ALBUM) + "\n");

songName = ("歌名:" + tag.getFirst(FieldKey.TITLE) + "\n");

year = ("年份:" + tag.getFirst(FieldKey.YEAR));

Artwork artwork = tag.getFirstArtwork(); // 获得第一张专辑图片

byte[] byteArray = artwork.getBinaryData();

byteArrayx = byteArray;

JLabel lbl = new JLabel(new ImageIcon(byteArray));   //这个是我用来检验是否真的生成了图片

lbl.setSize(50, 50);

JLabel jbl1 = new JLabel();

jbl1.setText(sbf);

// 生成图片

JFrame jf = new JFrame("ccc");

jf.setLocation(20, 20);

jf.setSize(100, 100);

jf.add(lbl);

System.out.println(sbf);

//jf.setVisible(true);

}

if (mp3File.hasID3v2Tag()) {

}

} catch (Exception e) {

e.printStackTrace();

}

2  MusicControl.java :  用于对歌曲列表做一控制

private String currentSong;//存放歌曲名字,播放时使用

private ArrayList  songNames = new ArrayList();//歌曲列表

private Map  songMap = new HashMap();//键值对,为了跟界面想呼应  界面中的名字对应一条绝对路径

然后是get set  初始化方法

然后是 获取前一首歌曲曲名

public String getPrevious(){

Iterator  i = songNames.iterator();

int count=0;

while(i.hasNext()){

if(!songNames.get(count).equals(currentSong))

count++;

else

{

//判断是否到最后

if(count==0){

System.out.println("已经是第一首了");

return null;

}

{currentSong=songNames.get(count-1);   return  songNames.get(count-1);}

}

}

return null;//走不到这里吧?? 那就报错咯

}

下一首的代码如法炮制

public String getNext(){

Iterator  i = songNames.iterator();

int count=0;

while(i.hasNext()){

if(!songNames.get(count).equals(currentSong))

count++;

else

{

//判断是否到最后

if(count==songNames.size()-1){

System.out.println("是最后一首了");

return null;

}

{currentSong=songNames.get(count+1);   return  songNames.get(count+1);}

}

}

return null;//

}

再添加  添加 删除歌曲的功能 。  用arraylist 就可以操作了。

3 PlayMusic.java : 用于播放,停止播放等功能。

private MediaPlayer player = new MediaPlayer(); //播放器类

private String path;  //歌曲绝对路径

public void play(String path){

//player = new MediaPlayer();

try{

player.setMediaLocation("file:/"+path);// <>不能删除 音频文件路径

} catch (Exception e) {

System.out.println("文件不存在");

}

player.start();

}

public void stop(){

player.stop();

}

之后打算连同进度条,把暂停的功能也实现。

页面端的内容等有时间再补充上去。

接下类要做的内容有:

1  实现多种播放顺序(通过操作歌曲的ArrayList 来实现)。

2 添加进度条。

3 修改添加文件夹的歌曲不能播放的bug 。

4 页面进行美化。

那就先写到这里吧。

估计也没有人看2333。权当练手了~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值