音频播放器软件的阳设计与实现.doc

上传人:本田雅阁 文档编号:2112692 上传时间:2019-02-15 格式:DOC 页数:51 大小:667.53KB
返回 下载 相关 举报
音频播放器软件的阳设计与实现.doc_第1页
第1页 / 共51页
音频播放器软件的阳设计与实现.doc_第2页
第2页 / 共51页
音频播放器软件的阳设计与实现.doc_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《音频播放器软件的阳设计与实现.doc》由会员分享,可在线阅读,更多相关《音频播放器软件的阳设计与实现.doc(51页珍藏版)》请在三一文库上搜索。

1、南开大学滨海学院南开大学滨海学院 本 科 生 毕 业 论 文(设 计) 中文题目:音音频频播放器播放器软软件的件的设计设计与与实现实现 外文题目:The Design and Implementation of Audio Player System 系 别: 计计算机科学系算机科学系 专 业: 计计算机科学与技算机科学与技术术 (数字影(数字影视动视动画技画技术术与与应应用方向)用方向) 完成日期: 2011 年年 4 月月 30 日日 2 南开大学滨海学院本科毕业论文(设计)诚信声明 本人郑重声明:所呈交的毕业论文(设计) ,题目基于智能卡 的远程身份认证系统设计与实现 是本人在指导教师的

2、指导下,独 立进行研究工作所取得的成果。对本文的研究做出重要贡献的个人 和集体,均已在文中以明确方式注明。除此之外,本论文不包含任 何其他个人或集体已经发表或撰写过的作品成果。本人完全意识到 本声明的法律结果。 毕业论文(设计)作者签名:郭培赞郭培赞 日期: 2011 年 4 月 5 日 摘要 I I 音频播放器软件的设计与实现音频播放器软件的设计与实现 摘摘 要要 随着计算机和多媒体技术的不断发展以及个人计算机的普及,各种各样的 媒体文件、媒体播放器层出不穷,而MP3(MPEG Audio Layer3)格式以其体积 小、音质也有保证的特点成为使用最为广泛的音频格式,得到了绝大多数软件 和硬

3、件媒体播放器的支持,同时WAV格式作为无损的音频格式也独树一帜。如 今,软件市场上的媒体播放器百花齐放,如:MediaPlayer,酷我音乐盒和千千静 听等。高音质播放和低内存消耗是各种媒体播放器所追求的目标。 本文探索性地设计实现了一个支持播放列表和LRC歌词实时显示的音频播 放器的软件。本软件用Eclipse3.2平台,java语言及其相应的音频支持插件JMF 开发而成,设计思想为MVC,即Model-View-Control模式。该播放器实现了在 播放MP3的同时实时地显示LRC歌词,并且支持 WAV等。利用java开发的应 用程序具有平台可移植性,可以做到Once write,run

4、everywhere,同时有着比较 完善的功能。 论文首先介绍了java语言,MVC及JMF的基本概念,内容及章节安排。然后, 论文介绍了系统的设计目标,划分并设计了系统功能模块,包括:播放窗口模 块、播放列表管理模块、歌词实时显示模块、播放控制模块和播放信息模块等, 设计了媒体文件和歌词文件的处理流程。接着,论文介绍了本播放器的开发平 台,阐述了系统各功能的详细设计与实现。最后,论文介绍了系统的运行环境 及运行效果,并对各个部分进行了图示说明。 关键词:关键词:音频播放器平台无关 java MVC JMF Eclipse Abstract II The design and implemen

5、tation of the Audio Player System Abstract With the evolvement and popularization of computer science and multimedia technology , a variety of media files, media player software come into appearence one after another. MP3 (MPEG Audio Layer3) format also becomes the most widely used features audio fo

6、rmat, for its small size and sound quality .Its supported by the vast majority of software and the hardware media player . WAV audio formats is alseo famous for its no-damaging sound quality.Today, media player software on the market rises one after another, such as: MediaPlayer, cool boxes and TTPl

