欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于java的音乐播放器课程设计报告(共12页).doc

    • 资源ID:16292859       资源大小:228KB        全文页数:12页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于java的音乐播放器课程设计报告(共12页).doc

    精选优质文档-倾情为你奉上 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为参数,创建Player 4. 为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=str0 ;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();elsejta.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();else System.out.println("MyMusic中没有歌曲文件");6总结与说明在做写程序实现功能的过程中,界面和基本功能的设计需要较强的逻辑思维,一不小心就容易出错,在具体的功能设计和实现的过程中要尽可能用最简单的语句实现基本的播放器功能。我觉得可以设计更多的菜单及菜单项目从而实现更多的功能,如:删除,保存等,还可以实现更多的背景效果或者更多可选择的皮肤,还可以对按钮添加音效效果,这样感觉整个音乐播放器更具有灵活性,媒体感更强烈一些,界面会更加丰富和生动一些。 通过自己做课程设计,自己设计界面,功能和设计功能的代码实现,将理论知识运用到实际操作中,加深了对理论知识的理解和记忆,在做程序设计的过程中,对很多代码的多次操作和重复使用,使得对很多基本的代码和相关的操作能够牢固的记忆。

    注意事项

    本文(基于java的音乐播放器课程设计报告(共12页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开