1、 - 1 - 毕业设计(论文) ( 2013 届) 题 目 音乐播放系统设计 摘 要 音乐是一种声音符号,表达人的思想感情。是人们思想的载体之一。音乐是有目的和内涵的,其中隐含了作者的生活体验,思想情怀。一款好的 pc 音乐播放器不仅能够提供好的音乐播放效果,更能够为用户提供方便的操作。 本设计利用 java 语言和 eclipse 编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及 主要功能运行流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能与一体,性能良好。该播放器支持 MP3、 W
2、AV、 MP3 和 AIFF 等音频格式。在开发的过程中采用瀑布模型。第一阶段首先对项目进行全面、仔细的需求分析,并准确做出项目进度安排,明确每个阶段的任务;第二阶段是进行项目分模块编码;第三阶段对项目进行全面的测试和系统集成测试。 - 2 - 在本程序的开发上,因为 JAVA 的跨平台性, 所以 可供选择的平台有许多,使得在平台的选择面上有了更大 的自主权。现在社会上使用最多的平台是 WINDOWS。 所以该程序在WINDOWS 平台下开发 。 关键 词: Eclipse;播放器;音频技术 The design of Music Player Base on Java Abstract Th
3、e music is a sound symbolic expressing the mood and thinking. It is the carrier of peoples thinking. Music is the purpose and content, which implied the authors life experiences and feelings. A good pc music player can not only provide good music playing effect, but also provide users with convenien
4、t operation. The player is using java language and eclipse editing tools. Giving a detailed system design process, part of the interface map and run flow chart of the main function, this article discussed in detail on problems and solution method in the development process. The music player set to p
5、lay, - 3 - pause, stop, fast forward, rewind, and the next one, on a volume adjustment functions with one good performance. The player supports MP3, WAV, MP3, AIFF, etc. audio formats. The model in the development process is Waterfall model. The first phase is the project of comprehensive and carefu
6、l needs analysis, accurately making the project schedule and clearing each stage of the task. The second phase of the project is sub-module coding. The third stage, the project testing and system integration testing. The development of this program, there are many alternative platform, because JAVA
7、cross platform, so have greater autonomy in the choice of platform. Now used on most platforms is the WINDOWS. Therefore, the program is developing under the WINDOWS platform. Keywords: Eclipse; Player; Audio technology 目 录 摘 要 - 1 - Abstract - 2 - 1 前言 - 1 - 1.1 软件开发背景及意义 - 1 - 1.2 发展现状及趋势 - 1 - 1.
8、3 主要研究方法及过程 - 2 - 2 相关技术简介 - 3 - 2.1 Java 技术简介 - 3 - 2.2 JavaSound 技术 - 3 - 2.2.1 JavaSound 的体系结构 - 3 - 2.2.2 JavaSound 混频原理 - 4 - 2.3 JDK 技术 - 5 - 3 需求分析 - 7 - - 4 - 3.1 功能需 求 - 7 - 3.1.1 播放器的基本控制需求 - 7 - 3.1.2 功能需求分析 - 7 - 3.2 运行及其它需求分析 - 8 - 3.3 可行性分析 - 8 - 3.3.1 经济及技术可行性 - 8 - 3.3.2 运行及法律可行性 - 9
9、 - 4 软件结构及界面设计 - 10 - 4.1 软件结构设计 - 10 - 4.2 GUI 界面设计 - 11 - 5 详细设计 - 13 - 5.1 打开文件菜单下的详细设计 - 13 - 5.1.1 打开文件设计 - 13 - 5.1.2 退出系统设计 - 13 - 5.2 播放菜单下的详细设计 - 14 - 5.3 显示菜单下的详细设计 - 14 - 5.4 帮助菜单下的详细设计 - 15 - 5.5 播放列表的详细设计 - 16 - 5.6 播放按钮的详细设计 - 17 - 6 结论 - 19 - 参考文献 - 20 - 致 谢 - 21 - 音乐播放设计 - 1 - 1 前言 1
10、.1 软件开发背景及意义 欣赏美妙的音乐是 我们每个人在 学习 工作之余都会做的事,面对市场上和网络上各种花样繁多的播放器, 他们不但 用起来 感到 得心应手,而且各种功能操作 非常 方便。我们都用过“千千静听” , “酷狗音乐盒” , “ Windows Media player” 等非常优秀的播放器, 但是在其使用的过程中总有些瑕疵。并且 这些公司没有开放它们的源代码。 我设计 的这个 “ 基于 java的音乐 播放器 ” 除了能够播放一些常见的音频格式外更加易于操作和使用 。此软件具有一般播放器的 常用 功能,界面沿用了标准的 Windows 窗口,主窗口的功能有对要播放文件的各种控制,
11、所播放曲目的名 称,通过主窗口能有选择的播放单个文件,单次播放和循环播放目录表中的文件。程序的开发环境是 JDK, 操作系统是 Windows XP,用到的主要技术 为 java 语言, eclipse 编辑软件。 本次毕业设计的意义在于结合 Java 语言提供的先进的思想和多样的媒体控制手段,结合用户使用音乐播放器的习惯和对媒体播放器的要求,设计了一款界面清楚明了,操作简单实效,可以实现在播放列表中可以加载一个或者多个多媒体文件;自动连续播放多个多媒体文件;用户能随意改变播放顺序;在下次打开播放器时,能够自动加载上次的播放列表;在播放列表的 多媒体文件播放完后可以选择自动关闭播放器或者循环播
12、放等功能的媒体播放器。 1.2 发展现状及趋势 音乐播放器的设计是一门集计算机技术和数字多媒体技术于一体的综合设计。随着中国计算机技术、宽带网络技术的发展,越来越多的人开始重视多媒体播放器的发展与应用。在当今信息社会以多媒体为特征的信息技术和信息产业的发展及应用对人类社会产生的影响和作用愈来愈明显,愈来愈重要。而音乐作为多媒体中的一个重要组成部分能改变信息的包装,实现知识信息数字化,为人们获得知识信息提供极大的方便和无穷的乐趣。友善的人机界面、多种多样的多媒体 教学软件、诱人的电子游艺节目、身临其境的多媒体导购系统、五花八门的信息家电和高效方便的网上查询等等,无不渗透着多媒体的作用,它引导人们
13、进入了一个有声有色的世界。同时,多媒体的发展和应用,极大地推动了各行各业的相互渗透和飞速发展,大大改变了人类社会的工作环境和生活方式。可毫不夸张地说,多媒体产业的形成和发展,不仅引起了计算机工业的一次革命,也正在深刻地影响人类社会发生巨大的变革。多媒体技术的发展在很大程度上依靠于多媒体软件开发的水平。 多媒体技术是当今信息技术领域发展最快、最活跃的技术,是新一代电子技术发展和 竞争的焦点。多媒体技术融计算机、声音、文本、图像、动画、视频和通信等多种功能于一体,借助日益普及的高速信息网,可实现计算机的全球联网和信息资源共享,因此被广泛应用在咨询服务、图书、教育、通信、军事、金融、医疗等诸多行业,
14、并正潜移默化地改变着我们生活的面貌。 人类社会逐渐进入信息化时代,社会分工越来越细,人际交往越来越频繁,群体性、交音乐播放设计 - 2 - 互性、分布性和协同性将成为人们生活方式和劳动方式的基本特征,其间大多数工作都需要群体的努力才能完成。但在现实生活中影响和阻碍上述工作方式的因素太多,如打电话时对方却不在。即使电话 交流也只能通过声音,而很难看见一些重要的图纸资料,要面对面的交流讨论,又需要费时的长途旅行和昂贵的差旅费用,这种方式造成了效率低、费时长、开销大的缺点。今天,随着多媒体计算机技术和通信技术的发展,两者相结合形成的多媒体通信和分布式多媒体信息系统较好地解决上述问题。 随着网络技术的
15、不断发展和 Internet 的逐渐普及,人们对网络产品需求也不断增长。如今流行的网络音乐播放器虽然很多,但都或多或少存在一些缺陷,比如:没有记忆的功能;下次播放的时候不能从上次离开的曲目开始;没有身份认证功能;不能有效的保护媒体播放器 里面的歌曲专有性;功能组合与用户的习惯相违背;界面太复杂以及操作太难等。随着人们对娱乐要求的提高,一款别致的、贴近用户操作习惯的音乐播放器非常值得去研究和开发。 1.3 主要研究方法及过程 研究方法:主要采用行动研究法和文献法。行动分析法,制定个性研究方案,通过我们日常实践情况进行分析,再研究调整重新进行实践。首先,了解有关音乐播放器的有关技术,并对现在主流的
16、音乐播放器进行测试并将它们不足之处改进。并将经验总结、记录,形成有价值的文字。文献法,广泛收集整理文献资料,如经典期刊,国内外前沿研究,以及指导老师推荐 的书目,为今后项目开发提供具有时代性,创造性的正面指导。 研究手段:主要是结合之前的开发经验,联系项目需求分析和参考文献,根据项目的特点选择适当的开发工具( eclipse)和编程技术(编程语 JAVA)制定项目开发方案。 实验方案:采用瀑布模型。首先对项目进行全面、仔细的需求分析,并准确做出项目进度安排,明确每个人的职责和任务。第二阶段,是进行项目分模块编码。第三阶段,选择适当的测试方法,在完成项目编码后,进行软件测试,并准备填写测试用例。
17、对项目进行全面的测试和系统集成测试。 音乐播放设计 - 3 - 2 相关技术简 介 2.1 Java 技术简介 Java 语言具有许多特点 ,当然也是它的优点 ,即简单性、分布性、高安全性、面向对象、与结构的无关性、可移植性、多线程及动态性等等。简单性 :Java 语言是一种面向对象的语言 , 如果你对面向对象的编程的基本概念有了一定的了解 ,就可以比较快地学会 Java 语言编程。 Java 力图在功能齐备的基础上不增加所谓的超级特点 , 它毫不客气地取消了指针、运算符重载和多重继承的概念 ,以一种明晰的面向对象的方法帮助用户表达他们的想法。 Java 是一种简单的语言。 Java 取消了其
18、它的许多编程语言中 十分繁琐的和难以理解的内容,例如 C/C+中的指针, +中类的多重继承等。 Java 语言在外观上让大多数程序员都感到很熟悉,这样程序员不需要经过长时间训练就能够学会使用这种新型的程序开发工具。Java 要求的基本解释器约为 40KB ,若加上基本的程序库,约为 215KB。由于 Java 程序很小,因此在小型机上 Java 程序也能够很好地执行。 Java 是一种面向对象的语言。这里的 “ 对象 ” 是指应用程序的数据及其操作方法。 Java程序的设计思想不同于语言基于过程的程序设计思想。设计面向对象的程序需要将编程重点放在资料和 接口上。 Java 是一种分布式的语言。
19、 Java 有一个很周全的程序库,且很容易与 HTTP 和 TCP/IP通信协议相配合。 Java 应用程序能在网络上开启并连结使用对象,就如同透过 URL 链接使用一个本地文件系统。利用 Java 来开发分布式的网络程序是 Java 的一个重要应用。 2.2 JavaSound 技术 JavaSound是一个小巧的 底 层 API,支持数字音频和 MIDI数据的记录 /回放。在 JDK 1.3.0之前, JavaSound 是一个标准的 Java 扩展 API,但从 Java 2 的 1.3.0 版开始, JavaSound就被包含到 JDK 之中。由于 Java 有着跨平台(操作系统、硬件
20、平台)的特点,基于 JavaSound的音频处理程序(包括本文的程序)能够在任何实现了 Java 1.3+的系统上运行,无需加装任何支持软件。 2.2.1 JavaSound 的体系结构 当前 JDK 的 JavaSound API 随同 Java 媒体框架( JMF, Java Media Framework)一起发布,适合 JDK1.1 以及更高的版本。除了 JDK 实现的 JavaSound API 之 外,还有一个源代码开放的 JavaSound 实现是 Tritonus。 图 2-1 描述了 JavaSound API 的体系结构,虚线表示Sun 的 JavaSound 标准定义的
21、API 调用。上面一根虚线表示我们编写音频处理程序要调用的API, JavaSound API 包含在 javax.sound.sampled和 javax.sound.midi 包中。两根虚线之间的部分就 是 JavaSound API 的具体实现。 音乐播放设计 - 4 - 图 2-1: JavaSound 体系结构 就象上面一根虚线表示的 API 具有统一标准一样,在所有的 JavaSound 实现中,图一下面一根虚线表示的 SPI(服务提供者接口 , Service Provider Interface)也是统一的。 SPI的作用是以插件( Plug-In)的形式提供自定义的扩展模块,
22、我们只要提供与 SPI 兼容的插件扩展模块,就可以在不改变 API 的情况下扩展音频处理程序的能力。 SPI 包含在java.sound.sampled.spi 和 javax.sound.midi.spi 包中 。 例如,假设有一个只能播放 WAV 文 件的程序,我们只要增加一个支持 MP3 文件解码的插件模块,就可以在不改动播放程序的任何一行代码的前提下,为这个播放程 中 添加播放 MP3 的能力。 2.2.2 JavaSound 混频原理 图 2-2 阐述了 JavaSound 的混频器原理。在处理输入音频的应用中,对于来自各种音频输入端口的信号,例如麦克风、 CD 播放器、磁带播放器,
23、等等,我们可以在它们到达TargetDataLine 之前,利用混频器控制输入混频,最后在程序中通过 TargetDataLine 获得数字化的音频输入流。 图 2-2: JavaSound 混频器 音乐播放设计 - 5 - 类似地,在处理输出音频的应用中,混频器用来对一系列来自 SourceDataLine 的数据进行混频处理,经处理后的信号可输出到各种输出端口,例如扬声器、耳机等。SourceDataLine 是一个可写入音频信号数字流的设备,例如,我们可以从一个 WAV 文件读取内容写入到 SourceDataLine,然后再通过扬声器输出。 输入到混频器的信号可以来源于剪辑 。剪辑(
24、Clip)是一个包含一段完整音频数据流的设备,或者说,剪辑就是一个缓冲在内存中的完整音频数据流。在一些要求反复播放音乐片段的场合,例如游戏的背景音乐,剪辑是很有用的。 图 2-3 描述了 JavaSound API 中一些常用的类、接口及其关系,所有图三显示的类、接口都通过 Line 这个基本接口统一起来。 Line 接口用来关闭 /打开设备、注册事件监听器,以及提供一些用来调整声音效果的对象,例如调整音量大小的对象。 AudioSystem 在JavaSound 体系中起着一个工厂( Factory)类的作用,提供了一系列 的静态方法,我们通过这些静态方法来获取 JavaSound 系统默认
25、配置的资源(所谓静态方法,就是可以在不创建AudioSystem 实例的情况下直接调用的方法)。 图 2-3:常用的 JavaSound 类 在当前( JDK 1.4)实现的 JavaSound 的默认配置中,输入声音来自本地声卡的麦克风,输出声音到本地声卡的扬声器。应当说当前实现的 JavaSound 对端口和混频器的支持还不完善,但对于包括本文音乐播放器在内的许多应用来说,默认实现的 JavaSound 配置已经足够了。 2.3 JDK 技术 Java 编译器将 Java 源代码文件编译成可执行的 Java 字节码。 Java 源代码文件的扩展名为 .java, Java 编译器把这种扩展
26、名的文件编译成扩展名为 .class 的文件。源文件中的每个类在编译后都将产生一个 class 文件,这意味一个 Java 源代码文件可能编译生成多个class 文件。 音乐播放设计 - 6 - Java 解释器对编译生成的字节码格式的可执行程序的运行提供支持,它是运行非图形Java程序的命令行工具。它是 Java Applet的简单测试工具,可使用它来测试 Java Applet程序,而不需要 WWW 浏览器的支持。 JDK(Java Development Kit)是 Sun Microsystems 针对 Java 程序员开发 的产品。自从Java 推出以来, JDK 已经成为使用最广泛
27、的 Java SDK( Software development kit)。 JDK 是整个 Java 的核心,包括了 Java 运行环境( Java Runtime Environment),一堆Java 工具和 Java 基础的类 库 (rt.jar)。不论什么 Java 应用服务器实质都是内置了某个版本的 JDK。因此掌握 JDK 是学好 Java 的第一步。最主流的 JDK 是 Sun 公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了自己的 JDK,例如 IBM 公司开发的 JDK, BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK 等等。其中 IBM
28、 的 JDK 包含的 JVM( Java Virtual Machine)运行效率要比 Sun JDK 包含的 JVM 高出许多。而专门运行在 x86 平台的 Jrocket在服务端运行效率也要比 Sun JDK 好很多。但不管 怎么说,我们还是需要先把 Sun JDK 掌握好。 从 SUN 的 JDK5.0 开始 ,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2, 1.3, 1.4,而是变成了 5.0,6.0 了。从 6.0 开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面。 JDK 本身使用了 Java 语言编写,在我们下载的安装包里,有一个 src.zip,里面就是JDK 的源代码。