7、ayer and so on. The pursuit of high quality and low memory consumption is carried on by every media player . This article explores to design and implement a LRC supported audio player software with playlists and real-time display. The software used Eclipse3.2, java language and its corresponding aud

8、io support plug-ins developed with JMF as the develop platform.The main designing idea of the software is the MVC(the Model-View-Control )pattern. The player achieved in real time LRC display while playing MP3, and supports WAV and so on. Programmes developed with java is platform portability, you c

9、an do “Once write, run everywhere”, also has a fairly complete functionality. The paper firstly introduces basic concepts, contents and chapter arrangement of the java language, MVC and JMF. Then, the paper describes the design goal, and the system function modules, including: Mainframe module, list

10、Controller module, LRCController module, the Mp3Controller module and Mp3State module.The next is the introduction of the media files and lyrics files treatment process. After that, the paper introduces the development platform to explain the various features of the system detailed design and implem

11、entation. Finally, the paper describes the system operation environment and operating results.Every part has a illustration. Keywords: Audio Playerplatform portability Java MVC EclipseJMF 目 录 III 目目 录录 摘 要.I ABSTRACT.II 第 1 章 绪论1 1.1 研究背景.1 1.2 JAVA语言的特性 .1 第 2 章 关于 JMF 技术.3 2.1 关于 JMF 技术 .3 2.2 JMF

12、 常用类 4 2.2.1 数据源(DataSource).4 2.2.2 媒体定位器(MediaLocator).4 2.2.3 播放器(Player) .4 2.2.3 处理器(Processor)6 2.2.4 数据池(DataSink).7 2.2.5 数据格式(Format)7 2.2.5 管理器(Manager) .8 2.3 事件模型.8 第 3 章 系统架构和功能模块设计11 3.1 MVC 模式概述.11 3.2 系统目标.11 3.3 系统功能模块概要设计.12 3.3.1 用户界面模块13 3.3.2 播放控制模块14 3.3.3 播放信息模块15 3.3.4 播放列表控制

13、模块18 3.3.5 歌词控制模块18 第一章 绪论 IV 3.4 音频文件播放逻辑19 3.4.1 对音频文件的传递19 3.4.2 对歌词文件的传递20 3.4.3 播放控制流程21 第 4 章 系统详细设计与实现22 4.1 开发平台及环境.22 4.2 用户界面模块详细设计与实现.22 4.2.1 对播放拖动条添加拖动事件监听器.23 4.2.2 音量拖动条添加拖动事件监听器.23 4.2.3 对鼠标点击放开事件添加监听器.24 4.2.4 时间线程.25 4.2.5 最小化托盘.26 4.2.6 更新 TimeLabel 的小算法.27 4.3播放控制模块详细设计与实现 28 4.3

14、.1 播放函数.28 4.3.2 停止函数.29 4.3.3 下一首/上一首函数30 4.3.4 暂停函数.30 4.3.5 对播放至文件播放至末尾结束事件的处理.30 4.4 播放信息模块详细设计与实现.32 4.4.1 播放信息模块.32 4.4.2.播放列表.32 4.4.3 歌曲信息节点.33 4.5 播放列表控制模块详细设计与实现.35 4.5.1 打开文件函数.35 4.5.2 保存/装载列表函数.36 4.6 歌词控制模块详细设计与实现.37 第 5 章 系统运行环境及效果39 5.1 系统运行环境.39 5.2 系统运行效果.39 5.3 不足与改进.40 第一章 绪论 V 第

15、 6 章 结束语41 参考文献42 致谢43 第 1 章 绪论 1 第第 1 章章 绪论绪论 1.1 研究背景研究背景 随着个人电脑的普及,多媒体信息的传播和应用已经深入我们生活中的各 个方面。其中数字音频凭借着其占用存储空间小,声音质量高的特点风靡全球, 传统磁带和 CD 所统治的半壁江山已经成为了数字音频的天下。 当微软 Windows 的局限性和缺点开始暴露出来的同时,多样化的操作系统 平台如 Solaris,Linux 以及 MacOS 等操作系统各自拥有不俗的表现以及庞大的 用户群。面对繁多的操作系统平台,一款具有通用性的音频播放软件则是必不 可少的。 本音频播放软件采用 Java

