




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于JAVA的Mp3播放器JMPlayer作 者 姓 名 专 业 计算机科学与技术 指导教师姓名 专业技术职务 讲 师 山东轻工业学院本科毕业设计论文原创性声明本人郑重声明:所呈交的毕业论文,是本人在指导教师的指导下独立研究、撰写的成果。论文中引用他人的文献、数据、图件、资料,均已在论文中加以说明,除此之外,本论文不含任何其他个人或集体已经发表或撰写的成果作品。对本文研究做出重要奉献的个人和集体,均已在文中作了明确说明并表示了谢意。本声明的法律结果由本人承当。毕业论文作者签名: 年 月 日山东轻工业学院关于毕业设计论文使用授权的说明本毕业论文作者完全了解学校有关保存、使用毕业论文的规定,即:学
2、校有权保存、送交论文的复印件,允许论文被查阅和借阅,学校可以公布设计论文的全部或局部内容,可以采用影印、扫描等复制手段保存本论文。指导教师签名: 毕业设计论文作者签名: 年 月 日 年 月 日 目 录 TOC o 1-3 h z u HYPERLINK l _Toc265409224 摘 要 PAGEREF _Toc265409224 h III HYPERLINK l _Toc265409225 ABSTRACT PAGEREF _Toc265409225 h IV HYPERLINK l _Toc265409226 第一章 引言 PAGEREF _Toc265409226 h 1 HYPE
3、RLINK l _Toc265409227 1.1 课题研究背景及意义 PAGEREF _Toc265409227 h 1 HYPERLINK l _Toc265409228 1.2 音乐播发器的开展及历史 PAGEREF _Toc265409228 h 1 HYPERLINK l _Toc265409229 1.3 系统开发目标 PAGEREF _Toc265409229 h 2 HYPERLINK l _Toc265409230 1.4 本文的主要内容和结构 PAGEREF _Toc265409230 h 2 HYPERLINK l _Toc265409226 第二章 相关工具及技术介绍
4、PAGEREF _Toc265409226 h 1 HYPERLINK l _Toc265409232 2.1 Eclipse简介 PAGEREF _Toc265409232 h 3 HYPERLINK l _Toc265409233 2.2 Java Thread简介 PAGEREF _Toc265409233 h 4 HYPERLINK l _Toc265409234 2.3 JavaSound简介 PAGEREF _Toc265409234 h 5 HYPERLINK l _Toc265409235 2.4 Java Swing简介 PAGEREF _Toc265409235 h 6 H
5、YPERLINK l _Toc265409236 2.5 Java Properties简介 PAGEREF _Toc265409236 h 7 HYPERLINK l _Toc265409237 第三章 需求分析 PAGEREF _Toc265409237 h 9 HYPERLINK l _Toc265409238 3.1 工作流程分析 PAGEREF _Toc265409238 h 9 HYPERLINK l _Toc265409239 3.2 评价具体需求分析 PAGEREF _Toc265409239 h 9 HYPERLINK l _Toc265409240 3.3 系统功能结构图
6、PAGEREF _Toc265409240 h 9 HYPERLINK l _Toc265409241 3.4 功能详细描述 PAGEREF _Toc265409241 h 10 HYPERLINK l _Toc265409242 Mp3播放 PAGEREF _Toc265409242 h 10 HYPERLINK l _Toc265409243 3.4.2 播放控制 PAGEREF _Toc265409243 h 10 HYPERLINK l _Toc265409244 3.4.3 播放信息控制 PAGEREF _Toc265409244 h 10 HYPERLINK l _Toc26540
7、9245 3.4.4 Mp3列表管理 PAGEREF _Toc265409245 h 11 HYPERLINK l _Toc265409246 3.4.5 歌词 PAGEREF _Toc265409246 h 11 HYPERLINK l _Toc265409247 3.4.6 其他 PAGEREF _Toc265409247 h 11 HYPERLINK l _Toc265409248 第四章 总体设计 PAGEREF _Toc265409248 h 12 HYPERLINK l _Toc265409249 4.1 系统要求 PAGEREF _Toc265409249 h 12 HYPERL
8、INK l _Toc265409250 4.2 系统功能描述 PAGEREF _Toc265409250 h 12 HYPERLINK l _Toc265409251 4.3 系统运行环境 PAGEREF _Toc265409251 h 13 HYPERLINK l _Toc265409252 4.4 系统设计思想 PAGEREF _Toc265409252 h 13 HYPERLINK l _Toc265409253 4.4.1 总体流程设计 PAGEREF _Toc265409253 h 13 HYPERLINK l _Toc265409254 4.4.2 Mp3播放设计 PAGEREF
9、_Toc265409254 h 14 HYPERLINK l _Toc265409255 4.4.3 播放模式设计 PAGEREF _Toc265409255 h 15 HYPERLINK l _Toc265409256 4.4.4 Mp3文件列表管理设计 PAGEREF _Toc265409256 h 15 HYPERLINK l _Toc265409257 4.4.5 歌词设计 PAGEREF _Toc265409257 h 16 HYPERLINK l _Toc265409258 4.4.6 皮肤切换设计 PAGEREF _Toc265409258 h 17 HYPERLINK l _T
10、oc265409259 4.4.7 显示模式设计 PAGEREF _Toc265409259 h 18 HYPERLINK l _Toc265409260 第五章 详细设计 PAGEREF _Toc265409260 h 19 HYPERLINK l _Toc265409261 5.1 界面设计 PAGEREF _Toc265409261 h 19 HYPERLINK l _Toc265409262 5.2 系统关键类设计 PAGEREF _Toc265409262 h 20 HYPERLINK l _Toc265409263 5.3 系统类结构 PAGEREF _Toc265409263 h
11、 22 HYPERLINK l _Toc265409264 第六章 软件功能实现 PAGEREF _Toc265409264 h 23 HYPERLINK l _Toc265409265 6.1 播放Mp3实现 PAGEREF _Toc265409265 h 23 HYPERLINK l _Toc265409266 6.2 Mp3文件解析实现 PAGEREF _Toc265409266 h 23 HYPERLINK l _Toc265409267 6.3 Mp3列表控制类实现 PAGEREF _Toc265409267 h 23 HYPERLINK l _Toc265409268 6.4 Mp
12、3歌词解析及显示控制实现 PAGEREF _Toc265409268 h 24结束语 HYPERLINK l _Toc265409269 PAGEREF _Toc265409269 h 25 HYPERLINK l _Toc265409270 参考文献 PAGEREF _Toc265409270 h 26 HYPERLINK l _Toc265409271 致 谢 PAGEREF _Toc265409271 h 27摘 要随着java 语言的出现,软件的跨平台性已经能被更进一步的解决和处理,随着Internet的开展,软件的跨平台性又被提高到另一个新的要求。音乐播放器是一种用于播放各种音乐文件
13、的多媒体播放软件。它涵盖了各种音乐格式的播放工具,比方:MP3播放器,WMA播放器,MP4播放器等。它们不仅界面美观,而且操作简单,带你进入一个完美的音乐空间。本系统是一个简单的Mp3音乐播放器实现,旨在借助于java语言的强大的跨平台特性来实现本播放器的跨平台的通用。但由于设计时间有限目前仅支持mp3和wav格式音乐文件的播放。本系统的主要使用了Java中的多线程编程,系统中的mp3播放、歌词解析及显示、播放时间的显示控制、播放器的主界面等都是单独采用一个独立的线程来进行管理控制的。本系统在结构上的核心设计模式采用了GOF的中介者模式,以此来使各个模块的相互耦合度降到最低,以便更容易的进行各
14、个模块的独立的开发从而使整个系统的灵活性和可扩展性都得到提高。开发时采用TDD。关键词 Java MusicPlayer multi-threadABSTRACTWith the development of java language, cross-platform natures of the software have been resolved and processed can be further, as the Internets development, cross-platform of software has been raised to another of the n
15、ew requirements.Music player is a multimedia playback software which can be played variety of music files. It covers player tools that can be played a variety of music formats, such as, MP3 player, WMA player, MP4 player. It not only has the beautiful interface but also operate simply. It will take
16、you into a perfect music world.This system is a simple Mp3 music player .With the help of java language features thats a powerful cross-platform, player is to be achieved this common cross-platform. As the time is limited , the Mp3 Player only can support mp3 and wav music files.The main use of this
17、 system is multi-thread in the Java program .In the system the mp3 playing, lyrics analysed and displayed, the control of play time, and the players main interface are all used of an individual thread.The structure of the systems core design is using an Mediator Pattern which is called GOF pattern,
18、in order to enable each module to minimize the coupling. In order to more easily carry out the independently developed of each module .So the system flexibility and scalability can be improved. The project was developed in TDD REF _Ref202118323 r h * MERGEFORMAT 4.Key WordsJava;MusicPlayer;multi-thr
19、ead第一章 引言1.1 课题研究背景及意义当今时下, 随着信息技术的不断开展,软件技术的开展也是日新月异,人们对于音乐的享受方式也是不断的发生变化,各种音乐播放软件让人们享受变的更加的舒适,愉快和方便。基于编程语言的不同以及Internet 的开展,现在比拟流行的音乐播放的形式有软件播放像千千静定,酷我音乐盒等,在线软件播放像百度的在线音乐盒,以及各大门户网站根本上都提供了在线收听音乐的效劳。在线收听的形式可以不依赖于操作系统的软件环境但凡能与Internet连接的计算机都可以进行在线收听。但在收听也有它的局限性,像无法与Internet连接时。这时候本地的音乐播放软件就显示出它的优势来了,
20、但由于操作系统的本身软件环境及生产厂家的限制,使用非可夸平台语言编写的音乐播放软件无法做到在操作系统上的共用,此题目的意义在于使用java这种跨平台的语言,编写一个通用的音乐播放软件。1.2 音乐播发器的开展及历史时下,音乐播放器已经成为人们生活中不可或缺的必备品。它的诞生,让动听的声音有了存储的载体,得以广泛的传播和分享。接下来,笔者就针对它的开展史做个简单的回忆。1877年12月,爱迪生公开表演了留声机,“会说话的机器诞生的消息,立刻轰动了全世界。外界舆论马上把他誉为科学界之拿破仑,留声机也成为19世纪最引人振奋的三大创造之一。1898年,丹麦的V.波尔森创造了钢丝录音机,从此,以硬磁性材
21、料为载体,利用磁性材料的剩磁特性将声音信号记录在载体,具有重放、录音功能的磁带录音机开始在家庭普及。随着社会的开展和科技的进步,人们对音色品质的追求越来越高。老式录音机音色简单、苍白的特性,使其逐渐被社会淘汰。代表着更清晰、立体声、更浑厚音质的播放器CD正式登上舞台。1982年,世界上第一台CD播放器、同时也是索尼生产的第一台CD播放器诞生了Sonys CDP-101。CD的出现,依靠完美的音质表现、快捷搜歌、方便携带等功能,风行了播放器市场10多年之久。直到 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank
22、 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3的出现。尽管1995年9月9日发布的第一款实时 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=164 t _blank 软件 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _bla
23、nk MP3播放器Winplay3,已经让许多人能够在自己的个人 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=38 t _blank 电脑上编码和回放 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3文件,音乐播放器的智能时代正式来临,但是由于PC和互联网的开展所限, HYPERLINK :/produ
24、ct.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3并没有获得广泛的普及。直到2001年10月,苹果公司推出了第一代IPOD,将 HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=111 t _blank HYPERLINK :/product.pc165 /product_Sclass.asp?sclassid=126 t _blank MP3
25、播放器演绎到艺术与文化的境界。它不仅容量巨大,操作智能,而且外形时尚,一经推出,即刻获到全球范围内的热捧!苹果公司之所以强大,除了自身强大的研发能力和创新意识以外,善于利用外设厂商资源,也是其成功的重要一环。在苹果的研发基地,来自全球70多家顶尖配件厂商共同参与苹果每一款新品的研发过程。世界顶级音响制造品牌JBL、哈曼卡顿、全球最知名的三大耳机品牌UE、ETY、WESTONE都量身为IPOD打造完美的声音输出设备,让IPOD完美的音质得以淋漓尽致的展现。 1.3 系统开发目标本系统的开发目标为: 开发出一个不受操作系统(此操作系统必须支持JAVASE)限制的mp3音乐播放器。此播放器要实现一般
26、常见播放器的一些通用的功能。要求系统的各个模块之间尽可能的到达高内聚,低耦合,要求系统具有较高的可维护性和可扩展性。1.4 本文的主要内容和结构本论文由五章构成,其中第四、五章为核心局部,讲述了系统的实现。具体的每个章节的主要内容如下:第一章 引言。主要介绍了课题的研究背景及意义以及系统的开发目标以及mp3播放器的开展历史。第二章 相关工具及技术介绍。主要介绍了Java线程、Java多线程编程,java音乐播放的主要APIJavaSound、播放器所使用的界面APISwing、Eclipse开发工具。第三章 需求分析。主要从需求的角度介绍了mp3音乐播放器的功能等。第四章 总体设计。本章为本文
27、的核心局部,主要介绍了mp3播放器的各个设计点的设计思想。第五章 详细设计。本章也是系统的核心章节之一,主要介绍了播放器的界面设计、系统的关键类的设计以及系统的类结构。第五章 软件功能实现。本章主要从代码的角度介绍了整个播放器的设计。第二章 相关工具及技术介绍2.1 Eclipse简介Eclipse是一个非常优秀的集成开发环境。IBM花了多年的时间来开发基于Java的公开源代码的软件Eclipse,这个在IBM支持下的开发源码工程经过一段时期的开展完善,已经为广阔Java开发者所熟悉。Eclipse是一个用于构建集成Web和应用程序开发工具的平台,它本身并不会提供大量的最终用户功能,而是通过插
28、件来快速开发集成功能的部件。Eclipse是一款非常优秀的开源IDE,非常适合Java开发,由于支持插件技术,受到了越来越多的开发者的欢送。最新的不但界面作了很大的增强,而且增加了代码折叠等众多优秀功能,速度也有明显的提升。配合众多令人眼花缭乱的插件,完全可以满足从企业级Java应用到 终端Java游戏的开发。Eclipse提供了公共用户界面模型来使用工具。Eclipse软件旨在简化用于多操作系统软件工具的开放过程,他被设计成可以在多个操作系统上运行,基于Eclipse的软件在Linux和微软Windows系统上都可以运行,因此可以省去开发者有时要把Windows应用程序切换到Linux的操作
29、,进而简化了整个开发过程。同时Eclipse还提供了于每个底层操作系统强大集成。Eclipse的核心是动态发现插件的体系结构。平台负责处理根本环境的后台工作,并提供标准的用户导航模型,于是每个插件可以专注于执行少量的任务,Eclipse的出现,不仅为Java开发者提供了免费使用强大的Java IDE的时机,而且也为C+的开发者提供了CDT。通过集成大量的插件,Eclipse的功能可以不断扩展,以支持各种不同的应用。Eclipse软件可以用于管理多种开发任务,其中包括测试、性能调整以及程序调试等,而且还可以继承来自多个供货商的第三方应用程序开发工具。此外,Eclipse软件非常适合开发电子商务应
30、用程序,例如IBM公司自己的面向Web效劳的WebSpbere应用程序开发工具就是建立在Eclipse根底之上。除此之外,Eclipse平台是一个成熟的、精心设计的、可扩展的体系结构。Eclipse的价值在于他为创立可扩展的集成开发环境提供了一个开放源码平台。这平台允许任何人构建与环境和其他工具无缝集成的工具,而工具与Eclipse无缝集成的关键便是插件。2.2 Java Thread简介 线程是程序运行的根本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程这个线程被称为主线程来作为这个程序运行的入
31、口点。因此,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进程由操作系统内部建立的进程和用户进程由用户程序建立的进程;一个进程中可以有一个或多个线程。进程和进程之间不共享内存,也就是说系统中的进程是在各自独立的内存空间中运行的。而一个进程中的线可以共享系统分派给这个进程的内存空间。线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈, 是在建立线程时由系统分配的,主要用来保存线程内部所使用的数据,如线程执行函数中所定义的变量。Java编写程序都运行在在Java虚拟机J
32、VM中,在JVM的内部,程序的多任务是通过线程来实现的。每用java命令启动一个java 应用程序,就会启动一个JVM进程。在同一个JVM进程中,有且只有一个进程,就是它自己。在这个JVM环境中,所有程序代码的运行都是以线程来运行。一般常见的Java应用程序都是单线程的。比方,用java命令运行一个最简单的HelloWorld的Java应用程序时,就启动了一个 JVM进程,JVM找到程序程序的入口点main(),然后运行main()方法,这样就产生了一个线程,这个线程称之为主线程。当main方法结束后, 主线程运行完成。JVM进程也随即退出 。对于一个进程中的多个线程来说,多个线程共享进程的内
33、存块,当有新的线程产生的时候,操作系统不分配新的内存,而是让新线程共享原有的进程块的内存。因此,线程间的通信很容易,速度也很快。不同的进程因为处于不同的内存块,因此进程之间的通信相对困难。实际上,操作的系统的多进程实现了多任务并发执行,程序的多线程实现了进程的并发执行。多任务、多进程、多线程的前提都是要求操作系统提供多任务、多进程、多线程的支持。在Java程序中,JVM负责线程的调度。线程调度是值按照特定的机制为多个线程分配CPU的使用权。调度的模式有两种:分时调度和抢占式调度。分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;抢占式调度是根据线程的优先级别来获取CP
34、U的使用权。JVM的线程调度模式采用了抢占式模式。所谓的“并发执行 、“同时其实都不是真正意义上的“同时 。众所周知,CPU都有个时钟频率,表示每秒中能执行cpu指令的次数。在每个时钟周期内,CPU实际上只能去执行一条也有可能多条指令。操作系统将进程线程进行管理,轮流没有固定的顺序分配每个进程很短的一段是时间不一定是均分,然后在每个线程内部,程序代码自己处理该进程内部线程的时间分配,多个线程之间相互的切换去执行,这个切换时间也是非常短的。因此多任务、多进程、多线程都是操作系统给人的一种宏观感受,从微观角度看,程序的运行是异步执行的。Java语言的多线程需要操作系统的支持。Java 虚拟机允许应
35、用程序并发地运行多个执行线程。Java语言提供了多线程编程的扩展点,并给出了功能强大的线程控制API。在Java中,多线程的实现有两种方式: 1. 扩展d类2. 实现接口 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创立一个 新 Thread 对象时,该新线程的初始优先级被设定为创立线程的优先级,并且当且仅当创立线程是守护线程时,新线程才是守护程序。 当 Java 虚拟机启动时,通常都会有单个非守护线程它通常会调用某个指定类的 main 方法。Java 虚拟时机继续执行线程,直到以下任一情况出现时为止: 1. 调
36、用了 Runtime 类的 exit 方法,并且平安管理器允许退出操作发生。2. 非守护线程的所有线程都已停止运行,无论是通过从对 run 方法的调用中返回,还是通过抛出一个传播到 run 方法之外的异常。2.3 JavaSound简介JavaSound是一个小巧的低层API,支持数字音频和MIDI数据的记录/回放。在JDK 之前,JavaSound是一个标准的Java扩展API,但从Java 2的版开始,JavaSound就被包含到JDK之中。由于Java有着跨平台操作系统、硬件平台的特点,基于JavaSound的音频处理程序包括本文的程序能够在任何实现了Java 1.3+的系统上运行,无需
37、加装任何支持软件。使用JavaSound API,可以实现各种基于声音的应用,例如声音录制、音乐播放、网络 、音乐编辑等。JavaSound API又以各种解码和合成器SPI效劳提供者接口, Service Provider Interface为根底,实现各种音乐格式的解码与转码。在处理输入音频时,对于来自各种音频输入端口的信号,例如麦克风、CD播放器、磁带播放器等,可以在它们到达TargetDataLine之前,利用混频器控制输入混频,最后在程序中通过TargetDataLine获得数字化的音频输入流。类似地,在处理输出音频时,混频器用来对一系列来自SourceDataLine的数据进行混频
38、处理,经处理后的信号可输出到各种输出端口,例如扬声器、耳机等。SourceDataLine是一个可写入音频信号数字流的设备,例如,我们可以从一个WAV文件读取内容写入到SourceDataLine,然后再通过扬声器输出。2.4 Java Swing简介Swing是一个为Java设计的GUI工具包。 Swing 是 Java API 的一局部。 Swing 包括了图形用户界面 (GUI) 器件 如:文本框,按钮,分隔窗格和表。 Swing提供许多比HYPERLINK :/ hudong /wiki/AWTAWT更 好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一
39、点不像AWT。 它们是JFC的一局部。 它们支持可更换的观感和主题各种操作系统默认的特有主题,然而不是真的使用原生平台提供的设备,而是仅仅在外表上模仿它们。这意味着你可以在任意平台 上使用Java支持的任意观感。 轻量级元件的缺点那么是执行速度较慢,优点就是可以在所有平台上采用统一的行为。SUN把Swing定义为一组用户自定义化的图形组件,这些组件的外观样式可以在运行时改变。实际上,Swing含义远不只此。它是Sun创立的用于java企业级应用开发的下一代GUI工具集。这就意味着程序员可以使用Swing和一组功能强大的组件来创立大型java应用程序。还可以方便地扩展或者修改这些组件来控制它们的
40、外观和行为。 根本类库是用来帮助程序员使用java创立企业级应用的一组库。JFC除了包括Swing外,还包括AWT,Accessibility API, 2D API,并加强了对拖放功能的支持。 Swing是建立在核心AWT库之上。Swing并不包括任何平台相关本地代码,你可以在任何实现jdk以上的平台或虚拟机上发布Swing。 Swing引进了一个Action类,这使得协调GUI组件和它们的功能简单化。尽管本身没有定义大量事件,Swing却极其依赖于的事件处理机制。每一个Swing组件还包括一些外在属性。这是因为Swing组件和JavaBeans标准有联系。这就意味着可以把Swing组件引进
41、到各种GUI构建工具中,这对可视化编程来说很有用处。Swing的特性有:1可插拔的外观样式。Swing允许用户在运行时改变外观样式而不需要关闭应用程序。2轻量级组件 这是指组件不依赖于本地的对等组件来渲染它们。而是它们使用简单的图形元素来绘制自身甚至允许局部透明。而AWT组件是“重型组件。轻型组件使用Graphics对象的绘图元素象drawLine(),fillRect()等来渲染自身。一般在包含它们的顶层重型组件外表渲染自身。绝把局部Swing组件是轻型组件,只有一些顶层容器不是。这种设计使得程序员可以在运行时绘制应用程序的外观。而且,Swing组件支持组件行为的简单修改。Swing包含25
42、0多个类,是组件和支持类的集合。Swing提供了40多个组件,是AWT组件的四倍。除提供替代AWT重量组件的轻量组件外,Swing还提供了大量有助于开发图形用户界面的附加组件。1. AWT的替代组件用于替代AWT重量组件的Swing轻量组件中许多组件与它们所替代的AWT组件几乎是源代码兼容的。这使得替换AWT组件的工作相当简单。除模仿AWT组件所提供的功能外,几乎所有的Swing替代组件都有其他一些特性。例如,Swing按钮和标签可显示图标和文本,而AWT按钮和标签只能显示文本。该类组件均使用Windows的界面样式。2. Swing增加的组件除提供AWT重量组件的替代组件外,Swing还提供
43、了许多其他组件,如表格、树、定制对话框等。2.5 Java Properties简介扩展名为.properties的文件经常作为配置文件出现在我们的应用中,如Hibernate、log4j等就曾经或正在使用.properties作为核心配置文件。掌握此类文件的读写对我们理解配置文件的好处是显而易见的。Properties 类表示了一个持久的属性集 REF _Ref202118323 r h * MERGEFORMAT 。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 一个属性列表可包含另一个属性列表作为它的“默认值;如果未能在原有的属性列表中搜索到属
44、性键,那么搜索第二个属性列表。 因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但强烈反对使用这两个方法,因为它们允许调用方插入其键或值不是 Strings 的项。相反,应该使用 setProperty 方法。如果在“有危险的 Properties 对象即包含非 String 的键或值上调用 store 或 save 方法,那么该调用将失败。 load 和 store 方法按简单的面向行的格式加载和存储属性。此格式使用 ISO 8859-1 字符编码。可以使用 Unicode 转义符来编写此编码中无法直接表示的字
45、符;转义序列中只允许单个 u 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。 loadFromXML(InputStream) 和 storeToXML(OutputStream) 方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明: 注意,导入或导出属性时不访问系统 URI ( :/java.sun /dtd/properties.dtd);该系统 URI 仅作为一个惟一标识 DTD 的字符串。第三章 需求分析3.1 工作流程分析用户希望通过音乐播放器
46、实现mp3音乐播放的功能,同时用户可以自主的控制播放器中的mp3的播放,包括前一首播放、下一首播放、停止播放。同时用户希望看到当前正在播放的mp3的详细信息,比方mp3的专辑、年份、歌手等信息,用户还想对当前播放器的整体状态有一个了解,如以播放时长等。用户可以对播放器的音量进行控制,可以对播放器自动播放mp3的播放顺序作出选择,可以对播放器的皮肤样式作出更改,用户肯能还想定义自己喜欢风格样式的播放器皮肤。如果有歌词文件存在的话,用户可能希望播放器能够同步显示对应的歌词。用户有时可能还会感觉将播放的界面变的非常小放在桌面的某个角落会更适宜一些。3.2 评价具体需求分析1. mp3播放 主要用于播
47、放器的mp3音乐文件的播放。2. 播放控制 主要用于播放器的下一首播放、前一首播放、停止播放、播放的控制。3. 播放信息显示控制 主要包括mp3的已播放时间、播放状态、mp3文件信息的显示。4. mp3列表管理 主要包括对播放器中mp3音乐文件的增加、增加时的检查和删除。5. 歌词解析及同步显示 主要包括对歌词文件的查找、解析和同步显示。6. 播放模式控制 主要用于在播放器的各种播放模式之间进行切换,如循环播放、随机播放等。7. 显示方式控制 主要用于控制播放器的迷你模式和完全模式的切换及同步的组件的显示和隐藏。8. 皮肤切换控制 用于在系统的各种皮肤之间进行切换。9. 音量控制 控制播放器的
48、音量大小。3.3 系统功能结构图本Mp3音乐播放器的主要功能分为五大模块,分别是播放控制模块、播放信息控制模块、Mp3列表管理模块、歌词模块、以及其他功能模块。在各个模块中又包含更详细的功能划分详细内容如图3-1所示播放控制停止控制下一首控制前一首控制播放模式播放控制播放信息控制Mp3信息播放信息歌词歌词解析歌词显示其他音量控制显示模式皮肤切换Mp3列表管理删除Mp3增加Mp3Mp3播放播放Mp3JMPlayer图3-1 JMPlayer系统功能结构图3.4 功能详细描述 Mp3播放此局部为系统的核心局部,主要使用了JavaSoundAPI控制操作系统的音频系统,以音频系统的音频输入输出流进行
49、Mp3的播放,此局部是播放控制模块、播放信息控制模块、歌词模块等的运行根底。 播放控制主要进行mp3音乐文件的播放控制,主要包括常见播放器的根本的播放控制功能如停止功能、下一首功能、前一首功能等,包括播放器的播放模式的控制主要实现了常用的五种播放模式:单曲播放、单曲循环、列表循环播放、列表播放、随机播放。模式播放的控制主要用在mp3处于播放模式控制下的音乐文件播放完成时使用。 播放信息控制主要进行当前播放状态的控制,如播放是处于播放还是停止状态的信息。当前正在播放的mp3的歌手信息、mp3名称、播放的频率等信息的显示以及以播放时间的显示控制,mp3的数据信息通过解析mp3音乐文件本身来获得。在
50、mp3文件的后置128字节中保存着mp3的一些根本信息。 Mp3列表管理主要进行系统中mp3列表中音乐文件的维护。同时还包括mp3播放器在初始启动的时候对原来列表中mp3文件的初始化以及在播放器推出的时候对现有mp3列表中音乐文件的保存。本系统中使用.properties格式配置文件的形式来存储mp3文件列表。 歌词本局部的主要功能为提供对具有歌词文件的mp3的歌词的播放时同步播放。主要根据当前播放的mp3音乐文件进行对应的mp3歌词文件.lrc的查找,查找到歌词文件进行解析后进行时间点的匹配,匹配成功后在恰当的时间点将歌词显示在歌词框中。 其他1. 显示模式初始定义播放器具有两种显示模式:完
51、全模式和迷你模式。系统在完全模式时系统的主控制面板为最大化状态,系统的播放状态,播放时间,音量控制滚动条均处于可见可操做状态。系统在迷你模式时系统的播放状态,播放时间,音量控制滚动条均处于不可见不可操做状态。系统当中由一个模式控制按钮来控制播放器模式的切换。音量控制音量控制主要完成控制播放器的音量的大小以及静音的控制。音量控制按钮准备设计为一个滑动条,根据滑动条的滚动实现播放器音量大小的增减。系统在开始时要读取上次播放器的使用时音量并初始化到播放器的界面上,系统在退出是要对播放器的音量进行保存以便下一次读取。皮肤切换用于mp3音乐播放器在系统的各种皮肤之间进行切换,同时支持用户自定的皮肤。只要
52、用户在系统的皮肤目录下放入有效的皮肤主题,系统在进行皮肤切换操作时会首先到系统的皮肤目录下加载所有的合法的皮肤并将其参加到系统的皮肤面板上,当用户选择了某种皮肤样式后,播放器的皮肤会自动切换为选中的皮肤主题相应的图片。第四章 总体设计4.1 系统要求设计系统结构,根据需求分析给出的功能得出系统体系结构。如划分模块:1.软件能满足人们的音乐播放的目的,而且操作过程直观、简便。2.系统采用模块化程序设计方法,便于模块之间独立的进行开发。3.要求系统可以非常容易的添加新的功能。4.2 系统功能描述本节以本播放器的功能点和功能模块单位介绍基于Java的音乐播放器JMPlayer的总体的功能设计。Mp3
53、播放播放器以java多线程编程设计了播放器的mp3播放,每播放一首新的mp3音乐时都会产生一个独立的播放线程。在每播放一首新的mp3时,系统会对播放器的状态做检查,如果有正在播放音乐的线程在运行,那么首先停止此线程,并重置播放器的状态。播放控制主要功能包括播放、停止播放、下一首播放,播放、前一首播放播放信息控制主要功能包括显示当前的播放状态、当前播放的音乐文件、mp3的歌手、mp3的音频频率以及当前mp3播放时间信息的控制和显示。Mp3文件列表管理本节主要包括对mp3文件的增加、增加时对音乐文件的检查(此播放器暂时只支持.mp3和.wav格式的音频文件)、mp3文件的删除以及mp3播放是播放索
54、引的控制和增加删除mp3文件时mp3显示的下标索引的控制。歌词本节的主要功能包括歌词文件的查找、歌词文件的解析、歌词文件在歌词面板中的显示。歌词显示的控制在本系统中采用一个独立的线程,此线程在mp3开始播放是同步开始,并在得到歌词文件Properties集合后负责在歌词面板上显示对应时间点的歌词。显示模式主要包括完全显示模式功能和迷你显示模式功能。音量控制主要包括通过一个滑动条的拖拽来实现音量的大小的控制以及静音的控制、由静音转为非静音时的音量复原。皮肤控制主要实现播放器的一系列的控制按钮的外观改变,各种控制按钮的图片格式现在只暂时实现了对.gif格式图片的支持,用户可以按照播放器的标准定义自
55、己喜欢的播放器的外观。9. 已播放时间的控制使用一个单独的线程来控制mp3的已播放时间的统计和显示,当mp3开始播放是此线程开始运行,当mp3停止播放时,此线程结束。此线程运行期间会首先标记一个mp3的开始播放时间,然后会每0.5秒钟对已播放的时间进行一次统计计算,并将计算的结果格式化为适当的时、分、秒的格式显示在系统的播放信息控制面板上。10. 系统配置文件1. 用于保存播放器状态包括播放器的当前mp3索引、播放器音量、播放器播放模式、播放器的皮肤样式等,以便启动时初始化播放器。2. Mp3Lperties 用于保存播放器的mp3文件列表,包括mp3文件的名称和mp3文件的绝对
56、路径。4.3 系统运行环境硬件接口:Pentium 800MHZ 、内存128MB、硬盘500MB以上的PC机。软件接口:任何支持Java(JVM)的操作系统4.4 系统设计思想 总体流程设计本播放器的整体流程为首先启动播放器后使用I/O输入流读取数据文件,并由此数据文件解析得到mp3文件列mp3FileList后读取配置文件,并由此初始化播放器的状态,再进一步初始化播放器的外观包括播放模式、Swing mp3 List,、音量、上次退出时的mp3索引等,最后播放器退出时将播放器的使用I/O输出流状态写入,播放器的mp3文件列表数据写入数据文件中。如图4-1所示开始结束读取pe
57、rtiesmp3FileList解析读取perties初始化播放器状态初始化播放器外观1.初始化播放模式2.初始化音量3.初始化mp3文件列表4.初始化mp3索引播放器退出保存播放器状态保存mp3文件列表图4-1 JMPlayer总体流程图 Mp3播放设计本系统的mp3播放采用线程控制的方式来进行。设计思想为首先根据mp3的路径查找对应的mp3文件,如果文件不存在那么不做播放处理,如果文件存在那么首先检查当前播放器是否在播放mp3文件,如果正在播放那么停止正在播放的mp3线程并重新初始化mp3播放线程和相关的资源,初始化完成后开始播放。具体流程如图4-2所示。开始结束查找m
58、p3文件mp3文件存在不存在播放器正在播放存在停止播放线程初始化播放线程是否图4-2 mp3播放流程图 播放模式设计本系统中共设计了五中播放模式:单曲播放、单曲循环、列表循环播放、列表播放、随机播放。设计思路为系统中维护一个当前正播放的mp3的索引currentMp3Index,在当前播放的mp3播放完后,各种播放模式基于此播放索引决定下一首要播放的mp3的index值,同时播放模式的类中维护一个对播放器的引用。 Mp3文件列表管理设计本系统的mp3列表管理采用配置文件( perties )的形式进行存储管理,采用缓存机制进行播放器在运行时mp3文件的增加和删除管理。本系统最初
59、对于mp3文件的管理采用的是每次进行增加或者删除mp3文件的操作时,对进行与配置文件的同步更行,性能非常低效,也造成了许多不必要的浪费,后来引入缓存机制对mp3文件管理极大的提高了系统的性能。详细流程如图 4-3 所示图4-3 mp3文件列表管理流程图 歌词设计本局部当中也采用一个独立的线程来进行歌词时间和显示的控制,首先在mp3开始播放后会根据mp3文件名到系统的lyrics目录下查找对应于此mp3名称的.lrc格式的歌词文件,如果找到那么进一步解析此lrc歌词文件,解析完成后此线程会根据自己的独立的时间统计来匹配解析出来的时间戳,如果匹配成功那么把对应时间点的歌词显示在歌词面板当中。具体流
60、程如图4-4所示图4-4 JMPlayer歌词控制流程图 皮肤切换设计因为设计的时间有限本系统的皮肤切换功能只是针对了系统的控制按钮的外观进行, 如果时间能再宽裕一些可以进行针对播放器整个外观的皮肤切换的设计和更加灵活的控制。另外由于时间的原因本系统的所支持的皮肤图片文件格式目前只限于对.gif格式文件,此处可以作为以后再研究和补充的一个设计点。皮肤切换的设计思路为,首先到系统的皮肤目录skin目录下查找符合条件的皮肤主题, 并将其显示在播放器的皮肤面板中,中选中某一种主题的皮肤后,播放器的相应局部的外观图片会被替换成选中的主题皮肤的对应图片。具体流程如图4-5所示图4-5 JMPlayer皮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江大学《矿山地质》2023-2024学年第二学期期末试卷
- 广东职业技术学院《大数据技术》2023-2024学年第二学期期末试卷
- 湖北体育职业学院《港澳台广告》2023-2024学年第二学期期末试卷
- 湖南财经工业职业技术学院《物理化学研究进展与前瞻》2023-2024学年第二学期期末试卷
- 苏州健雄职业技术学院《动物生物化学》2023-2024学年第二学期期末试卷
- 烟台汽车工程职业学院《资源材料与可持续发展》2023-2024学年第二学期期末试卷
- 汉口学院《对流层传播》2023-2024学年第二学期期末试卷
- 吕梁师范高等专科学校《软件工程》2023-2024学年第二学期期末试卷
- 武汉理工大学《互联网运维技术》2023-2024学年第二学期期末试卷
- 心理健康课件模板
- 计算机网络的毕业设计(5篇)
- 2022年中国建筑集团有限公司招聘笔试题库及答案解析
- 温泉度假设施造价预算
- 青少年创意编程试题
- 电子商务客户服务5套综合测试题带答案
- 微观经济学课件第二章(高鸿业)
- RULES OF ORIGIN 原产地规则
- 国内旅游出团通知书(新版)
- LETTEROFINTENTION意向书范本
- 国内各航空公司差异化服务
- 《山东省自然科学基金资助项目年度进展报告》
评论
0/150
提交评论