基于java的音乐播放器课程设计报告 (1)
java音乐实训报告
![java音乐实训报告](https://img.taocdn.com/s3/m/c2c84da9960590c69ec376ff.png)
新乡学院计算机与信息工程学院项 目 实 训 报 告2015年 12月29日项目名称基于Android 的i 音乐播放器班级 2012级计算机科学与技术1班 学号 姓名 指导教师目录第1章概述 (1)第2章需求分析 (2)2.1 项目背景 (2)2.2项目需求 (2)第3章相关技术 (3)3.1 Adnroid平台介绍 (3)3.2 关键技术研究 (3)第4章概要设计 (4)4.1 系统体系结构 (4)4.2 用户界面设 (4)第5章详细设计 (6)5.1 播放设置以及后台播放源码 (6)5.2 获取网络歌曲分类列表的代码实现. (13)第6章结论 (24)第1章概述本课题要求:设计…个基于Android的手机端音乐播放器软件。
实现的功能有:a) 能在Android上利用其播放本地和远程的歌曲。
b) 能通过…个搜索框实现本地和远程的搜索功能.c) 可以实现后台播放,并能流畅的实现多界面的跳转。
需重点研究的关键问题:实现播放,后台播放,进度条显示进度等,以及网络请求数据和处理。
解决思路:浏览Android开源网站,认证学习,并请教老师,学习相关知识;不过主要还是靠自己的解题思路,解决问题的能力。
第2章需求分析2.1 项目背景移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。
搭载安卓操作系统的智能手机目前已经成为市场上最炙手可热的智能产品。
开放的源代码和零成本已经让安卓在全世界范围内受到青睐并迅速获得了主要手机厂商和数百万软件开发者的支持,无疑android已经是智能设别领域的老大.在这个移动互联网飞速发展的时代,带动全球的经济重心向着轻小得移动端发展.人们的衣食住行已经和手机这种设别息息相关,甚至是不可分割的状态.出于这个时代的背景,Android端的娱乐软件更是层出不穷.这些软件丰富了人们的闲暇之余.所以我打算入手…款娱乐软件,为大家揭秘神秘的android软件.该课题的主要设计任务是实现android设备上的音乐播放器功能,属于自己设计的…款软件,轻巧方便,没有广告,内存利用率高,是…款实用而且高端的手机软件。
音乐播放器Java专业课程设计方案报告
![音乐播放器Java专业课程设计方案报告](https://img.taocdn.com/s3/m/db198347a9114431b90d6c85ec3a87c240288a22.png)
课程设计汇报课程设计题目: java音乐播放器学生姓名:专业: XXXXXXXXXXXXX班级:指导老师:20XX年X月X日一、课程设计目标1.编程设计音乐播放软件, 使之实现音乐播放功效。
2.培养学生用程序处理实际问题能力和爱好。
3.加深java中对多媒体编程应用。
二、课程设计要求利用学到编程知识和编程技巧, 要求学生:1.系统设计要能完成题目所要求功效, 设计软件能够进行简单播放及其它基础功效。
2、编程简练, 可用, 尽可能使系统功效愈加完善和全方面3.说明书、步骤图要清楚。
三、课程设计内容1.课程设计题目及介绍音乐播放软件要求:有图形界面, 能播放MP3歌曲, 有播放列表, 前一首、后一首等常见播放软件功效。
2.设计说明关键利用多媒体编程、图形界面、数组及循环进行设计, 从而实现简单音乐播放。
public MyMusicPlayer(): 实现窗口组员方法publi c void run(): 实现改变歌曲播放状态组员方法public AudioClip loadSound(String filename): 实现对声音加载public void mouseClicked(MouseEvent e): 实现对按钮监听public void itemStateChanged(ItemEvent arg0): 返回一个AudioClip对象3.程序步骤图4.程序清单import java.awt.*;import javax.swing.*; import java.applet.*; import java.awt.event.*; import .*;public class MyMusicPlayer extends Thread implements MouseListener,ItemListener{JFrame MainFrame=new JFrame("MyMusicPlayer"); //定义主窗体JLabel songname=new JLabel(); //用标签显示状态JButton last=new JButton();JButton play=new JButton();JButton next=new JButton();JButton loop=new JButton(); //定义上一曲,播放,下一曲,循环四个按钮JLabel list=new JLabel("播放列表");List songlist=new List(); //显示歌曲列表AudioClip[] song=new AudioClip[10]; //将音频文件放在数组中AudioClip playsong; //目前选定播放音频文件String[] name={"黄小琥 - 顺其自然.wav","陈奕迅-张氏情歌.wav","黄小琥 _没那么简单.wav","戚薇-假如爱忘了.wav","郭采洁 - 狠狠哭.wav","test.wav"};//将全部文件名存放在字符串数组name中String playname; //目前选定播放音频名int j=0; //统计目前选定播放是哪首歌曲, 默认为第一首boolean playbutton=true; //统计播放状态, 默认为暂停播放boolean loopbutton=false; //统计循环状态, 默认为没有循环Thread thread=new Thread("pl");static MyMusicPlayer Yu;public MyMusicPlayer(){MainFrame.setLayout(null);MainFrame.setBounds(300,50,310,500);MainFrame.setVisible(true);MainFrame.setDefaultCloseOperation(3);MainFrame.add(songname);Font sname=new Font("斜体",Font.ITALIC,18);songname.setFont(sname); //设置显示状态字体为斜体songname.setText("我音乐播放器");songname.setBounds(10,10,300,40);last.setBounds(10,70,50,40);play.setBounds(70,70,50,40); //设置四个功效键位置和大小next.setBounds(130,70,50,40);loop.setBounds(190,70,50,40);last.setIcon(new ImageIcon("1.png"));play.setIcon(new ImageIcon("2.png"));next.setIcon(new ImageIcon("3.png"));loop.setIcon(new ImageIcon("4.png")); //设置四个功效键图片last.addMouseListener(this);play.addMouseListener(this);next.addMouseListener(this);loop.addMouseListener(this); //添加按键鼠标监听器MainFrame.add(last);MainFrame.add(play);MainFrame.add(next);MainFrame.add(loop);list.setBounds(10,120,100,30);Font lis=new Font("宋",Font.BOLD,15);list.setFont(lis); //显示“播放列表”MainFrame.add(list);songlist.setBounds(10,150,250,300);songlist.setBackground(Color.GREEN); //设置播放列表背景色为绿色songlist.setVisible(true);songlist.addItemListener((ItemListener) this); //添加列表监听器MainFrame.add(songlist);for(int i=0;i<name.length;i++){song[i]=loadSound(name[i]); //逐一获取音频文件songlist.add(name[i]); //将歌曲名添加到播放列表}playsong=song[0];}public static void main(String[] args){Yu=new MyMusicPlayer();Yu.start();}public void mouseClicked(MouseEvent e) {JButton btn=(JButton)e.getSource();playsong.stop();if(btn==play){ if(playbutton==false)playbutton=true;elseplaybutton=false; //当按下play后改变播放状态}elseif(btn==last){ j-=1; //当按下last 后将上一曲选定if(j<0)j=name.length-1; //若之前选定为第一首, 则跳到最终一首playbutton=true;loopbutton=false;}elseif(btn==next){ j+=1; //当按下next后将下一曲选定if(j>=name.length)j=0; //若之前选定为最终一首, 则跳到第一首playbutton=true;loopbutton=false;}elseif(btn==loop){ if(loopbutton==false){loopbutton=true;playbutton=true;}else{ //按下loop 后, 改变循环状态和播放状态loopbutton=false;playbutton=false;}}if(playbutton==true)Yu.run();else{songname.setText("暂停播放: "+playname); //暂停播放歌曲play.setIcon(new ImageIcon("2.png"));}}public void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}public void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub}public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub}public void itemStateChanged(ItemEvent arg0) { String str=songlist.getSelectedItem();playsong.stop();for(int i=0;i<name.length;i++)if(str==name[i]){j=i;break;}Yu.run();}public void run(){playsong=song[j]; //播放状态为播放时playsong.play(); //播放选定歌曲playname=name[j];if(loopbutton==true){playsong.loop(); //循环播放选定歌曲songname.setText("循环播放: "+playname);}elsesongname.setText("正在播放: "+playname);songlist.select(j); //播放列表中选定播放歌曲项目play.setIcon(new ImageIcon("5.png"));}public AudioClip loadSound(String filename){ //返回一个AudioClip对象URL url=null;try{url=new URL("file:"+filename);}catch(MalformedURLException e){ }return Applet.newAudioClip(url);}}5.程序运行结果四、课程设计总结经过这几天Java课程设计, 让我知道了做课程设计通常方法, 经过多种努力最终完成了设计要求.这次课程设计基础上含盖了大学十二个月学习到Java语言知识点, 课设题目要求不仅要求对书本知识有较深刻了解, 同时要求程序设计者有较强思维和动手能力。
Java课程设计音乐播放器设计
![Java课程设计音乐播放器设计](https://img.taocdn.com/s3/m/83682620376baf1ffc4fadb8.png)
程序设计课程设计综合实验音乐播放器班级:指导老师:组员:2014年12月2日目录1 程序功能描述 -------------------------------------------------------------------------------- 32 开发环境描述 -------------------------------------------------------------------------------- 33 开发技术介绍 -------------------------------------------------------------------------------- 34 详细设计--------------------------------------------------------------------------------------- 4 4.1功能模块划分 ------------------------------------------------------------------------------------ 4 4.2 用户界面设计 ----------------------------------------------------------------------------------- 54.2.1 歌曲列表面板 --------------------------------------------------------------------------------------------- 54.2.2 播放控制面板 --------------------------------------------------------------------------------------------- 84.2.3 搜索及展示面板 ------------------------------------------------------------------------------------------ 84.3 播放功能实现 ----------------------------------------------------------------------------------- 94.3.1播放歌曲 ---------------------------------------------------------------------------------------------------- 94.3.2 暂停及继续播放 ---------------------------------------------------------------------------------------- 114.3.3 音量控制 ------------------------------------------------------------------------------------------------- 124.3.4 播放模式 ------------------------------------------------------------------------------------------------- 124.3.5 时间进度条 ---------------------------------------------------------------------------------------------- 134.4 歌词展示实现 --------------------------------------------------------------------------------- 144.4.1 加载歌词文件 ------------------------------------------------------------------------------------------- 144.4.2 解析歌词文件 ------------------------------------------------------------------------------------------- 144.4.3 展示歌词 ------------------------------------------------------------------------------------------------- 154.5 搜索网络歌曲资源---------------------------------------------------------------------------- 164.5.1 获取HTML文本 --------------------------------------------------------------------------------------- 164.5.2 解析HTML文本 --------------------------------------------------------------------------------------- 184.5.3 抓取数据描述 ------------------------------------------------------------------------------------------- 204.6 网络歌曲资源处理---------------------------------------------------------------------------- 204.6.1 歌曲资源的载体 ---------------------------------------------------------------------------------------- 204.6.2 歌曲资源的操作 ---------------------------------------------------------------------------------------- 244.7 程序内置的游戏------------------------------------------------------------------------------- 264.7.1 2048 -------------------------------------------------------------------------------------------------------- 264.7.2 贪吃蛇 ---------------------------------------------------------------------------------------------------- 274.7.3 五子棋 ---------------------------------------------------------------------------------------------------- 275程序运行 -------------------------------------------------------------------------------------- 28 6 实验小结-------------------------------------------------------------------------------------- 311 程序功能描述音乐播放器是一种用于播放各种音乐文件的多媒体播放软件。
音乐播放器Java课程设计报告
![音乐播放器Java课程设计报告](https://img.taocdn.com/s3/m/c2d4c461360cba1aa911da5f.png)
2、编程简练,可用,尽可能的使系统的功能更加完善和全面
3、说明书、流程图要清楚。
三、课程设计内容
1
音乐播放软件要求:
有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件 功能。
2
主要运用多媒体编程、 图形界面、数组及循环进行设计,从而实现简单的音
上一曲,播放,下一曲,循环四个按钮
JLabel list =new JLabel("播放列表");
List songlist =new List();//显示歌曲列表
AudioClip[] song =new AudioClip[10];
//将音频文件放在数组中
AudioClip playsong; //当前选定播放的音频文件
乐播放。
public
MyMusicPlayer():实现窗口的成员方法
publi c
void run():实现改变歌曲的播放状态的成员方法
public
AudioClip loadSound(String)
:实现对声音的加载
public
void mouseClicked(MouseEvent e)
:实现对按钮的监听
JButton btn=(JButton)e.getSource(); playsong .stop();
if (btn== play)
{if(playbutton==false)playbutton =true;
else
playbutton =false;
play后改变播放状态
}
else
(完整word版)基于java的音乐播放器的设计
![(完整word版)基于java的音乐播放器的设计](https://img.taocdn.com/s3/m/044e0ae990c69ec3d4bb75e5.png)
《课程设计报告》课程名称:WEB课程设计2016—2017 学年度第一学期题目:基于java的音乐播放器系别:信息工程学院专业: 计算机科学与技术专业班级:指导教师:编者目录一。
需求分析 (1)(一)背景 (1)(二)音乐播放器需求分析 (1)二.概要设计 (5)(一)系统所用类及各类的主要说明 (5)(二)系统UML类图 (6)三。
详细设计 (8)(一)核心技术介绍 (8)(二)创建播放器的图形用户界面所需的控件 (11)四。
系统实现 (14)五.测试 (44)结论 (46)一.需求分析(一)背景随着计算机的广泛运用,手机市场的迅速发展,各种音频视频也在网上广为流传,这些资源看似平常,但以渐渐成为人们必不可少的一部分了,于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对很多用户的时间造成了很多资源的浪费,比如CPU、内存的占有率过高,在用户需求多用户操作时,受到了不小的影响,带来了许多的不便,而对于大多数普通用户,许多功能用不上,形同虚设。
(二)音乐播放器需求分析根据项目,我们可以获得项目系统的基本需求主要是功能需求而系统的功能需求,我们分成三部分来概括,即播放器的基本控制需求、播放列表管理需求和性能需求。
以下分别描述:121、播放器的基本控制需求(1)播放:点击播放列表中的歌曲进行播放。
(2)停止:在歌曲列表下方有一个小按钮,当歌曲正在播放时,显示的是可停止的按钮,点击则停止当前播放的歌曲.(3)上一曲:歌曲在播放或者未播放时单击上一曲按钮时歌曲会跳到列表的当前歌曲的上一首.(4)下一曲:歌曲在播放或者未播放时单击下一曲按钮时歌曲会跳到列表的当前歌曲的下一首。
(5)停止:单击停止按钮时立即停止播放当前的歌曲。
3用户需求图音乐播放器系统流程图2、播放列表管理(1)添加歌曲文件夹:在播放列表中单击,选择添加的文件夹则弹出一个添加文件夹的会话框,点击要添加的歌曲,则弹出“添加成功"的消息提示,否则弹出“添加失败”的相关信息。
Java程序设计课程设计报告音乐播放器
![Java程序设计课程设计报告音乐播放器](https://img.taocdn.com/s3/m/bb53672e54270722192e453610661ed9ad5155de.png)
《Java及Java web应用开发》实验报告设计题目: Java音乐播放器专业计算机信息管理班级 1班****2014年12月24 日import java*.media.ControllerEvent;import java*.media.ControllerListener;import java*.media.EndOfMediaEvent;import java*.media.PrefetchpleteEvent;import java*.media.RealizepleteEvent;import java*.media.*;import java*.swing.*;import java.awt.*;import java.awt.event.*;public class MediaPlayer e*tends JFrame implements ActionListener, ItemListener, ControllerListener {String title;Player player;boolean first = true, loop = false;ponent vc, cc;String currentDirectory=null;// 构造函数,其中包括了设置响应窗口事件的监听器。
MediaPlayer(String title) {super(title);/* 关闭按钮的实现。
*/addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose(); }public void windowClosed(WindowEvent e) {if (player != null)player.close();System.e*it(0);} }); // 调用程序菜单栏的方法成员完成菜单的布置setupMenu();setSize(400, 400);setVisible(true); } // 本方法用以设置程序菜单栏public void setupMenu() {// 设置一个菜单Menu f = new Menu("文件");// 往设置的菜单添加菜单项MenuItem mi = new MenuItem("打开");f.add(mi);mi.addActionListener(this);f.addSeparator();Checkbo*MenuItem cbmi = new Checkbo*MenuItem("循环", false); cbmi.addActionListener(this);f.add(cbmi);f.addSeparator();MenuItem ee = new MenuItem("退出");ee.addActionListener(this);f.add(ee);f.addSeparator();Menu l = new Menu("播放列表");Menu c = new Menu("播放控制");MenuItem move = new MenuItem("播放");move.addActionListener(this);c.add(move);c.addSeparator();MenuItem pause = new MenuItem("暂停");pause.addActionListener(this);c.add(pause);c.addSeparator();MenuItem stop = new MenuItem("停止");stop.addActionListener(this);c.add(stop);c.addSeparator();// 设置一个菜单栏MenuBar mb = new MenuBar();mb.add(f);mb.add(c);mb.add(l);// 将构造完成的菜单栏交给当前程序的窗口; setMenuBar(mb); }// 动作时间响应成员;捕捉发送到本对象的各种事件; public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString cufile, selectfile, currentDirectory;if (e.getActionmand().equals("退出")) {// 调用dispose以便执行windowCloseddispose();return; }// 此事表明拥护选择了“播放”命令;// 如果当前有一个文件可以播放则执行播放命令;if (e.getActionmand().equals("播放")) {if (player != null) {player.start(); }return; }// 如果当前正在播放*一文件,则执行暂停;if (e.getActionmand().equals("暂停")) {if (player != null) {player.stop(); }return; } // 停止命令的响应;if (e.getActionmand().equals("停止")) {if (player != null) {player.stop();player.setMediaTime(new Time(0)); }return; } // 用户选择要播放的媒体文件if (e.getActionmand().equals("打开")) {FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD); // fd.setDirectory(currentDirectory);fd.setVisible(true);// 如果用户放弃选择文件,则返回if (fd.getFile() == null) {return; }// 保存了所选文件的名称及其路径名称已被稍后使用// 同时设置当前文件夹路径selectfile = fd.getFile();currentDirectory = fd.getDirectory();cufile = currentDirectory + selectfile;// 将用户选择的文件作为一个菜单项加入播放列表,该菜单项名为该文件名; // 被点击后给出的命令串是该文件的全路径名MenuItem mi = new MenuItem(selectfile);mi.setActionmand(cufile);MenuBar mb = getMenuBar();Menu m = mb.getMenu(2);mi.addActionListener(this);m.add(mi);} else {// 程序逻辑运行到次表示用户选择了一个“播放列表”中的媒体文件// 此时可以通过如下动作获得该文件的全路径名cufile = e.getActionmand();selectfile = cufile; }// 如果存在一个播放器,则先将其关闭,稍后再重新创建// 创建播放器时需要捕捉一些异常if (player != null) {player.close(); }try {player = Manager.createPlayer(new MediaLocator("file:" + cufile));} catch (E*ception e2) {System.out.println(e2);return; }/** catch(NoPlayerE*ception e2){ System.out.println("不能找到播放器"); * return ; }*/if (player == null) {System.out.println("无法创建播放器");return; }first = false;setTitle(selectfile);// 设置处理播放控制器实际的对象;/**/player.addControllerListener(this);player.prefetch(); }// 菜单状态改变事件的响应函数;public void itemStateChanged(ItemEvent arg0) {// TODO Auto-generated method stub }public static void main(String[] args) {// TODO Auto-generated method stubnew MediaPlayer("播放器"); }// 调用绘图函数进行界面的绘制// public void update() { // }// 绘图函数成员//public void paint(Graphics g) { // }public void controllerUpdate(ControllerEvent e) {// TODO Auto-generated method stubContainer tainer = getContentPane();// 调用player.close()时ControllerClosedEvent事件出现// 如果存在视觉部件,则该部件应该拆除(为了一致起见,我们对控制面版部件也执行同样的操作,下一次需要时再构造)if (e instanceof ControllerClosedEvent) {if (vc != null) {remove(vc);vc = null; }if (cc != null) {remove(cc);cc = null; } }// 播放结束时,将播放指针置于文件之首,如果设定了循环播放,则再次启动播放器;if (e instanceof EndOfMediaEvent) {player.setMediaTime(new Time(0));if (loop) {player.start(); }return; }// PrefetchpletEvent事件发生后调用start,正式启动播放if (e instanceof PrefetchpleteEvent) {player.start();return; }// 本事件表示由于播放的资源已经确定;此时要将媒体的图形conmopnent// 如果有显示出来,同时将播放器player的控制显示到窗口里;if (e instanceof RealizepleteEvent) {// 如果媒体中有图像,将对应图像ponent载入窗体;vc = player.getVisualponent();if (vc != null)tainer.add(vc, BorderLayout.CENTER);// 将对应控制器ponent载入窗体;cc = player.getControlPanelponent();cc.setBackground(Color.blue);if (cc != null)tainer.add(cc, BorderLayout.SOUTH);// 有一些特殊媒体在播放时提供另外的控制手段,将控制器一并加入窗口; /* * gc=player.getGainControl(); gcc=gc.getControlponent();* if(gcc!=null) tainer.add(gcc,BorderLayout.NORTH); */// 根据媒体文件中是否有图像,设定相应的窗口大小if (vc != null) {pack();return;} else {setSize(300, 75);setVisible(true);return; } } } }。
音乐播放器课程设计java
![音乐播放器课程设计java](https://img.taocdn.com/s3/m/1c6ad258b42acfc789eb172ded630b1c58ee9b57.png)
音乐播放器课程设计java一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,包括类、对象、继承、封装等;2. 掌握Java中事件处理机制,了解图形用户界面(GUI)设计的基本方法;3. 学会使用Java内置的音频播放库,实现对音乐文件的播放、暂停、停止等基本控制。
技能目标:4. 能够运用所学知识设计并实现一个音乐播放器界面,包括播放、暂停按钮和音乐列表;5. 能够编写相应的Java代码,实现音乐播放器的功能,如音乐文件的加载、播放、暂停和停止;6. 培养学生解决问题的能力,学会调试和修复程序中出现的错误。
情感态度价值观目标:7. 培养学生对编程的兴趣和热情,增强其对学习Java语言的自信心;8. 培养学生团队协作精神,学会与他人分享和交流编程经验;9. 培养学生创新意识,激发学生主动探索新知识、新技术的热情。
本课程针对高年级学生,结合学科特点和教学要求,以实用性为导向,旨在让学生掌握Java编程的基本技能,培养其解决实际问题的能力。
通过本课程的学习,学生将能够独立设计并实现一个音乐播放器,提高其编程实践能力。
同时,注重培养学生的情感态度价值观,使其在掌握知识的同时,形成良好的学习习惯和团队协作精神。
二、教学内容1. 面向对象编程基础:- 类的定义与使用- 对象的创建与操作- 继承与多态- 封装与接口2. Java GUI设计:- Swing图形用户界面概述- 常用Swing组件的使用方法- 事件处理机制- 布局管理器3. 音乐播放器功能实现:- 音频播放库简介- 音乐文件的加载与播放- 播放控制功能实现(播放、暂停、停止)- 音乐列表展示4. 教学案例与实战:- 设计音乐播放器界面- 编写音乐播放器功能代码- 调试与优化音乐播放器程序- 项目展示与评价本章节教学内容按照课程目标进行选择和组织,注重科学性和系统性。
教学内容分为四个部分,分别对应Java面向对象编程基础、GUI设计、音乐播放器功能实现和教学案例实战。
音乐播放器Java课程设计报告
![音乐播放器Java课程设计报告](https://img.taocdn.com/s3/m/004d8b633968011ca30091cb.png)
《JA V A程序设计》课程设计报告题目:音乐播放器学院:计算机科学与工程学院专业:信息管理与信息系统学生姓名:杨柏昌学号:1400320228指导老师:汪华登目录1. 概要设计....................................................................2. 详细设计....................................................................3. 测试............................................................................4. 总结............................................................................概要设计播放器主要使用JMF框架实现,播放器界面如下详细设计package design.curriculum.JAVA;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.Border;import java.io.*;import javax.media.*;public class JMFPlayer extends JFrame implements ActionListener,ControllerListener{Player player=null;//声明一个Player对象String filePath;//存放音乐文件夹所在目录String fileName;//存放歌曲名称boolean click=false;//用来标记歌曲是否被点击int songIndex;//歌曲元素在列表中的位置int loop=3;//作为播放模式的标记JLabel songNameLable;JRadioButton sequenceBtn;JRadioButton singleBtn;JRadioButton randomBtn;ButtonGroup loopGroup;JButton beforeBtn;JButton nextBtn;JButton playBtn;JButton pauseBtn;JButton stopBtn;JButton fileBtn;JButton exitBtn;Component controlComponent;//player的控制面板Container container;JPanel songNamejp;JPanel loopjp;JPanel btnjp;JPanel listjp;JPanel btn2jp;List list;public JMFPlayer(){super("音乐播放器");setBounds(480,50,400,600);setResizable(false);//设置界面不可修改setVisible(true);container=getContentPane();//获得容器主面板container.setLayout(new BoxLayout(container,BoxLayout.Y_AXIS));songNamejp=new JPanel(new GridLayout(2,2));songNamejp.setSize(400,50);container.add(songNamejp);songNameLable=new JLabel("正在播放:未选取歌曲");songNamejp.add(songNameLable);songNamejp.setBorder(BorderFactory.createEtchedBorder());loopjp=new JPanel();loopjp.setSize(400,50);container.add(loopjp);sequenceBtn=new JRadioButton("顺序播放");sequenceBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent evt){loop = 1;}});singleBtn=new JRadioButton("单曲循环");singleBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent evt){loop = 0;}});randomBtn=new JRadioButton("随机播放");randomBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent evt){loop = 2;}});loopGroup=new ButtonGroup();loopGroup.add(sequenceBtn);loopGroup.add(singleBtn);loopGroup.add(randomBtn);loopjp.add(sequenceBtn);loopjp.add(singleBtn);loopjp.add(randomBtn);btnjp=new JPanel();btnjp.setLayout(new BoxLayout(btnjp,BoxLayout.X_AXIS));btnjp.setSize(400,50);container.add(btnjp);beforeBtn=new JButton("上一首");playBtn=new JButton("播放");pauseBtn=new JButton("暂停");stopBtn=new JButton("停止");nextBtn=new JButton("下一首");beforeBtn.addActionListener(this);playBtn.addActionListener(this);pauseBtn.addActionListener(this);stopBtn.addActionListener(this);nextBtn.addActionListener(this);btnjp.add(beforeBtn);btnjp.add(playBtn);btnjp.add(pauseBtn);btnjp.add(stopBtn);btnjp.add(nextBtn);listjp=new JPanel(new BorderLayout());listjp.setSize(300,300);container.add(listjp);Border border = BorderFactory.createEtchedBorder();Border titled = BorderFactory.createTitledBorder(border, "歌曲列表");listjp.setBorder(titled);fileBtn=new JButton("选择文件夹");exitBtn=new JButton("退出");fileBtn.addActionListener(this);exitBtn.addActionListener(this);btn2jp=new JPanel();btnjp.setSize(300,50);container.add(btn2jp);btn2jp.add(fileBtn);btn2jp.add(exitBtn);list=new List();list.setBackground(Color.pink);JScrollPane songListScroll = new JScrollPane(list);listjp.add(songListScroll, BorderLayout.CENTER);list.addMouseListener(new MouseAdapter() {//对歌曲点击的监听public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 1) {fileName = list.getSelectedItem();songIndex=list.getSelectedIndex();click=true;}}});addWindowListener (new WindowAdapter(){public void windowClosing(WindowEvent e){if(player!=null){player.stop();player.deallocate();}System.exit(0);}});validate();}/** 对按钮事件的处理*/public void actionPerformed(ActionEvent e){if(e.getSource()==fileBtn){FileDialog dialog=new FileDialog(this,"音乐",FileDialog.LOAD);dialog.setVisible(true);filePath = dialog.getDirectory();if (filePath != null) {File filedir = new File(filePath);File[] filelist = filedir.listFiles();for (File file : filelist) {String filename = file.getName().toLowerCase();if(filename.endsWith(".wav")||filename.endsWith(".mp3")) {list.add(filename);}}}}if(e.getSource()==playBtn){if(click){click=!click;try{if(player!=null){player.stop();player.deallocate();}if(controlComponent!=null){songNamejp.remove(controlComponent);songNamejp.validate();}player=Manager.createPlayer(newMediaLocator("file:"+filePath+fileName));player.getDuration();player.prefetch();player.addControllerListener(this);songNameLable.setText(fileName);}catch (IOException e3) {}catch(NoPlayerException e2) {}}else if(!click){player.start();}}if(e.getSource()==exitBtn){System.exit(0);}if(e.getSource()==pauseBtn) {if(player!=null){player.stop();}}if(e.getSource()==stopBtn){if(player!=null){player.stop();player.setMediaTime(new Time(0));}elsereturn;}if(e.getSource()==beforeBtn){int n=list.getItemCount();if(songIndex<n){songIndex=songIndex-1;if(songIndex<0){songIndex=n-1;}fileName=list.getItem(songIndex);run();}}if(e.getSource()==nextBtn){int n=list.getItemCount();if(songIndex<n){songIndex=songIndex+1;if(songIndex>=n){songIndex=0;}fileName=list.getItem(songIndex);run();}}}public void run(){try{if(player!=null){player.stop();player.deallocate();}if(controlComponent!=null){songNamejp.remove(controlComponent);songNamejp.validate();}player=Manager.createPlayer(newMediaLocator("file:"+filePath+fileName));player.getDuration();player.prefetch();player.addControllerListener(this);songNameLable.setText(fileName);}catch (IOException e3) {}catch(NoPlayerException e2) {}}/** 对控制面板事件的处理* */public synchronized void controllerUpdate(ControllerEvent event){if(event instanceof RealizeCompleteEvent){if((controlComponent=player.getControlPanelComponent())!=null)songNamejp.add(controlComponent);}else if(event instanceof PrefetchCompleteEvent){player.start();}else if(event instanceof EndOfMediaEvent){player.setMediaTime(new Time(0));if(loop==0){player.start();}if(loop==1){int n=list.getItemCount();if(songIndex<n){fileName=list.getItem(songIndex+1);songIndex=songIndex+1;run();}}if(loop==2){int n=list.getItemCount();if(songIndex<n){songIndex=(int)(Math.random()*1000)%n;fileName=list.getItem(songIndex);run();}}}validate();}/** 主程序*/public static void main(String srgs[]){new JMFPlayer();}}测试1.运行程序如下:2.点击文件夹按钮弹出文件对话框,选择音乐文件夹界面如下:3.点击一首歌曲并播放总结做这个播放器用了两周的时间,一开始去图书馆借了好些书,发现了好几种类型做播放器用的API,发现有些比较繁杂和功能性不强,最终选用了JMF。
java 游戏开发学习情境5音乐播放器设计
![java 游戏开发学习情境5音乐播放器设计](https://img.taocdn.com/s3/m/12af040090c69ec3d5bb751d.png)
08游戏3-2
目标:
◦ 为游戏添加音效,能够用Java加载、播放游戏中的声 音文件,并按要求控制播放。
任务:
◦ 用Java设计一个播放多种声音的程序。为电梯模拟游 戏添加背景音乐。
目标与仸务
学习过程
教师 项目核心 提供: 声音播放案例 提供: 多个声音列表 播放关键代码 提供: 电梯游戏的 声音和界面 学生 模仿完成: 声音播放案例 协作完成: 多个声音列表 播放 协作完成: 电梯游戏的 音效处理
音文件的例子,运行结果如图所示:
步骤一:创建一个Applet小程序
(1)通过继承Applet类来创建一个有三个 按钮的容器 import java.applet.*; public class mAudio extends Applet{} (2)定义成员属性 包含3个成员属性,分别表示播放的声音的 URL相对地址,当前播放的音频流和声音播 放状态。
应用升级
(2)编写一个类,通过播放AudioClip对象 来产生声音。(学生自主完成)
功能扩展之案例二
// 控制播放停止的按钮 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; // 跟踪当前哪些音频片段在播放 private boolean[] clipsPlaying;
应用升级
问题陈述: 在电梯系统的模拟程序里,公司要求在模拟中 加入声音。例如,当一个人走路时,应能听到 脚步声。每当按下戒者复位一个楼层按钮戒者 电梯按钮时,应当听到单击声。电梯到达时铃 声应当响起,且在门打开时戒者关上时,门应 当吱吱作响。最后,当电梯在楼层间运行时, 应播放“电梯音乐”。
java音乐课程设计
![java音乐课程设计](https://img.taocdn.com/s3/m/f13270b06394dd88d0d233d4b14e852459fb396c.png)
java音乐课程设计一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,掌握类和对象的使用;2. 学会使用Java内置的音频处理库,了解音乐播放的基本原理;3. 掌握运用Java编写简单的音乐播放器程序,实现音乐文件的选择、播放、暂停和停止功能。
技能目标:1. 能够运用所学知识,独立完成音乐播放器界面的设计和代码编写;2. 培养学生解决问题的能力,通过调试和优化代码,实现音乐播放器的完善;3. 提高学生的团队协作能力,分组合作完成音乐播放器项目。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生主动探索新知识的精神;2. 引导学生关注音乐与编程的结合,提高学生的审美观念和人文素养;3. 培养学生面对困难勇于挑战的精神,增强自信心,树立正确的价值观。
课程性质:本课程为实践性较强的课程,注重培养学生的实际操作能力和团队协作能力。
学生特点:学生已具备一定的Java编程基础,对面向对象编程有一定了解,对音乐有一定兴趣。
教学要求:教师需注重理论与实践相结合,引导学生主动参与课堂讨论和项目实践,关注学生的个体差异,提供有针对性的指导。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。
二、教学内容1. 面向对象编程基础复习:回顾Java中类与对象的概念,理解封装、继承、多态等面向对象特性。
教材章节:第五章 面向对象编程基础2. Java音频处理库介绍:学习Java内置的音频处理库,如Java Sound API,了解音频播放的基本原理。
教材章节:第十二章 多媒体与Java Sound API3. 音乐播放器界面设计:学习使用Java Swing库设计音乐播放器界面,掌握界面布局和事件处理。
教材章节:第七章 Java图形用户界面编程4. 音乐播放器功能实现:运用所学知识,编写音乐播放器代码,实现音乐文件的选择、播放、暂停和停止功能。
教材章节:第十章 文件操作与I/O流处理5. 项目实践:分组进行音乐播放器项目实践,学生协作完成项目,提高实际操作能力。
音乐播放器软件课程设计小组报告(java)
![音乐播放器软件课程设计小组报告(java)](https://img.taocdn.com/s3/m/49efd1d350e2524de5187eff.png)
软件课程设计实验报告课题:音乐点播系统班级:作者:学号:指导老师:课设评价:课设成绩:(小组报告)一、需求分析1)项目描述 (3)1.1编写目的 (3)1.2项目背景 (3)1.3开发工具及环境简介 (4)2)软件基本要求 (4)二、总体方案设计说明1)整体结构模型 (5)2)各部分功能具体内容及关系 (5)3)任务分配 (6)三、详细设计说明1)客户端设计1.1图形界面设计和列表管理 (6)1.2本地播放 (9)1.3特色功能的实现 (10)1.4客户端与服务器通信 (12)2)服务器端设计2.1服务器界面设计 (14)2.2乐库管理14 (14)2.3服务器与客户端通信 (16)四、测试过程说明1)测试步骤 (16)2)测试结果与测评 (17)五、功能模块使用说明1)客户端 (18)2)服务器端 (19)六、开发计划 (20)七、开发总结与建议 (21)一、需求分析1)项目描述1.1编写目的设计一个基于windows平台的音乐点播系统,实现音乐库的管理以及用户网络下载和播放功能。
通常音乐播放器能够满足音乐的播放功能,实现一款播放器的基本功能,但随着网络的日益发达以及人们对信息交互的需要,越来越多的情况下我们更多的是通过网络来获取音乐资源,但如何有效的实现这一目的以及提供良好的用户体验是其关键。
通过window socket服务将客户端与服务器端相连接,将资源信息通过客户端来显示,不但简洁方便同时也能更好的满足用户需求,给用户带来极大的方便。
1.2项目背景本项目作为《软件课程设计》课程的训练项目提出,在基本的设计实现基础上,将不断对已有的设计进行进一步的修改和完善,最终完成整个软件开发过程。
本次项目的旨在通过不同软件工程设计方法与技术的实践,了解和掌握各种技术、工具平台的特点与局限性,体会协同开发方式。
第1阶段:主要目的是通过对项目需求的分析和理解,通过面向对象的设计方式完成项目前期的准备工作。
基于java的音乐播放器课程设计报告
![基于java的音乐播放器课程设计报告](https://img.taocdn.com/s3/m/c3c1192bb6360b4c2e3f5727a5e9856a56122638.png)
基于java的音乐播放器课程设计报告第一篇:基于java的音乐播放器课程设计报告Java课程设计报告题目:java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。
当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。
2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。
4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。
该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。
音乐播放器Java课程设计报告
![音乐播放器Java课程设计报告](https://img.taocdn.com/s3/m/7691677cc8d376eeafaa3120.png)
课程设计报告课程设计题目:java音乐播放器学生姓名:专业:XXXXXXXXXXXXX班级:指导教师:20XX年X月X日一、课程设计目的1、编程设计音乐播放软件,使之实现音乐播放的功能。
2、培养学生用程序解决实际问题的能力和兴趣。
3、加深java中对多媒体编程的应用。
二、课程设计的要求利用学到的编程知识和编程技巧,要求学生:1、系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其他基本功能。
2、编程简练,可用,尽可能的使系统的功能更加完善和全面3、说明书、流程图要清楚。
三、课程设计内容1、课程设计的题目及简介音乐播放软件要求:有图形界面,能播放MP3歌曲,有播放列表,前一首、后一首等常用播放软件功能。
2、设计说明主要运用多媒体编程、图形界面、数组及循环进行设计,从而实现简单的音乐播放。
public MyMusicPlayer():实现窗口的成员方法publi c void run():实现改变歌曲的播放状态的成员方法public AudioClip loadSound(String filename):实现对声音的加载public void mouseClicked(MouseEvent e):实现对按钮的监听public void itemStateChanged(ItemEvent arg0):返回一个AudioClip对象3、程序流程图4、程序清单import java.awt.*;import javax.swing.*;import java.applet.*;import java.awt.event.*;import .*;public class MyMusicPlayer extends Thread implements MouseListener,ItemListener{JFrame MainFrame=new JFrame("MyMusicPlayer"); //定义主窗体JLabel songname=new JLabel(); //用标签显示状态JButton last=new JButton();JButton play=new JButton();JButton next=new JButton();JButton loop=new JButton(); //定义上一曲,播放,下一曲,循环四个按钮JLabel list=new JLabel("播放列表");List songlist=new List(); //显示歌曲列表AudioClip[] song=new AudioClip[10]; //将音频文件放在数组中AudioClip playsong; //当前选定播放的音频文件String[] name={"黄小琥 - 顺其自然.wav","陈奕迅-张氏情歌.wav","黄小琥 _没那么简单.wav","戚薇-如果爱忘了.wav","郭采洁 - 狠狠哭.wav","test.wav"};//将所有文件名存放在字符串数组name中String playname; //当前选定播放的音频名int j=0; //记录当前选定播放的是哪首歌曲,默认为第一首boolean playbutton=true; //记录播放状态,默认为暂停播放boolean loopbutton=false; //记录循环状态,默认为没有循环Thread thread=new Thread("pl");static MyMusicPlayer Yu;public MyMusicPlayer(){MainFrame.setLayout(null);MainFrame.setBounds(300,50,310,500);MainFrame.setVisible(true);MainFrame.setDefaultCloseOperation(3);MainFrame.add(songname);Font sname=new Font("斜体",Font.ITALIC,18);songname.setFont(sname); //设置显示状态的字体为斜体songname.setText("我的音乐播放器");songname.setBounds(10,10,300,40);last.setBounds(10,70,50,40);play.setBounds(70,70,50,40); //设置四个功能键位置和大小next.setBounds(130,70,50,40);loop.setBounds(190,70,50,40);last.setIcon(new ImageIcon("1.png"));play.setIcon(new ImageIcon("2.png"));next.setIcon(new ImageIcon("3.png"));loop.setIcon(new ImageIcon("4.png")); //设置四个功能键的图片last.addMouseListener(this);play.addMouseListener(this);next.addMouseListener(this);loop.addMouseListener(this); //添加按键鼠标监听器MainFrame.add(last);MainFrame.add(play);MainFrame.add(next);MainFrame.add(loop);list.setBounds(10,120,100,30);Font lis=new Font("宋",Font.BOLD,15);list.setFont(lis); //显示“播放列表”MainFrame.add(list);songlist.setBounds(10,150,250,300);songlist.setBackground(Color.GREEN); //设置播放列表的背景色为绿色songlist.setVisible(true);songlist.addItemListener((ItemListener) this); //添加列表监听器MainFrame.add(songlist);for(int i=0;i<name.length;i++){song[i]=loadSound(name[i]); //逐个获取音频文件songlist.add(name[i]); //将歌曲名添加到播放列表}playsong=song[0];}public static void main(String[] args){Yu=new MyMusicPlayer();Yu.start();}public void mouseClicked(MouseEvent e) {JButton btn=(JButton)e.getSource();playsong.stop();if(btn==play){ if(playbutton==false)playbutton=true;elseplaybutton=false; //当按下play后改变播放状态}elseif(btn==last){ j-=1; //当按下last后将上一曲选定if(j<0)j=name.length-1; //若之前选定为第一首,则跳到最后一首playbutton=true;loopbutton=false;}elseif(btn==next){ j+=1; //当按下next后将下一曲选定if(j>=name.length)j=0; //若之前选定为最后一首,则跳到第一首playbutton=true;loopbutton=false;}elseif(btn==loop){ if(loopbutton==false){loopbutton=true;playbutton=true;}else{ //按下loop后,改变循环状态和播放状态loopbutton=false;playbutton=false;}}if(playbutton==true)Yu.run();else{songname.setText("暂停播放:"+playname); //暂停播放歌曲play.setIcon(new ImageIcon("2.png"));}}public void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}public void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}public void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stub}public void mouseReleased(MouseEvent arg0) {// TODO Auto-generated method stub}public void itemStateChanged(ItemEvent arg0) {String str=songlist.getSelectedItem();playsong.stop();for(int i=0;i<name.length;i++)if(str==name[i]){j=i;break;}Yu.run();}public void run(){playsong=song[j]; //播放状态为播放时playsong.play(); //播放选定歌曲playname=name[j];if(loopbutton==true){playsong.loop(); //循环播放选定歌曲songname.setText("循环播放:"+playname);}elsesongname.setText("正在播放:"+playname);songlist.select(j); //播放列表中选定播放歌曲项目play.setIcon(new ImageIcon("5.png"));}public AudioClip loadSound(String filename){ //返回一个AudioClip对象URL url=null;try{url=new URL("file:"+filename);}catch(MalformedURLException e){ }return Applet.newAudioClip(url);}}5、程序运行结果四、课程设计总结经过这几天的Java课程设计,让我知道了做课程设计的一般方法,通过各种努力终于完成了设计要求.这次课程设计基本上含盖了大学一年学习到的Java 语言知识点,课设题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。
音乐播放器毕业设计
![音乐播放器毕业设计](https://img.taocdn.com/s3/m/cee7808d6294dd88d0d26b9f.png)
摘要在信息,技术高速发展的今天,多媒体技术也越来越受到人们的重视。
文章对目前使用较多的音乐播放器作出较详细的比较。
通过阅读多张文献,分析了一些音乐播放器的功能并考虑了怎样能实现支持更多格式的音乐文件,怎样能满足使用者对播放器的需求。
本文主要介绍了一个基于Java Applet来实现的音乐播放器的设计。
并对系统开发中涉与到的关键技术作了探讨,简要分析介绍了Java技术和 Applet的工作原理,最后说明系统需要实现的功能。
音乐是一种声音符号,表达人的思想感情。
是人们思想的载体之一。
音乐是有目的和内涵的,其中隐含了作者的生活体验,思想情怀。
一款好的pc音乐播放器不仅能够提供好的音乐播放效果,更能够为用户提供方便的操作。
本设计利用java语言和eclipse 编辑工具对播放器进行编写。
同时给出了详细的系统设计过程、部分界面图与主要功能运行流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能与一体,性能良好。
该播放器支持MP3、WAV、MP3和AIFF等音频格式。
在开发的过程中采用瀑布模型。
第一阶段首先对项目进行全面、仔细的需求分析,并准确做出项目进度安排,明确每个阶段的任务;第二阶段是进行项目分模块编码;第三阶段对项目进行全面的测试和系统集成测试。
关键词: JAVA;Eclipse;模块化; Applet;AbstractIn the information,the rapid development of technology today,the multimedia technology is becoming more and more attention.This paper makes comparison of the detail to the current use of more music player.By reading a plurality ofliterature,analysis of some function of music player and consider how to achieve the support more format music to meet the needs of users of the player.This paper mainly introduces the design of a Java based Applet to achieve music player.And the key technologies involved in the system development are discussed and analyzed brieflyintroduces the work principle of Java technology and Applet,finally indicated that the system needs to realize the function.The music is a sound symbolic expressing the mood and thinking. It is the carrier of people's thinking. Music is the purpose and content, which implied the au thor's life experiences and feelings. A good pc music player can not only provide g ood music playing effect, but also provide users with convenient operation.The player is using java language and eclipse editing tools. Giving a detailed s ystem design process, part of the interface map and run flow chart of the main fun ction, this article discussed in detail on problems and solution method in the devel opment process. The music player set to play, pause, stop, fast forward, rewind, a nd the next one, on a volume adjustment functions with one good performance. Th e player supports MP3, WAV, MP3, AIFF, etc. audio formats. The model in the dev elopment process is Waterfall model. The first phase is the project of comprehensi ve and careful needs analysis, accurately making the project schedule and clearin g each stage of the task. The second phase of the project is sub-module coding. T he third stage, the project testing and system integration testing.key words:JAVA ;Eclipse;Modularization; Applet;目录毕业论文(设计)诚信承诺书 ............................................................................ 错误!未定义书签。
Java综合实验-简易音乐播放器-实验报告
![Java综合实验-简易音乐播放器-实验报告](https://img.taocdn.com/s3/m/2f44f8a2ed3a87c24028915f804d2b160b4e8620.png)
Java综合实验实验报告一、实验要求根据下列描述:为某音乐爱好者开发音乐管理系统,该系统可以为音乐爱好者对已有的音乐信息检索、音乐播放、音乐收藏进行管理。
(1)音乐检索:对指定音乐名称进行检索,获取音乐的基本信息。
(2)音乐播放:对已有音源的音乐进行播放音乐收藏:对喜欢的音乐进行收藏管理,记录音源的位置等;二、核心思想利用MVC模式,结合javafx和SceneBuilder开发音乐管理系统三、实验原理四、实验环境Window 11、JDK-17、Intellij IDEA、JavaFX Scene Builder 2.0五、核心代码:1.业务逻辑:①User类package prehensiveExperiment.logic;import java.util.ArrayList;import java.util.List;/*** 用户类* 这个类记录了用户信息:账号、密码以及自己维护的音乐收藏*/public class User {private String account;private String password;private List<Music> musicCollection;public User(String account, String password) {this.account = account;this.password = password;musicCollection = new ArrayList<>();}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}/*** 获取音乐收藏* @return musicCollection*/public List<Music> getMusicCollection() {return musicCollection;}/*** 收藏歌曲* @param music*/public void addMusic(Music music){musicCollection.add(music);}/*** 取消收藏* @param music*/public void deleteMusic(Music music){musicCollection.remove(music);}@Overridepublic String toString() {return "User{" +"account='" + account + '\'' +", password='" + password + '\'' +", musicCollection=" + musicCollection +'}';}}②Music类:package prehensiveExperiment.logic;/*** 音乐类* 这个类记录了歌曲的信息:歌曲名、歌手、歌曲时长、大小、发行时间、专辑*/public class Music implements Comparable<Music>{private String name;private String singer;private String totalTime;private String size;private String startTime;private String album;public Music(String name, String singer, String totalTime, String size, String startTime, String album) { = name;this.singer = singer;this.totalTime = totalTime;this.size = size;this.startTime = startTime;this.album = album;}public String getName() {return name;}public void setName(String name) { = name;}public String getSinger() {return singer;}public void setSinger(String singer) {this.singer = singer;}public String getTotalTime() {return totalTime;}public void setTotalTime(String totalTime) {this.totalTime = totalTime;}public String getSize() {return size;}public void setSize(String size) {this.size = size;}public String getStartTime() {return startTime;}public void setStartTime(String startTime) {this.startTime = startTime;}public String getAlbum() {return album;}public void setAlbum(String album) {this.album = album;}/*** 默认按歌手排序* @param o* @return*/@Overridepublic int compareTo(Music o){return pareTo(o.singer);}@Overridepublic String toString() {return "Music{" +"name='" + name + '\'' +", singer='" + singer + '\'' +", totalTime='" + totalTime + '\'' +", size='" + size + '\'' +", startTime='" + startTime + '\'' +", album='" + album + '\'' +'}';}}③MusicSys类:package prehensiveExperiment.logic;import java.io.File;import java.io.FileNotFoundException;import java.util.ArrayList;import parator;import java.util.List;import java.util.Scanner;/*** 音乐管理系统* 这个类维护了用户音乐收藏、本地音乐以及播放器的常规操作*/public class MusicSys {private Music currentMusic;private int index;//当前播放音乐的索引值private String state;private double volume;private List<User> users;//用户private int index2;//当前登录用户的索引值private List<Music> musics;//本地音乐private static MusicSys instance = null;//单例模式/*** 构造函数* 分别调用createUser()和createMusic()录入用户和音乐信息* 播放器初始状态:默认关闭(state = OFF),如果打开默认播放第一首歌(index=0),音量调至一半(volume = 0.5)* @throws FileNotFoundException*/private MusicSys() throws FileNotFoundException {users = new ArrayList<>();musics = new ArrayList<>();createUser();createMusic();index = 0;currentMusic = musics.get(index);state = "OFF";volume = 0.5;}/*** 单一工厂* @return instance* @throws FileNotFoundException*/public static MusicSys getInstance() throws FileNotFoundException {if(instance == null)instance = new MusicSys();return instance;}/*** 这个方法通过扫描事先写好的User.txt文件,将用户信息一条条录入。
基于java音乐播放器设计
![基于java音乐播放器设计](https://img.taocdn.com/s3/m/6cdc2ce3e87101f69f31957b.png)
基于java的音乐播放器的设计摘要:在信息,技术高速进展的今天,多媒体技术也愈来愈受到人们的重视。
文章对目前利用较多的音乐播放器作出较详细的比较。
通过阅读多张文献,分析了一些音乐播放器的功能并考虑了如何能实现支持更多格式的音乐文件,如何能知足利用者对播放器的需求。
本文要紧介绍了一个基于Java Applet来实现的音乐播放器的设计。
并对系统开发中涉及到的关键技术作了探讨,简要分析介绍了Java技术和 Applet的工作原理,最后说明系统需要实现的功能。
关键词:java;Applet;音乐播放器;前言最近几年来,听音乐已成为人们生活的一部份,与此同时,音乐播放器以其平易近人的价钱也日趋普及,这大大丰硕了业余生活也减缓了工作压力,但尚有诸多不足的地方有待改良日常生活中,咱们在听音时,常感手动操作甚是麻烦且想寻觅某个音频文件须从头至尾逐个查看,如此费时费力很是不便。
音乐播放器的实现方式,采纳口述音乐文件名的方式即可播放指定歌曲文件,幸免了繁琐的查找,亦使其加倍人性化,实现了播放器的全自动语音操纵。
我以后要采纳java Applet的多媒体技术,设计出一个基于java Applet的音乐播放器。
此刻电脑上的音乐播放器百花齐放,以Winamp,Foobar2000,千千静听,酷狗和酷我音乐盒最流行。
播放器最重要的参数当属支持的格式了,即便只图个响,也需要有丰硕的格式作为后盾。
在此方面,千千静听支持多种音频格式,除常见的MP3,WMA等,也支持APE,FLAC等无损紧缩格式,它一共支持三十多种音频格式,是一个比较全能的播放器。
Winamp也支持超级多的格式,但对APE 格式的支持需要安装对应插件;除音频格式外,Winamp还支持一些常见的视频格式,那个功能能为用户带来一些方便。
Foobar2000支持的格式数量也差不多,可是对APE的支持仍然需要安装插件。
只是Foobar2000有一个特色功能,它支持直接读取紧缩包里的音乐文件,从电骡上下载的APE完整碟通常都是打包的,若是用Foobar2000的那个功能就能够够不解压直接听歌了。
音乐播放器课程设计报告
![音乐播放器课程设计报告](https://img.taocdn.com/s3/m/d78c6d3c6f1aff00bfd51e80.png)
目录一、设计任务要求 ................................................................................................ - 2 -1、课程设计题目 ............................................................................................. - 2 -2、工程设计总述 ............................................................................................. - 4 -二、选择器件 .......................................................................................................... - 4 -三、功能模块 .......................................................................................................... - 4 -1.分频器(div) ............................................................................................... - 4 -2、计数器(notetabs)................................................................................... - 6 -3、选择模块(choice)................................................................................... - 7 -4、数据翻译模块(tontaba): ...................................................................... - 9 -5、译码器模块(deled) .............................................................................. - 10 -6、数控分频器模块(speakera)................................................................ - 14 -7、乐谱数据ROM(四个模块)................................................................. - 15 -四、总体设计电路图 ............................................................................................ - 21 -1、顶层设计的电路原理图 ........................................................................... - 21 -2、顶层设计的仿真结果: ........................................................................... - 22 -3、电路的顶层文件管脚分配图 ................................................................... - 22 -五、心得体会 ........................................................................................................ - 22 -音乐播放器课程设计一、设计任务要求1、课程设计题目设计一个乐曲演奏电路,能够自动播放2首音乐。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java课程设计报告题目:java音乐播放器姓名学号院系班级专业任课教师1.设计内容及要求能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录一个简单的基于java语言的音乐播放器,菜单栏:文件,播放控制和播放列表,文件菜单包含打开、循环和退出三个菜单项;播放控制菜单包含播放、暂停和停止三个菜单项,播放列表菜单则是当向里面添加歌曲之后才能够查看到里面所包含的歌曲目录。
当播放歌曲时,可以调节音量大小或者设置是否静音;可以查看当前播放音乐的相关属性,如:歌曲名,歌手,发布时间,所属专辑等等。
2.需求分析1、时间跟踪条:根据歌曲播放的进度,控制条自动进行追踪,用户可以随时了解歌曲的播放进度2、音量控制键:可以点击该控键进行音量大小的调节以及是否静音的设置3、属性查询键:通过该控键,用户可以查看当前播放音乐的相属性,获取关于该歌曲的用户所需的相关信息。
4、菜单栏:①文件:打开:用户通过该菜单项打开本地音乐文件,听任何用户想听的歌曲循环:通过循环设置,用户可以重复的播放一首喜欢的歌曲退出:退出音乐播放器,及退出该程序②播放控制:播放:选择歌曲之后,通过点击播放菜单项启动播放器播放音乐暂停:暂停当前正在播放的音乐停止:停止当前正在播放的音乐③播放列表:当用户通过文件打开本地音乐文件后,及相当于在播放列表里面添加了歌曲,及形成相应的歌曲播放目录3.总体设计结合需求分析来看,整个设计包含了简单的菜单栏,根据用户需求设置了三个简单的实现基本操作的菜单,分别是:文件,播放控制,播放列表;根据具体的操作每个菜单还包含了相应的菜单项,文件:打开,循环,退出;播放控制:播放,暂停,停止;播放列表则没有菜单项,该菜单就是用来显示或者查看相应的歌曲目录的。
该音乐播放器设置了两个窗口,运行程序时打开的初始化欢迎界面,用户可以根据自己的需求进行菜单栏里面的基本操作和相应的设置,当用户添加或者打开音乐播放文件的时候,程序将会显示出第二个音乐文件播放窗口,与此同时,第一个初始化窗口将会自动隐藏,在音乐播放窗口里面用户可以进行相关的音乐播放的控制操作。
当用户进入音乐播放窗口时,该窗口有几个快捷控制的控键:时间追踪轴:可以实现播放的前进、后退功能,根据用户需求调节音乐的播放进度等;音量控制:设置静音,打开扬声器或者调节音量大小;播放列表:查看当前播放音乐的相关属性。
4.主要功能设计流程5.系统实现及测试:(一)JMF(java媒体框架)简介JMF 即Java媒体框架。
其核心框架支持不同媒体,如音频输出和视频输出,包括时间的时钟同步。
它是一个标准的扩展框架,允许用户制作纯音频流和视频流。
JMF实际上是Java的一个类包。
它包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。
JMF软件是Java Media系列软件的一部分。
采用各种Java Media API,软件开发商人员就能容易、快速地为他们已有的各种应用程序和客户端,Java小程序增添丰富的媒体功能,如流式视频、3D图像和影像处理等。
就是说,各种Java Media API发挥了Java平台的固有优势,将"编写一次,到处运行"的能力扩展到了图像、影像和数字媒体等各种应用领域,从而大大缩减了开发时间和降低了开发成本。
在开发JMF 应用程序之前要完全理解JMF 的体系架构、接口和类。
就拿我们的家用摄像机系统作个例子。
首先用摄像机拍摄内容,拍摄下来的内容录制在DV带中。
DV带可以放在放像机里播放、放像机提供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱里听到声音。
JMF API 提供的也是同样的模型。
JMF 提供的模型可大致分为七类* 数据源(Data source)* 截取设备(Capture Device,包括视频和音频截取设备)* 播放器(Player)* 处理器(Processor)* 数据池(DataSink)* 数据格式(Format)* 管理器(Manager)如果只是想观看捕获的内容,只需要使用捕获数据源创建播放器Player即可。
如果想把捕获的数据发送到网络或者保存起来,就需要创建处理器Processor。
基本步骤是首先获取视频、音频捕获设备的信息,然后再根据取得的设备信息确定设备的位置。
找到设备的位置以后,调用ManageCreatePlayer 方法创建Player,当Player开始播放的时候,就开始了捕获的过程。
有多种方法获得捕获设备信息,可以通过查询指定的格式,也可以查询特定的设备名字。
Player准备好播放数据,当Player发出这个事件时,就可以获取播放器的可视面板和控制面板了。
具体步骤如下:1. 先把所有的捕获设备调出来2. 创建Player,当Play开始的时候,就开始了音频捕获的过程3.以MediaLocator为参数,创建Player4. 为PLAYER添加监听器,以便监听RealizeComplete事件(二)代码实现(1)添加库、包等相关文件import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;(2)初始化窗口1代码实现private void init() {// TODO Auto-generated method stubthis.setLayout(new BorderLayout());JPanel lrcPanel = new JPanel();JPanel controP= new JPanel();jta = new JTextArea(22,35);jta.setBackground(Color.black);jta.setLineWrap(true);jta.setWrapStyleWord(true);jta.setEditable(false);lrcPanel.add(new JScrollPane(jta));lrcPanel.setBackground(Color.black);lrcPanel.setVisible(true);JButton Jstart= new JButton("");Jstart.setIcon(new ImageIcon("start.png"));Jstart.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stubstart();}});JButton Jpause=new JButton();Jpause.setIcon(new ImageIcon("停止.png")); Jpause.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){stop();}});JButton Jnext =new JButton();Jnext.setIcon(new ImageIcon("next.png"));Jnext.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubnext();}});JButton Jprior =new JButton();Jprior.setIcon(new ImageIcon("back.png"));Jprior.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){back();}});controP.setLayout(new FlowLayout());controP.add(Jprior);controP.add(Jstart);controP.add(Jpause);controP.add(Jnext);this.add(lrcPanel,BorderLayout.CENTER); this.add(controP,BorderLayout.SOUTH);}(3)音乐播放窗口机基本功能的实现①界面②代码实现// 播放方法public void start() {if(isplaying==false){try {player =Manager.createPlayer(new File(mp3List.get(mp3NO)).toURI().toURL());jta.setText(null);} catch (NoPlayerException e) {// TODO 自动生成catch 块e.printStackTrace();System.out.println("不能播放此文件!");return;} catch (IOException e) {// TODO 自动生成catch 块e.printStackTrace();return;}if (player == null) {System.out.println("播放文件为空!");return;}player.addControllerListener(this);// 提取媒体内容player.prefetch();isplaying=true;//正在播放一首歌setLrc();}}private void setLrc() {// TODO Auto-generated method stubFile lrcfile = new File(lrcpath);if(!lrcfile.exists()){lrcfile.mkdir();}String lrcFName = getlrcFName();BufferedReader bReader;File lcf= new File(lrcpath+lrcFName+".lrc");System.out.println(lcf.getName());try {bReader = new BufferedReader(new FileReader(lcf));String s;while((s=bReader.readLine()) != null){jta.append(" "+s);jta.append("\n");}} catch (Exception e) {// TODO Auto-generated catch blockjta.setText("没有歌词");System.out.println("没有歌词文件!");}}private String getlrcFName() {//解析歌曲名;// TODO Auto-generated method stubString musicPath = mp3List.get(mp3NO);String s =musicPath.substring(11);System.out.println(s);String []str = s.split("\\.");String lrcFName=str[0] ;System.out.println(lrcFName);return lrcFName;}public void stop(){player.stop();isplaying=false;}public void next(){if(isplaying==true)stop();if(mp3NO<mp3List.size()-1){mp3NO++;start();}else{jta.setText("没有下一首了(<_>");}}public void back(){if(isplaying)stop();if(mp3NO>0){mp3NO--;start();}elsejta.setText("已经是第一首歌了(<_>)");}public void controllerUpdate(ControllerEvent e) {// 当媒体播放结束时,循环播放if (e instanceof EndOfMediaEvent) {isplaying=false;mp3NO++;System.out.println(mp3NO);if (mp3NO < mp3List.size()) {this.start();}return;}// 当提取媒体的内容结束if (e instanceof PrefetchCompleteEvent) {System.out.println("内容结束");player.start();return;}// 当实例化后if (e instanceof RealizeCompleteEvent) {System.out.println("实例化");// pack(); //执行pack()操作return;}}public void setMp3List(){File file = new File(musicpath);if( !file.exists()){file.mkdir();}File[] mcFiles ;mcFiles = file.listFiles();if(mcFiles!=null){for(File f : mcFiles){ System.out.println(f.getPath());mp3List.add(f.getPath());}}elseSystem.out.println("MyMusic中没有歌曲文件");}6.总结与说明在做写程序实现功能的过程中,界面和基本功能的设计需要较强的逻辑思维,一不小心就容易出错,在具体的功能设计和实现的过程中要尽可能用最简单的语句实现基本的播放器功能。