16、语言编写,旨在利用 Java 的平台无关性特点, 做出一款通用性强、占用空间少却五脏俱全的音频播放器。 1.2 Java 语言的特性语言的特性 首先,从面向对象的特性来看,Java 是一种完全的面向对象设计语言。 Java 的多态主要是建立在后期绑定(Late Bingding)或叫动态绑定(Dynamic Binding)基础之上的,这样 Java 先天就具备了对对象类型的自动判断能力。而 C+是不支持动态绑定的,绑定动作发生在编译期而不是执行期,所以 C+要 实现多台的效果必须要使用虚函数。此外虽然 C+语言支持封装和继承,但多 态仍然是建立在编译时绑定的基础上,必须要通过虚函数实现。不仅

17、如此, C+语言的指针操作允许使用 goto 语句,容易产生歧义的多重继承等特性也使 C+不能严格符合面向对象的思想。 其次,Java 具有绝对的平台无关性,其使用一种虚拟机作为中间层来屏蔽 平台差异。Java 的源程序经过编译产生类文件,类文件结构不同于传统的编译 器生成的二进制文件,必须经过虚拟机的解释才能运行,因此 Java 被认为是一 种解释性语言。虚拟机作为中间层负责把编译好的类文件转换为不同平台的指 令。而对于不同的 C,C+编译器,各种数据类型所占用空间有可能不一样, 这种差异会影响程序的可移植性。 第一章 绪论 2 此外,在内存管理方面,Java 在其虚拟机内部实现了垃圾内存自

18、动回收功 能,能够自动判断那些内存不再被用户使用,这样就让用户在系统设计时从繁 杂的内存管理工作中解脱出来。C 和 C+语言分配的内存空间必须由用户在不 使用的时候进行回收,容易产生内存回收不充分的问题,形成内存漏洞。 然而,Java 也有瑕疵,由于是一种解释型语言,编译后的 Java 类文件不能 直接被操作系统执行,需要虚拟机的解释,因此其效率和 C,C+相比有一定 差距。在运行时,Java 编写的软件需要操作系统中安装有虚拟机,所以程序的 发布相对繁琐。总的说来, Java 编程语言是编程语言是 简单与面向对象的简单与面向对象的 分布式、安全与鲁棒的分布式、安全与鲁棒的 解释执行与高性能的

19、解释执行与高性能的 多线程与动态执行的多线程与动态执行的 Java 应用程序的编译运行过程如图 1-1 所示 Java source code Java Bytecodes Java Complier Networ k Class Loader bytecode verifier Interpreter Runtime Code generator Hardware 图 1-1 第 2 章 关于 JMF 技术 3 第第 2 章章 关于 JMF 技术技术 2.1 关于 JMF 技术 JMF(Java Media Framework) ,Java 媒体架构,是对应 Java 2 平台标准版 (J2

20、SE)的一种可选用的应用编程接口(API)软件包,它为音频和视频等媒体内 容的捕获、回放、传输和编码转换等提供了一个统一的架构。 JMF 技术提供了先进的媒体处理能力,从而扩展了 Java 平台的功能。这些 功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的 支持,如 M-JPEG、H.263、MP3、RTP/RTSP (实时传送协议和实时流转协议) 、Macromedias Flash、IBM 的 HotMedia 和 Beatniks 的 Rich Media Format (RMF)等。 JMF 2.1.1 还支持广受欢迎的媒体类型,如 Quicktime、Micros

21、ofts AVI 和 MPEG-1 等。此外,JMF 软件中包括了一个开放的媒体架构,可使开发人员灵 活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。 Java Media Framework(JMF)是构建在 Java Sound 之上的一层。JMF 实际 上将 Java Sound 用于其音频处理。JMF 支持更多音频格式和更多回放功能,但 缺少 Java Sound 的低层访问。另外,标准 JDK 发行版不包括 JMF 而包括 Java Sound。 Java Sound: 添加音频和 MIDI 支持 与 JDK 1.3 及更高版本一起提供 是轻量级的 本身支持相对较少的音

