基于CS架构音乐播放器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于CS架构音乐播放器

基于CS架构音乐播放器   摘要:本文论述了采用Java语言开发一种基于C/S架构的音乐播放器,利用JMF(Java Media Framework)实现播放功能。该播放器除实现普通播放器的功能外,其亮点在于可以自动或手动下载歌词并保存,并且可以自动进行歌词同步。该播放器设计界面简洁,功能强大,并且占用内存小,执行速度快。   关键词:音乐;JMF;播放器   中图分类号:TS954 文献标志码:A 文章编号:1674-9324(2014)49-0072-03   随着因特网在我国的普及,随之而来的是各式各样的播放器软件。尽管未来的音乐播放器将具备各种丰富多彩的功能,但作为一款多媒体软件,音频应用才是最基本的,也是最能决定获取用户数量的因素。 基于上述分析,音质高、外形美观、小巧且功能强大是未来播放器发展的主流趋势。Java MP3音乐播放器的播放歌曲的功能是通过JMF这个jar包里面的MediaPlayer来实现,它的play和stop方法分别实现播放和暂停功能,该播放器由歌曲控制模块、歌曲列表模块和歌词显示模块三部分组成。该播放器采用客户端/服务端(C/S)设计模式,利用“千千静听”歌词服务器作服务端,以Myeclipse 10.0作为开发环境。   一、播放器界面的实现效果   该界面清晰明了,采用Java的界面编辑技术,控件简约,所消耗的系统资源较少,运行高效快速。值得改进的地方是:可以在歌词的背景处加上背景图片,功能不是很齐全,等等。   二、播放器的基本功能   结合音乐播放器所要实现的内容,我们列出用户操作的模块,其中每个模块对应一个功能。播放器的功能应当实现市面上比较常见播放器的所有功能,并且在界面上应当操作简单,还应添加一些比较特殊的功能,比如歌词下载。经过分析后确定该播放器应具备的功能如图2所示。   三、关键技术以及改进方法   该论文所描述的播放器采用多线程来进行控制,一个主页面是一个线程,播放歌曲是一个线程。主线程就是主页面所处的线程,它动态的对歌曲名称、播放时间、播放进度和歌词显示来进行更新。播放歌曲的线程是一个位于主线程里的一个进程,控制这个进程的开始和结束来影响主线程里数据的读写和显示,所以对于线程的控制是必要的。   1.播放功能模块以及界面的设计。歌曲控制面板视图如图3所示。播放、暂停和停止都依赖于主线程中的三个控制boolean变量,一个是play,另一个是pause,第三个是stop。初始值:stop=true,play=false,pause=false。   播放、暂停、停止功能的具体实现。当play和pause都为false的时候,此时只能通过双击控制实现,双击之后会启动一个歌曲播放的进程,用来控制歌曲的具体播放动作。当歌曲的状态是暂停时,就可以继续点击暂停按钮,达到播放的效果。此时,无需重新新建一个线程,只需让原来暂停的线程重新启动,同时需要改变变量stop和play。当然,还需要考虑到主线程,当play的状态为true时,主线程才能跑的顺利。停止只有在stop为false时起作用,与pause和play无关,即无论歌曲是暂停还是播放,都可以选择停止。首先就是把musicprocess线程停止,然后就需要把stop的状态改为true,还有需要把play的状态改为false,这样做的作用是控制主线程不要一直run,然后还需要把歌曲的播放时间设置为0:00,这样就基本实现了歌曲的停止功能。   2.基本操作模块的实现。①上一曲和下一曲的实现也是通过按钮来实现的。当歌曲播放状态为停止,亦及stop状态为true时,是不能进行上下一曲操作的。但是,当歌曲处于暂停或者播放状态,这个操作都是可以完成的。特别需要注意边界的问题,最重要的还是实现了自动滚动条定位的功能。首先判断歌曲播放的状态,不是停止状态,才会导致上下一曲功能生效,然后就是进行边界判断,边界判断之后,就需要原来播放歌曲的musicprocess线程停止掉,新建一个musicprocess线程,来播放新的歌曲,线程启动后,play的状态同样得设置为true,这样做是为了避免前面提到的,当初始播放状态为暂停时,点击上下一曲歌曲还是暂停的情况。同时在主线程里面,需要将时间与歌曲总时间设置完成,并且需要将进度条也设置为初始位置,歌曲名称也需要设置成新的歌曲名称。下载歌词、解析歌词、同步歌词,这其实都是连贯动作,下载前需要判断是否存在歌词,存在就不会再下载了。②快进、快退算的上是一个播放器的核心功能,快进、快退需要涉及到一个计算过程及歌曲播放时间和进度条之间的关系,还关联到歌词同步的问题。根据进度条的拉动距离和总的拉动距离之间的比例乘以总共的歌曲播放时间,就能算出歌曲应该播放的时间,这样就能设置出歌曲播放的时间

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档