22、频格式(AIFF、WAV 和 AU) 通过 Java Sound 的服务供应商接口(SPI)可以进行扩展 JMF: 添加对音频、视频和其它基于时间的数据的支持 提供多种媒体格式的同步和控制功能 当前没有与任何 JDK 一起提供 本身支持许多音频格式(AIFF、WAV 等)以及 MPEG 和其它格式 包含可扩展的编码器解码器媒体支持 第 2 章 关于 JMF 技术 4 2.2 JMF 常用类 JMF 的常用类包括以下几个: 数据源(DataSource) 媒体定位器(MediaLocator) 播放器(Player) 处理器(Processor) 数据池(DataSink) 数据格式(Forma

23、t) 管理器(Manager) 2.2.1 数据源(DataSource) 在 JMF 中,DataSource 对象就是数据源,它可以是从采集设备获得的数据, 也可以是一个多媒体文件,也可以是从互联网上下载的数据流。对于 DataSource 对象,一旦你确定了它的位置和类型,对象中就包含了多媒体的位 置信息和能够播放该多媒体的软件信息。当创建了 DataSource 对象后,可以将 它送入 Player 对象中,而 Player 对象不需要关心 DataSource 中的多媒体是如何 获得的,以及格式是什么。 2.2.2 媒体定位器(MediaLocator) DataSource 通常用

24、两种方式来定义,媒体定位器(MediaLocator)或 URL(Universal Resource Locator) 。MediaLocator 类似于 URL,并且可以由 URL 来构造,即使在没有安装相应的协议处理机制的情况下,也能构造 MediaLocator(在 Java,只有在系统上安装了 URL 协议的处理机制的情况下, 才能构造一个 URL) 。MediaLocator 用来定位采集设备、本机的媒体文件、网 络上的媒体文件以及网络 RTP 流。 2.2.3 播放器(Player) 第 2 章 关于 JMF 技术 5 如图 2-1 所示,播放器(Player)对象将音频、视频数

25、据流作为输入,然后将 数据流输出到音箱或屏幕上,就像播放器读取 DV 带中的数据,然后将音频信 号送到音箱上,视频数据送到屏幕上一样。 图 2-1 JMF 播放器(Player)模型 Player 对象有多种状态,JMF 中定义了 Player 有六种状态,如图 2-2 所示。 在正常情况下 Player 对象需要经历每个状态,然后才能播放多媒体。下面是对 这些状态的说明。 图 2-2 播放器的状态转换图 Unrealized:在这种状态下,Player 对象已经被实例化,但是并不知道它 需要播放的多媒体的任何信息。 Realizing:当调用 realize( )方法时,Player 对象的

26、状态从 Unrealized 转变 为 Realizing。在这种状态下,Player 对象正在确定它需要占用哪些资源。 Realized:在这种状态下 Player 对象已经确定了它需要哪些资源,并且 也知道需要播放的多媒体的类型。 Prefetching:当调用 prefetch( )方法时,Player 对象的状态从 Realized 变 为 Prefetching。在该状态下的 Player 对象正在为播放多媒体做一些准备工作, 其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取 第 2 章 关于 JMF 技术 6 (Prefetch) 。 Prefetched:当 Pl

27、ayer 对象完成了预取操作后就到达了该状态。 Started:当调用 start( )方法后,Player 对象就进入了该状态并播放多媒体。 当一个播放器从一个状态转换到另一个状态时,它将产生 TransitionEvent 事件(详细请看 2.3 事件模型) 。通过 ControllerListener 接口,你的程序可以确 定播放器在什么状态并作出相应的反应。使用这种事件报告机制,你可以在调 用播放器的方法前确定播放器是否在其适当的状态。 为了避免混乱情况,在一个播放器所有状态下,不是所有的方法都能被调 用的。如果你在一个播放器对象的当前状态下,调用了一个非法的方法,播放 器对象将抛出异

28、常或错误。 2.2.3 处理器(Processor) 处理器(Processor)对应的接口是 Processor。在 JMF API 中 Processor 接口继承了 Player 接口。 Processor 同样可以用来播放媒体数据。它是一种特殊的播放器,它可以对 输入媒体流进行过程控制。处理器支持所有播放器拥有的播放控制功能。 如图 2-3 所示,除了将媒体数据传送至播放终端外,处理器可以将媒体数 据输出至一个数据源(DataSource) ,使用 Processor 的 getDataOutput( )方法实现, 此数据源可以作为其它的播放器的数据源,或是通过其它的处理器对其进行进

29、一步操作控制,或将其作为数据池(DataSink)的参数,利用数据池或存储到 一个文件,或传送到网络中去。 图 2-4 处理器模型 如图 2-4 所示,除了在播放器中提到了的 6 种状态以外,处理器对象还包 括两种新的状态。这两种状态是在 Unrealized 状态之后,在 Realizing 状态之前。 第 2 章 关于 JMF 技术 7 Configuring:当调用 configure( )方法后,处理器对象进入该状态。在该 状态下处理器对象连接到数据源并获取输入数据的格式信息。 Configured:当完成数据源连接,获得输入数据格式的信息后,处理器 对象就处于 Configured

30、状态。 图 2-4 处理器的状态转换图 2.2.4 数据池(DataSink) 数据池(DataSink)用来读取数据源(DataSource)的媒体数据和输出到 特定的目的地这里的目的地不同于以上所说的如音箱或屏幕。一个特定的 DataSink 或把数据输出到一个文件,或通过网络传输数据,或进行 RTP 广播。 像 Player 一样,DataSink 对象以 DataSource 作为参数,通过管理器 (Manager)来构造。 2.2.5 数据格式(Format) 在 JMF 架构中,数据格式(Format)对象中保存了媒体的格式(format) 信息。它并不包括编码参数和全局时间信息。

31、只是描述了该格式的编码名称和 数据类别。Format 的子类包括 AudioFormat 和 VideoFormat 类,VideoFormat 又有六个子类: H261Format、H263Format、IndexedColorFormat、JPEGFormat、RGBFormat 和 YUVFormat 类4。在 AudioFormat 中,描述了音频格式的属性,如采样频率、 每次采样的数据位数等等。在 VideoFormat 中则描述了视频数据的类型如 H.263 第 2 章 关于 JMF 技术 8 等。 图 2-5 表示 JMF 对音频格式和视频格式的定义: 图 2-5 JMF 的媒体

32、数据格式 2.2.5 管理器(Manager) JMF 提供了下面四种管理器(Manager): Manager:Manager 相当于两个类之间的接口。例如当你需要播放一个 DataSource 对象,你可以通过使用 Manager 对象 createPlayer( )方法创建一个 Player 对象来播放它。使用 Manager 对象可以创建 Player、Processor、DataSource 和 DataSink 对象。 PackageManager:该管理器中保存了 JMF 类注册信息。 CaptureDeviceManager:该管理器中保存了截取设备的注册信息。 PlugInM

33、anager:该管理器中保存了 JMF 插件的注册信息。 2.3 事件模型 JMF 利用事件报告机制来使基于 JMF 的程序获知媒体系统当前的状态, 从而使程序能够对相应状态的改变作出相应的操作。在任何时候,当一个 JMF 对象需要报告当前的状态,它将发出一个 MediaEvent 事件。MediaEvent 的子类 包括 ControllerEvern,DataSinkEvent,GainChangeEvent,RTPEvent。 对于任何一个能发送 MediaEvent 的 JMF 对象而言,JMF 都定义了一个相 第 2 章 关于 JMF 技术 9 应的侦听接口(listener int

34、erface)。为了能在某一 MediaEvent 事件发生时得到相 应的通知,必须实现适当的侦听接口以及在对应的类体中重写该接口中处理 MediaEvent 事件的方法体,并通过调用 addListener 方法来接收此 MediaEvent 事件。 如图 2-6 所示,JMF 中的 Controller 对象,例如播放器(Player)和处理器 (Processor) ,以及 Control 对象,例如 GainControl 都可以发出 MediaEvent 事 件。 (Player 和 Processor 继承于 Controller 类) 图 2-6 JMF 的事件模型 第 2 章

35、关于 JMF 技术 10 图 2-7JMF Controller 事件 图 2-7 列出了所有的 Controller 事件,ControllerEvent 由 Controller(如 Player 或 Processor)产生,可分为三类:改变通知(change notification) ,关闭 事件(closed event) ,状态转变事件(transition event): 1改变通知事件如 RateChangeEvent,DurationUpdateEvent,FormatChangeEvent 表明一些 Controller 的属性的改变。 2状态转变事件可以使你的程序对 C

36、ontroller 对象的状态转变作出反应。 Player 当从一个状态转为另一状态时都会产生 transition events。 3当 Controller 关闭时,它将产生关闭事件。 第 3 章 系统架构和功能模块设计 11 第第 3 章章 系统架构和功能模块设计系统架构和功能模块设计 3.1 MVC 模式概述模式概述 MVC 架构是“Model-View-Controller”的缩写,即将“模型-视图-控制” 作为应用程序构成的三要素。Event(事件)导致 Controller 改变 Model 或 View,或者同时改变两者。只要 Controller 改变了 Models 的数据

37、或者属性,所 有以来的 View 都会自动更新。类似的,只要 Controller 改变了 View,View 会 从潜在的 Model 中获取数据来刷新自己。相应地,本软件也同样使用 MVC 思 想指导设计,做到模块细化,分工明确,模块间逻辑顺序清晰的三大目标。 流程如图 3-1 所示 图 3-1 3.2 系统目标系统目标 对于音频播放器,必须给用户提供最简单的操作和最完善的功能。至少应 该能够对音频文件进行播放、暂停、停止、音量和进度拖放操作等。除了最基 本的操作以外,优秀的播放器还提供了许多附加的功能来突出显示该媒体播放 器的特色,例如本播放器的歌词实时显示。在这样的情况下,对播放器的设

38、计 目标要求有如下功能的实现: 用户界面窗口的控制功能:播放器主窗口控制、播放列表窗口的控制和 歌词显示窗口的控制; 第 3 章 系统架构和功能模块设计 12 媒体文件的播放控制功能:开始播放、暂停播放、停止播放和拖动播放 等; 媒体文件的管理功能:添加歌曲、添加目录,删除歌曲、清空列表、保 存列表和装载列表; 音频文件信息显示功能:将音频文件的基本信息呈现给用户,同时用户 自己可以设置一些信息。 3.3 系统功能模块概要设计系统功能模块概要设计 本软件同样采用 MVC 的设计模式,做到控制,信息与视图的相互分离,同 时相互间有联系紧密,互相调用,互为条件与依赖。故将系统分为五大模块进 行构建

39、,分别是 用户界面模块 播放控制模块 播放信息模块 播放列表控制模块 歌词控制模块 其相互关系如图 3-2 所示 用户请求事件 用户请求事件 视图信息更新 视图信息更新 更新信息 读取信息 更新信息 读取信息 读取信息 更新信息 播放信息模块播放信息模块 用户界面模块用户界面模块 播放控制播放控制 模块模块 播放列表播放列表 控制模块控制模块 歌词控制歌词控制 模块模块 播放列表播放列表 歌曲信息歌曲信息 第 3 章 系统架构和功能模块设计 13 图 3-2 3.3.1 用户界面模块 为了实现软件产品界面的友好性和简洁性,同时又要保证功能的完整性, 播放器的控制窗口的设计显得更是不同一般的重要

40、。首先,给出该界面的组件 组成,如表 2-1 所示。 组件名称组成控件功能 播放/暂停控制按 钮 点击此按钮可以播放媒体文件或暂停音频文件 播放 停止功能按钮点击此按钮可以停止当前正在播放的音频文件 上一首功能按钮 点击此按钮播放播放列表中当前歌曲的上一首 歌曲 下一首功能按钮 点击此按钮播放播放列表中当前歌曲的下一首 歌曲 控制按钮 静音功能按钮点击此按钮可以关闭或打开声音 音量控制条可以通过此控制条改变音量的大小 控制条 进度控制条可以通过此控制条改变播放的进度 添加列表项添加音频文件到播放列表 删除列表项从播放列表删除选中的一个媒体文件 清空列表按钮删除播放列表中的所有媒体文件 新建列表

41、按钮弹出对话框新建一个用户命名播放列表 删除列表按钮弹出对话框是否确认删除当前选择播放列表 保存列表按钮 将播放列表中的内容序列化成.dat 格式的播放 列表文件 播放列表 菜单栏 载入列表按钮 从.dat 格式的文件中读取媒体文件的信息到播 放列表中 打开文件菜单项 选择此项弹出文件选择窗口选择要播放的音频 文件 系统菜单 栏 退出菜单项选择此项退出系统 第 3 章 系统架构和功能模块设计 14 播放模式菜单 单选框用于选择播放模式:单曲循环,顺序播 放 版本菜单项 选择此项弹出当前软件版本对话框显示当前版 本信息 时间标签显示当前播放音频文件的总体进度 正在播放标签显示播放器当前所播放的文

42、件的绝对路径 歌曲名标签显示当前播放音频文件的 TAG 中的歌曲名 艺术家标签显示当前播放音频文件的作者 总时间标签显示当前播放音频文件的总时长 格式标签 显示当前播放的音频文件的格式,采样频率和 取样位数 星级标签显示当前播放的音频文件的用户评价星级 标签 上次修改标签电视当前播放的音频文件的最后一次修改时间 对于一个小小的窗口,要摆放这么多的控件,如果随便地放在窗口上的话, 将会使窗口十分混乱,影响使用,所以要对其摆放位置进行合理的规划。这些 控件被按照功能分成了 3 组,它们分别是控制面板、播放列表面板和 LRC 面板。 这样一来,就可以实现软件产品界面的友好性与简洁性,条理分明,在保证

43、软 件产品功能完整性的同时,方便了用户的使用。各面板关系如图 3-3 主框架 控制面 板 播放列 表面板 LRC 面 板 系统菜 单栏 控制按 钮 控制条标签播放列 表菜单 栏 LRC 右 键菜单 播放列 表 LRC 显 示屏 图 3-3 3.3.2 播放控制模块 第 3 章 系统架构和功能模块设计 15 播放控制模块作为音频播放器的核心部件,担负着创建播放器、对播放器 进行各种控制、对播放信息进行设置的任务,并且与各个模块关系密切,具体 方法如下 方法名称涉及对象或变量功能 构造函数 播放信息,播放 列表 将二者引用传递,以便调用,读取和改写 播放 播放信息中的当 前播放文件地址 和播放状态

44、 通过地址创建播放器,然后判断当前播放状态, 若是空状态则创建;若是暂停态则继续;若是 停止态则开始 暂停播放信息状态 将播放器状态设置为暂停态,同时将 Player 停 止 停止播放信息状态 将当前播放百分比设置为 0,将播放信息状态设 置为停止态,同时关闭 Player 上一首 播放列表,播放 信息 将播放列表索引值减 1 后更新播放信息的当前 播放状态,再调用播放方法 下一首 播放列表,播放 信息 将播放列表索引值加 1 后更新播放信息的当前 播放状态,再调用播放方法 获取播放 器 无获取当前的 Player 引用 设置进度播放信息将当前 Player 的播放进度设定为指定的时间 设置音

45、量播放信息将当前 Player 的音量设定为指定音量 声音关播放信息声音打开 声音开播放信息声音关闭 3.3.3 播放信息模块 播放信息模块由播放信息,播放列表,歌曲信息节点三个层次嵌套而成: 第 3 章 系统架构和功能模块设计 16 播放信息 播放列表 1(默认) 播放列表 2 播放状态。 。 。 。 。 。 歌曲信息 节点 1 歌曲信息 节点 2 歌曲信息 节点。 。 。 歌曲信息 节点 1 歌曲信息 节点 2 歌曲信息 节点。 。 。 图 3-4 首先来看一下播放信息中播放状态的主要组成 方法名称涉及对象和变量功能 构造函数无初始化播放状态信息,新建默认播放列表 序列化播放列表将播放列表

46、序列化保存至硬盘 设置、获 取当前播 放文件地 址 播放列表 将播放器状态设置为暂停态,同时将 Player 停 止 设置、获 取当前播 放列表 播放列表将当前播放列表的引用返回 设置、获 取播放器 开始状态 无 若 Player 已经开始播放,则设置状态为 True 否则为 False 设置、获 取暂停状 态 无 若 Player 已经暂停,则设置状态为 True 否则 为 False 设置、获 取暂停时 间 无 设置当前播放文件的暂停时间,以便继续的时 候设定开始时间 第 3 章 系统架构和功能模块设计 17 设置、获 取当前播 放百分比 无获取当前的 Player 播放时间占总时间的百分

47、比 设置、获 取当前播 放音量 无将当前 Player 的音量设定为指定的值 设置当前 播放列表 索引 无将当前 Player 的音量设定为指定音量 设置、获 取声音开 关 无将当前 Player 的音量设定为 0 或 100 接下来是播放列表的组成 方法名称涉及对象和变量功能 构造函数用户输入字符串新建一个播放列表,名称为用户输入的字符串 设置、获 取当前列 表的名称 用户输入字符串 更改或者获取当前列表的名字,一般由用户输 入后传递 添加单个 文件至列 表 文件对象 根据从 Controller 接受文件对象为列表添加节 点 添加多个 文件至列 表 文件组 根据从 Controller 接

48、受文件对象为列表添加一 批节点 清空列表无将当前列表所清空 删除列表 项 用户界面模块传 递来的临时索引 将索引所指向的节点删除后调整列表 设置、获 取当前列 无 根据播放列表的点击事件设置当前列表的索引, 该索引指向音频文件节点 第 3 章 系统架构和功能模块设计 18 表索引 获取指定 索引的节 点 无返回播放列表指定的索引节点 接下来是歌曲信息节点的组成 方法名称涉及对象和变量功能 构造函数文件对象 新建一个歌曲信息节点,同时初始化各种变量, 如歌曲名称,格式,时长,艺术家等等 设置、获 取 mp3 信 息 文件对象若文件类型为 mp3,读取 TAG 获取 mp3 信息 设置、获 取文件

49、是 否存在 无 检查该文件是否存在,即是否和节点中存储的 路径信息一直,若不一致则失效,文件不存在, isExist 设置为 False 3.3.4 播放列表控制模块 方法名称涉及对象和变量功能 构造函数播放控制模块引用传递 打开文件播放信息模块 新建一个文件选择器选择要打开的音频文件,将文件 对象传递给播放信息模块 添加列表播放信息模块新建一个播放列表并命名 删除列表播放信息模块删除一个播放列表 保存列表播放信息模块将当前列表序列化保存 载入列表播放信息模块 读取.dat文件并将数据传递只播放信息模块添加一个列 表 3.3.5 歌词控制模块 方法名称涉及对象和变量功能 构造函数文件对象 首先搜索当前文件夹下是否有歌词存在,有则加载, 再搜索歌词文件夹下是否有歌词,有则加载,否则为 第 3 章 系统架构和功能模块设计 19 空 绘图用户界面模块重新绘制歌词板,将信息传递给用户界面模块 载入/撤销 LRC歌词 无 弹出文件选择对话框选择.lrc文件载

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1