基于Android音乐播放器的设计及实现_第1页
基于Android音乐播放器的设计及实现_第2页
基于Android音乐播放器的设计及实现_第3页
基于Android音乐播放器的设计及实现_第4页
基于Android音乐播放器的设计及实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-PAGE . z- - - .总结资料滨江学院?移动通信程序设计?课程设计 题 目 基于Android系统的音乐播放器 院 系 滨江学院 专 业 计算机科学与技术 学生 王 兵 学 号 20212308057二 一 四 年 六 月 十 日-. z摘要随着生活水平的提高,娱乐已成为非常主流的话题,人们不仅需要通过音乐冶情操,而且越来越多的人倾向于使用音乐、视频等娱乐和放松自己,这大大促进了媒体软件的开展.本文旨在介绍研究常用数字音频编码和解码的相关知识,并结合VS2021编写多功能音乐播放器,了解音乐播放器功能的实现,掌握开发音乐播放器所需的相关知识,采用了面向对象软件工程方法,其开发主要包括

2、应用程序界面设计和后台代码运行两个方面,实现了多功能音乐播放器在计算机上的应用,可以在很大程度上满足用户的需求.该系统主要具备:音乐播放控制、音乐文件控制、音量控制、下载控制、歌词控制、进度控制、音乐剪辑等功能模块。关键字:音乐播放器,音频编码格式,TechSmith Screen Capture Codec,FFmpeg,C*,Visual Studio 2021目 录 TOC h z t 标题 1,2,1级,1,结尾,1 HYPERLINK l _Toc3569900901前言 PAGEREF _Toc356990090 h - 4 -HYPERLINK l _Toc3569900911.

3、1选题的背景及意义 PAGEREF _Toc356990091 h - 4 -HYPERLINK l _Toc3569900921.2网络流行音乐播放器简介 PAGEREF _Toc356990092 h - 4 -HYPERLINK l _Toc3569900932系统相关技术及开发平台介绍 PAGEREF _Toc356990093 h - 5 -HYPERLINK l _Toc3569900942.1开发应用技术介绍 PAGEREF _Toc356990094 h - 5 -HYPERLINK l _Toc3569900952.2开发及运行坏境 PAGEREF _Toc356990095

4、 h - 7 -HYPERLINK l _Toc3569900963系统的分析 PAGEREF _Toc356990096 h - 8 -HYPERLINK l _Toc3569900973.1可行性分析 PAGEREF _Toc356990097 h - 8 -HYPERLINK l _Toc3569900983.2常见的几种音频格式及其特点 PAGEREF _Toc356990098 h - 9 -HYPERLINK l _Toc3569900993.3需求分析 PAGEREF _Toc356990099 h - 10 -HYPERLINK l _Toc3569901004系统设计 PAG

5、EREF _Toc356990100 h - 12 -HYPERLINK l _Toc3569901014.1系统概要设计 PAGEREF _Toc356990101 h - 12 -HYPERLINK l _Toc3569901024.2系统功能设计及描述 PAGEREF _Toc356990102 h - 12 -HYPERLINK l _Toc3569901035系统功能实现 PAGEREF _Toc356990103 h - 14 -HYPERLINK l _Toc3569901045.1歌曲添加模块 PAGEREF _Toc356990104 h - 15 -HYPERLINK l

6、_Toc3569901055.2歌曲列表模块 PAGEREF _Toc356990105 h - 19 -HYPERLINK l _Toc3569901065.3播放控制模块 PAGEREF _Toc356990106 h - 20 -HYPERLINK l _Toc3569901075.4音量控制模块 PAGEREF _Toc356990107 h - 23 -HYPERLINK l _Toc3569901085.5进度控制模块 PAGEREF _Toc356990108 h - 24 -HYPERLINK l _Toc3569901095.6滚动字幕模块 PAGEREF _Toc35699

7、0109 h - 24 -HYPERLINK l _Toc3569901105.7歌曲下载模块 PAGEREF _Toc356990110 h - 29 -HYPERLINK l _Toc3569901115.8歌曲剪辑模块 PAGEREF _Toc356990111 h - 31 -HYPERLINK l _Toc356990112结论 PAGEREF _Toc356990112 h - 35 -HYPERLINK l _Toc356990113参考文献 PAGEREF _Toc356990113 h - 36 -HYPERLINK l _Toc356990114致 PAGEREF _Toc

8、356990114 h - 37 -1前言1.1选题的背景及意义音乐是情感的艺术,美妙动听的音乐来源于情感,又潜移默化地影响情感,让我们进入瑰丽多彩的虚化与现实的意境之中。向上追溯百年或千年,直至最原始的音乐诞生之初,我相信音乐是为了倾诉而不是表现,是自然的流露而不是技巧的夸,是自我的沉醉而不是别人的掌声。因为爱与感动,因为生命的圆满与缺憾,因为思想的灵动与创造。所以音乐不单在乐谱上,更在我们的心中。众所周知任何格式的音乐都要通过音乐播放软件播放,则音乐播放软件是通过什么样的原理实现音乐的播放的呢.音乐播放器就是音频解码器的可视化操作界面,其实质是针对各种音频编码格式的解码器。例如APE格式调

9、用的是Monkeys Audio解码器,FLAC格式调用的是FLAC解码器,MP3调用的是lame解码器。大局部音乐播放器都支持多种音乐格式的文件,这是因为这些播放器将不同的音频解码器打包起来,并制作统一的播放界面,从而让使用者能够方便地播放和聆听各种音乐。伴随着改革开放人们的生活水平普遍提高如今音乐已成为越来越多人的心灵寄托。随着因特网在我国的普及随之而来的是各式各样的播放器软件。尽管未来的音乐播放器将具备各种丰富多彩的功能,但作为一款多媒体软件,音频应用才是最根本的,也是最能决定获取用户数量的因素。基于上述分析音质高,外形美观,小巧且功能强大是未来播放器开展的主流趋势。作为一个音乐爱好者兼

10、软件工程专业的一员假设能编写一款小巧功能强大的音乐播放器无疑是一件很有成就感的事情。1.2网络流行音乐播放器简介本小节举例介绍目前网络上流行的几款音乐播放器,比方国产千千静听,酷狗音乐等。比拟分析了它们各自特有的功能,此外还集中介绍了常见的几种编码格式以及它们各自的特点。1.2.1千千静听千千静听是一款专为用户定制的全新一代的免费听歌下载音乐播放器软件。提供百万首歌曲免费试听下载,拥有最新、最流行的歌曲,提供第一时间音乐资讯;超高品质(320kbps)的音乐歌曲下载,给耳朵更优质的享受;超炫的智能语音搜歌功能让听歌更加快捷;免费的手机铃声歌曲下载;轻松拖拽歌词,保持歌词同步,支持边听边唱;支持

11、在线播放下载;流量限额提醒功能。软件特色:1、高精度音质,完美复原听觉 ;2、在线自动下载歌词,卡拉OK式同步显示 ;3、软件小、运行快、支持众多插件,自由编辑歌词,由你做主;4、自由转换MP3、WMA,APE,WAV等多种音频格式 ,批量修改歌曲标签信息;5、个性化皮肤,多种视觉效果享受永远免费。1.2.2酷狗音乐酷狗音乐是中国领先的数字音乐交互效劳提供商,互联网技术创新的领军企业,致力于为互联网用户和数字音乐产业开展提供最正确的解决方案,公司的使命是成为亚太地区最大的数字音乐销售推广企业。自公司创立以来,一直在数字音乐开展上大胆尝试,先后与几十家唱片公司、管理机构合作探索开展,积累了数万首

12、数字音乐,并在推动广围的跨行业、跨平台合作上做出努力,在艰巨的全球音乐数字化进程中做出自身的奉献。全球最受欢送的免费中文播放软件,流行音乐搜索平台。软件特色:1、迷你界面、界面更酷、绚丽流行;保持了Windows Vista和*P下的完美表现,让人耳目一新;2、卡拉OK酷狗独创“卡拉OK歌词显示,多种模式,边听边唱,让你听歌更好玩;3、支持本地音乐播放完美音质,支持所有的音频文件,本地文件拖放,同时支持网络高速下载和本地播放;4、超强搜索和下载优化歌曲搜索引擎,提高搜索准确度;智能化节约带宽,可关闭网络功能;5、流行音乐资讯酷狗榜单家族、狗友推荐、酷吧、狗窝,最新流行音乐一网打尽,好听的音乐来

13、“找你;6、个性化手机炫铃DIY,让拥有扬个性的铃声7、音频格式我选择我的歌曲我制作,音质音效我决定8、收音机动感音乐识别体验精选多家电台,收听全球风云变化,更能识别电台中的音乐。2系统相关技术及开发平台介绍本系统是采用面向对象的软件开发方法,基于微软的Visual Studio .Net 开发平台,以C*作为本系统的开发语言实现音乐播放器预定的需求功能。2.1开发应用技术介绍2.1.1TechSmith Screen Capture Codec简介TechSmith Screen Capture Codec是TechSmith公司开发的Camtasia Studio的一个组件,用于压缩Cam

14、tasia Recorder中的视频文件,最大的优点是可以保证图像的质量,截取的屏幕经过屡次压缩,还能保证高质量。 比传统的压缩方式相比,优势十清楚显。 Camtasia Studio是TechSmith旗下一款专门录制屏幕动作的工具,无论在何种颜色模式下它都能轻松地对屏幕动作进展记录,包括声音、图像、鼠标的移动轨迹等。此外,它还能够对音频片段进展编辑、压缩、剪接从而实现多种音效的播放。它还能输出包括Flash(SWF/FLV)、AVI、WMV、M4V、CAMV、MOV、RM、GIF动画等多种常见格式,是制作视频演示的绝佳工具。其实Camtasia Studio已不仅仅是一个录屏工具了,它包括

15、了5个组件:Camtasia录像器、菜单制作器、音频编辑器、剧场及播放器。本播放器在运行之前需要安装TechSmith Screen Capture Codec组件,此组件会和系统一起打包发行,用户也可以自己从网上下载更高版本的组件,只有安装此组件才能实现播放器中的歌词剪切功能。2.1.2FFmpeg简介FFmpeg在Linu*平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS *等。这个工程最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer工程,而且当前FFmpeg也

16、是放在MPlayer工程组的效劳器上。工程的名称来自MPEG视频编码标准,前面的FF代表Fast Forward。使用本播放器如果要对flv格式的文件进展播放则要安装FFmpeg。2.1.3Visual Studio .Net集成开发环境简介.NET平台为创立新一代分布式Web应用提供了所有工具和技术表示技术、构件技术和数据库技术。.NET平台支持标准的Internet协议,包括HTTP超文本传输协议、*ML可扩展标记语言和SOAP简单对象协议等,从而实现了异构系统间应用程序的集成和通信,即用户和供给商可将在此平台上开发的产品和效劳无缝地嵌入自身的业务进程和日常活动的信息架构中。.NET平台建

17、立在开放系统构造根底之上,集Microsoft在软件领域的主要技术成就于一身。.NET平台包括一下4种核心技术:.NET Framework、.NET企业效劳器、构件模块效劳和Visual Studio .NET。.NET Framework是.NET平台核心中的核心,它为.NET平台下应用程序的运行提供根本框架,如果把Windows操作系统比作一幢摩天大厦的地基,则.NET Framework就是摩天大厦中由钢筋和混凝土搭成的框架。.NET企业效劳器是Microsoft为企事业单位提供的技术效劳中的一局部,它包括Microsoft BizTalk Server、Microsoft merce

18、 Server、Host Integration Server、E*change Server、SQL Server等技术的开发工具包。构建模块效劳主要是Microsoft提供的+组件效劳和*ML Web效劳技术,利用构建模块效劳开发应用程序模块,可以迅速地组装一个功能完备的软件。Visual Studio .NET是.NET平台的主要开发工具,由于.NET平台是建立在开放系统构造根底之上的,因此应用程序开发人员也可以使用其它开发工具。2.1.4C*语言简介C*(*原为音乐标记,读Sharp)是一种面向对象的编程语言,主要用于开发可以运行在.NET平台上的应用程序。C*语言是微软公司开发的基于

19、.NET Framework的一种编程语言,它继承了C/C+优良传统,又借鉴了Java的很多特点。微软对C*的定义是:“C*是从C和C+派生出来的一种简单、现代、面向对象和类型平安的编程语言。C*主要是从C/C+编程语言家族移植过来的,C和C+的程序员能够很快熟悉它。C*试图结合Visual Basic的快速开发能力和C+的强大灵活的能力。2C*是2000年6月微软公司发布的一种全新编程语言,是由Anders Hejlsberg和他的微软开发团队所设计,具体如下特点:通用,支持跨平台。C*程序的客户端可以运行在不同类型的客户端上,如PDA、手机等PC装置。简单,主要表达在垃圾收集、指代等特性上

20、。垃圾收集机制将减轻开发人员对存的管理负担,而指代功能更是可以让开发者不经过部类就调用函数。利用C*的这些功能,可以使开发者通过较少的代码来实现更强大的应用程序,并且能够更好地防止错误发生,从而缩短了应用系统的开发周期。面向对象设计,C*具有封装、继承和多态等面向对象程序语言的特征。与Web应用严密的结合,C*支持绝大多数的Web标准,如HTML、*ML、SOAP等。这是C*最大的特点,使用它可以轻松开发各种企业级应用平台。平安性机制,消除软件开发中常见错误如语法错误,.NET提供的垃圾回收器能够帮助开发者有效的管理存资源。兼容性,C*遵循.NET的公共语言规CLS,能够保证与其它语言开发组件

21、兼容。灵活的版本处理技术,C*在语言本身置了版本控制功能,开发人员可以更加容易地开发和维护。C*提供了完善的错误和异常触发机制。2.2开发及运行坏境硬件平台:CPU奔腾双核 (主频2.0GHz)存1G32位PC机160G硬盘软件平台:操作系统:Windows *P Win7Win8开发工具:Visual Studio 2021。本软件占用系统空间小,能满足用户对常见音频格式文件的播放要求,还具有歌曲、歌词下载等功能,界面美观交互性好,易于用户理解操作,且不依赖于其它软件,消耗资源少易维护,程序有较好的强健性和正确性。运行该软件所需的坏境配置不高,能满足绝大多数用户的需求。3系统的分析3.1可行

22、性分析可行性研究(feasibility study)的目的,是弄清楚待开发的工程是不是可能实现和值得进展,通常由系统分析员完成,并需写出可行性论证报告。如结论认为可行,即可制定工程实施方案,同时开场软件开发;如结论认为不可行,则应提出终止该工程的建议。可行性论证其实是在高层次上进展的一次大大简化了的需求分析与设计。但它的目的不是去解决用户提出的问题,仅是确定这项开发是否值得进展,分析它存在哪些风险。换句话来说,在投入大量精力前研究成功的可能性,减小可能出现的风险。即使研究的结论是不值得进展,所花的精力也并不浪费,因为它防止了一次更大的浪费。下面我们将根据本系统的特点具体描述以下可行性分析。3

23、3.1.1 经济可行性开发一个基于计算机的系统主要是为了获取较好的经济效益和社会效益。因此对待开发系统的经济可行性论证就成为可行性研究的重要容。本钱-效益分析可用于评估系统的经济合理性,给出系统开发的本钱估算,并将估算的本钱与获得的利润进展比对,从经济的角度论证待开发系统是否可行。一般来说,基于计算机系统的本钱主要由4局部组成:购置并安装软硬件及有关设备的费用。系统开发费用。系统安装、运行和维护费用。人员培训费用。结合毕业设计的整个开发过程可知开发音乐播放器所需的全部软件平台都是免费的,所以在经济上是完全可行的。3.1.2 技术可行性技术可行性是可行性研究的关键容。由于系统分析和定义过程与系统

24、技术可行性评估过程同时进展,此时系统的功能、性能和目标的不确定性会给技术可行性论证带来许多困难。因此,技术可行性研究往往是系统开发过程中难度最大的工作。该音乐播放器是用C*语音开发的,调试比拟简单,所需的计算机硬件配置要求不高,一般PC机完全能满足开发要求。软件方面:基于微软.net开发平台使用C*面向对象的编程语音,它开发速度快,简单易用,技术成熟,软件也容易从网上获得,完全能满足开发需求。3.1.3 法理可行性法律可行性主要研究新系统的开发和使用是否会侵犯他人权益,是否触犯了国家的法律法规。本次的毕业设计是由本人独立完成,开发的系统不会侵犯任何人的权益,所用的软件都是通过合法途径获取,因此

25、完全符合法律法规。综上所述,本系统的开发从经济上、技术上、法律上都是完全可行的。3.2常见的几种音频格式及其特点MP3格式:MP3的全称是Moving Picture E*perts Group Audio Layer 。MP3是Fraunhofer-IIS研究所的出色成果。在MP3出现前,以有损方式进展音频编码最好的效果能够压缩到4:1。而强大的MP3可以实现12:1的高压缩比,正是因为这种性能的巨大提升,并且在实现高压缩比的同时还能够保持较好的音质,所以使得MP3迅速地流行起来。MP3是世界上第一个实用化的有损压缩编码方案,几乎所有的播放软件都支持它,也曾今产生了许多第三方的编码工具。MP

26、3编码质量分为:固定码率(CBR),平均码率(ABR)和动态码率(VBR)。4特点:音质好,压缩比比拟高,被大量软件和硬件支持,应用广泛。WMA格式:WMA就是Windows Media Audio编码后的文件,它是微软公司推出的与MP3格式齐名的一种新的音乐格式。WMA在压缩比和音质方面都超过了MP3,更是远胜于RA(Real Audio),即使在较低的采样频率下也能产生较好的音质。WMA针对的不是单机市场,而是网络!竞争对手就是网络媒体市场中著名的Real Networks。WMA格式有非常高的压缩率,一般为1:18,因此它的文件所占空间比相应的MP3文件少一半。这是通过提高音质、减少数据

27、流量的方法来实现更高的压缩率的。此外它还有很强的防盗版功能。特点:低码率下的音质表现难有对手。4WAV格式:WAV是微软Windows系统本身自带的音频格式,因为Windows系统的普及性,此格式已经成了当前最主流的音频格式之一。WAV文件里面存放的每一块数据都有自己独立的标识,通过这些标识可以告诉用户终究是什么数据。WAV格式的设计非常灵活,该格式本身与任何媒体数据都不冲突,只要有软件支持,我们甚至可以在WAV格式里面存放图像。在Windows平台上,通过ACM构造及相应的驱动程序,例如CODEC编码/解码器,可以在WAV文件中存放超过20种的压缩格式,比方ADPCM、GSM、CCITT G

28、.711、G.723和MP3等。4特点:音质非常好,被大量软件所支持。RA格式:RA格式是Real Networks公司所开发的一种新型流式音频Real Audio文件格式。这是网上接触得非常多的一种格式,大局部音乐的在线试听都采用了Real Audio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的优点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。4特点:码率可控,支持多种音频编码,可边读边放。3.3需求分析软件需指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。需求分析就是通过对应用问题及其坏境的分析与理解采用一系列的分析

29、方法和技术将用户的需求逐步准确化、完全化、一致化,最终形成需求规模说明文档的过程。本节将从不同的角度描述系统的需求。3.3.1播放器的根本控制需求在着手开发系统之前首先要明确该系统应该实现的一些最根本的功能,然后逐步细化,为每个功能创立一个模块,再对各个模块进展开发。通过分析我们得出一款音乐播放器的根本控制如图3-1所示:图 3-1 播放器根本控制图3.3.2功能需求功能需求规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求 behavioral requirement,因为习惯上总是用“应该对其进展描述。功能需求描述是开发人员需要实

30、现什么。功能需求定义一个软件系统或组件的功能,也是一个系统需提供的功能及效劳。功能可以用一组输入、行为及输出的组合来表示。功能需求可以是计算、技术细节、数据处理或其他说明系统希望达成功能的容。功能需求会以非功能性需求或是质量需求为其根底。结合音乐播放器所要实现的容,我们列出用户操作的模块,其中每个模块对应一个功能。用户启动程序进入主界面,用户可以通过添加模块添加本地歌曲,可以一首一首添也可以添加整个歌曲文件夹。通过播放列表用户可以实现对歌曲的查找、播放、暂停、音量调节、静音。通过歌词模块可以实行歌曲歌词的显示、比对、歌词字体选择。此外用户还可以联网下载歌词、歌曲。其功能模块时序图如下3-2所示

31、:图3-2 音乐播放器功能时序图4系统设计4.1系统概要设计在需求明确、准备开场编码之前,要做概要设计。概要设计的主要任务是把需求分析得到的DFD转换为软件构造和数据构造。设计软件构造的具体任务是:将一个复杂系统按功能进展模块划分、建立模块的层次构造及调用关系、确定模块间的接口及人机界面等。数据构造设计包括数据特征的描述、确定数据的构造特性、以及数据库的设计。概要设计有多种方法。在早期有模块化方法、功能分解方法;在60年代后期提出了面向数据流和面向数据构造的设计方法;近年来又提出面向对象的设计方法等。本系统采用模块化软件设计,自顶向下逐层把软件系统划分成假设干模块。每个模块完成一个特定的功能,

32、最后将所有模块按照*种方法组合成一个整体,到达整个播放器所要求的功能。4.2系统功能设计及描述本音乐播放器不仅要实现对一些常见的音频格式文件的播放,而且还要有友好的用户界面。其最终设计目标是:实现对多种音频格式文件的播放、实现对歌词的滚动播放及当前播放曲目长度显示、显示歌曲文件信息、实现静音和音量控制;播放器软件占用系统资源少、运行平台要求不高、界面美观舒适、操作简单、易维护、高稳定性、,能满足用户的常见需求。主要划分为以下七个功能模块,每个功能模块的作用描述如下:播放控制:控制歌曲的播放状态,如:播放、暂停、上一曲、下一曲。播放过的歌曲按播放顺序排列在播放列表中,每次退出程序、重启播放器后播

33、放列表中的播放记录会自动保存不会清空。文件控制:主要用来翻开本地播放文件。通过研究音频编码解码的相关技术,了解音频编码解码的原理和过程,本音乐播放器支持常见音频格式文件播放如:MP3、WMA、WAV等。可以单个曲目添加,也可以将整个文件夹中的曲目全部添加,实现歌曲文件添加的多样化;此外还可以对播放列表进展清空,对曲目的播放顺序进展控制;当播放列表中曲目过多时,可以从播放列表中快速搜索到需要播放的歌曲。还有对播放列表进展控制如:翻开文件所在目录、移除列表、删除文件、显示歌曲文件的相关信息,如:歌手、专辑等。歌词控制:播放音乐时控制是否显示歌曲歌词,假设歌词存在则同步滚动显示歌词,假设歌词不存在则

34、可联网下载歌词。此外还可以对歌词字体进展设置。进度控制:显示当前歌曲的播放总时长和已播放时长,可以通过鼠标调整歌曲的播放进度,实现歌曲的跳跃式播放。其实现方式是通过进度条和时间的同步显示。声音控制:调整歌曲音量的大小,显示是否静音。下载控制:可以联网下载自己喜欢的歌曲、歌词。假设不知道歌曲名称则可以按歌手名查找歌曲下载,假设知道歌曲名则可直接输入名称进展下载,可以在下载进度列表中查看下载状态。音乐剪切:对音乐文件进展剪切。添加当前路径,对想要的歌曲进展播放,在歌曲播放过程中你可以在任何地方设置一个起点,然后,再设置一个终点。“试听歌曲就是把你选出来的这一段播放一遍,看是不是你要的那一段,有时候

35、可以早开场了几秒或者早完毕了几秒,这个时候可以直接在起点和终点的地方进展调整。然后在这个窗口的上面有个“保存歌曲,就可以把你选出来的这段音乐保存起来了。我们可以通过歌曲剪切功能截取自己喜欢的音乐片段,来做为自己的手机铃声。其具体功能模块如图4-1所示:图4-1 音乐播放器功能模块图5系统功能实现根据上一章对系统各个模块的分析,本节主要讲述如何具体实现这些模块功能。几乎所有的Windows程序都离不开窗体,Windows窗体应用程序是Windows下进展软件开发的根底。在C*中,通过Visual Studio 2021开发平台模版,可以自动生成多种基于Windows的应用程序框架,主要包括基于.

36、NET Framework的Windows窗体应用程序、Windows效劳应用程序。最常用的是Windows窗体应用程序。在Windows窗体应用程序中,有窗体(Form)和控件(Control)两个根本概念。窗体是控件的容器,控件是应用程序显示数据或承受数据输入的相对独立的用户界面元素。.NET类库提供了丰富的窗体相关类,包括窗体、按钮、状态栏、工具栏、菜单、文本框、列表等多种不同的界面元素;此外还提供各种控件、组件、容器。通过这些界面元素的不同组合,可以设计出友好的用户界面。对于软件开发中要用到的图片可以自己绘制,相关控件可以调用类库,从而设计出外形美观的界面。但这也做相当费时,由于毕业设

37、计的时间有限,图片都从网上下载,并做稍微处理,所以美观方面有一定欠缺,待以后有时间慢慢改良。此外界面是由窗体、控件拖放组成,大局部代码由视图设计器自动生成,无需太多改动,因此这一局部不再详细阐述,下面将主要介绍主要功能模块的核心代码实现。5.1歌曲添加模块很多的应用程序都有翻开文件功能,本程序使用OpenFileDialog组件,用来翻开本地磁盘上的一个或多个文件,并添加到文件播放列表中。5.1.1添加歌曲文件为了赶上社会的潮流,我们经常会从网上下载最热门的音乐,本模块功能就是实现添加本地歌曲或已下载到电脑的最新歌曲到播放列表,同时更新播放列表,使我们能及时欣赏到自己喜欢的音乐。其具体代码如下

38、:privatevoidAddSong_Click(objectsender, EventArgse) ofd.Filter = 音乐文件(*.wmv, *.mp3,*.wav)| *.wmv; *.mp3;*.wav|All files (*.*)|*.*;ofd.InitialDirectory = Application.StartupPath;ofd.FileName = ;ofd.RestoreDirectory= false;ofd.Title = 添加音乐文件;if (ofd.ShowDialog() = DialogResult.OK) stringstrLongPath =

39、ofd.FileName;WriteFileByLongPath(strLongPath); privatevoidWriteFileByLongPath(stringstrLongPath) intb = strLongPath.LastInde*Of();stringstrShortPathWithE*tension = strLongPath.Substring(b + 1);StreamWritersw = newStreamWriter(list.ini, true);stringe*tension = strShortPathWithE*tension.Substring(strS

40、hortPathWithE*tension.Length - 3);if (e*tension.ToLower() = wmv | e*tension.ToLower() = mp3 | e*tension.ToLower() = wav) stringstrShortPathWithoutE*tension = strLongPath.Substring(b + 1, strShortPathWithE*tension.Length - 4);Mp3mp3 = newMp3(strLongPath);if (!(String.IsNullOrEmpty(mp3.Artist) | Strin

41、g.IsNullOrEmpty(mp3.Title) /获取成功的结果(歌手名 - 歌曲名)strShortPathWithoutE*tension = mp3.Artist.Trim() + - + mp3.Title.Trim(); /否则原文件名if (!this.myListBo*.Items.Contains(strShortPathWithoutE*tension) /不包含songList.Add(strShortPathWithoutE*tension);Imageimage = getImageByArtistOrSongName(mp3.Artist, strShortPa

42、thWithoutE*tension);imageList.Add(image);this.myListBo*.Items.Add(strShortPathWithoutE*tension);this.myListBo*.songList = songList;this.myListBo*.imageList = imageList;sw.WriteLine(strShortPathWithoutE*tension);sw.WriteLine(strLongPath); /写入全路径 sw.Flush();sw.Close(); 5.12添加歌曲文件夹当我们要欣赏歌曲专辑时,可能要添加的文件比

43、拟多,显然单曲添加比拟麻烦,这时我们就可以使用OpenFileDialog组件的Multiselect属性和Filenames属性实现整个文件夹的添加,同时更新播放列表。代码如下:privatevoidtsmiAddSongFolder_Click(objectsender, EventArgse) if (fbd.ShowDialog() = DialogResult.OK) stringstr = fbd.SelectedPath;DirectoryInfor = newDirectoryInfo(str);GetAllFiles(r); publicvoidGetAllFiles(Dir

44、ectoryInfodir) FileSystemInfo fileinto = dir.GetFileSystemInfos();foreach (FileSystemInfoiinfileinto) if (iisDirectoryInfo) GetAllFiles(DirectoryInfo)i); else stringstrLongPath = i.FullName;WriteFileByLongPath(strLongPath); privatevoidtsmiSearch_Click(objectsender, EventArgse) if (this.mySearchPanel

45、.boolSearchShow) /已经翻开,则关闭this.mySearchPanel.close(); else this.mySearchPanel.boolSearchShow = true;this.mySearchPanel.lb = this.myListBo*;this.mySearchPanel.copyValueList(); initialSearchPanel(); 图5-1 翻开文件5.2歌曲列表模块播放列表主要用来显示要播放歌曲的信息,如歌手、照片、曲名。在这里我们使用ListBo*控件来实现相关功能。详细代码如下:this.myListBo*.Anchor = (

46、System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left);this.myListBo*.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;this.myListBo*.FormattingEnabled = true;this.myListBo*.Location = n

47、ewSystem.Drawing.Point(2, 115);this.myListBo*.Name = myListBo*;this.myListBo*.Size = newSystem.Drawing.Size(302, 354);this.myListBo*.TabInde* = 0;this.myListBo*.MouseDown += newSystem.Windows.Forms.MouseEventHandler(this.myListBo*_MouseDown);privatevoidmyListBo*_MouseDown(objectsender, MouseEventArg

48、se) if (this.myListBo*.thisInde* != -1) if (e.Button = System.Windows.Forms.MouseButtons.Right) this.myListBo*.Conte*tMenuStrip = thissListBo*; 图5-2播放列表5.3播放控制模块播放是音乐播放器最重要的功能。本程序使用Windows Media Player命名空间中定义的属性和方法来实现歌曲的播放、暂停、上下去切换等。其核心代码如下:privatevoidinitialBtn() if (playStatue = MediaPlayer.PlaySt

49、atue.播放) /正在播放,暂停图片btnPlay.Image = Image.FromFile(picpause.bmp); elseif (playStatue = MediaPlayer.PlayStatue.暂停 | playStatue = MediaPlayer.PlayStatue.停顿) /开场播放图片btnPlay.Image = Image.FromFile(picplay.bmp); if (this.boolVolumn) this.btnVolumn.Image = Image.FromFile(pic02.gif); elsethis.btnVolumn.Imag

50、e = Image.FromFile(pic01.gif); privatevoidne*tSongPlay() /下一曲if (playStyle = MediaPlayer.PlayStyle.随机播放) /选择随机播放时就产生一个随机数组,播放记录,根据数组,上一曲下一曲都有用if (randomInde* + 1 = randomList.Count) randomSongPlay(); elsethis.myListBo*.doubleClickInde* = (int)randomList+randomInde*; elseif (playStyle = MediaPlayer.P

51、layStyle.顺序播放) this.myListBo*.doubleClickInde*+;if (this.myListBo*.doubleClickInde* = this.myListBo*.Items.Count) playStatue = MediaPlayer.PlayStatue.停顿;this.myListBo*.doubleClickInde* = this.myListBo*.Items.Count - 1;stop();initialBtn();return; else /下一曲,如果到底,将播放第一首歌曲,全部循环this.myListBo*.doubleClick

52、Inde*+;if (this.myListBo*.doubleClickInde* = this.myListBo*.Items.Count) /转第一首this.myListBo*.doubleClickInde* = 0; btnChangeSong();initialBtn(); privatevoidlastSongPlay() if (playStyle = MediaPlayer.PlayStyle.随机播放 & randomInde* = 1) this.myListBo*.doubleClickInde* = (int)randomList-randomInde*; else

53、if (playStyle = MediaPlayer.PlayStyle.顺序播放) this.myListBo*.doubleClickInde*-;if (this.myListBo*.doubleClickInde* = -1) this.myListBo*.doubleClickInde* = 0;playStatue = MediaPlayer.PlayStatue.停顿;stop();initialBtn();return; else this.myListBo*.doubleClickInde*-;if (this.myListBo*.doubleClickInde* = -1

54、) /转最后一首this.myListBo*.doubleClickInde* = this.myListBo*.Items.Count - 1; btnChangeSong(); 5.4音量控制模块通过调节音量大小来到达歌曲播放的最正确状态。可以调用API函数 SENDMESSAGE APPMAND_VOLUME_MUTE和TrackBar 类来实现音量控制。代码如下:privatevoidbtnVolumn_Click(objectsender, EventArgse) IniUtility.FilePath = Application.StartupPath + INI.ini;if (

55、this.boolVolumn) player.setAudioOnOff(off);this.boolVolumn = false;IniUtility.WriteIniKey(Player, boolVolumn, 0); else player.setAudioOnOff(on);this.boolVolumn = true;IniUtility.WriteIniKey(Player, boolVolumn, 1); initialBtn(); privatevoidmyTBVolumn_Scroll(objectsender, EventArgse) IniUtility.FilePa

56、th = Application.StartupPath + INI.ini;intvalue = this.myTBVolumn.Value;player.SetVolume(value);IniUtility.WriteIniKey(Player, Volume, value.ToString(); 5.5进度控制模块进度控制用来显示歌曲的播放进度,也可以通过鼠标拖动实现歌曲的任意播放,通过把当前播放长度和进度条同步结合起来实现。此外还能够显示歌曲的播放时长,这是通过Timer组件的Tick事件实现。其主要代码如下:privatevoidmyTBPlayProcess_MouseDown(

57、objectsender, MouseEventArgse) player.setPlayPosition(this.myTBPlayProcess.Value);this.lblTime.LblCurSecond = this.myTBPlayProcess.Value; privatevoidchangeCurSecond(intvalue) this.myTBPlayProcess.Value = value;this.showLrc.curPlayTimeSecond = value; 5.6滚动字幕模块有很多音乐播放器都可以实现一边听音乐一边看歌词的功能,这样做可以帮助用户更好地欣赏

58、音乐,同时还可以强化对歌词的记忆进而到达背诵,为听者以后独唱歌曲做铺垫。此外还可以对歌词字体进展设置,从而到达视觉和听觉的双重享受。其核心代码如下:publicpartialclassShowLrc : Form /歌词文件名就是ListBo*中项的名称publicShowLrc() Initializeponent(); privateFontfont = newFont(华文行楷, 25.0f, FontStyle.Bold);publicintcurPlayTimeSecond = 0; /lblTime传递过来播放的秒数(用于歌词提前和延后),因为有时候获取时间不准确publicboo

59、lisPlay = false;privatevoidShowLrc_Load(objectsender, EventArgse) initialBtn(); publicvoidinitial() graphics = this.CreateGraphics();time.Interval = 100;time.Tick += newEventHandler(time_Tick);initialINI(); voidtimer_Tick(objectsender, EventArgse) clearPanel();if (string.IsNullOrEmpty(strLrcConte*t)

60、 drawString(未找到歌词); else drawString(regc(curPlayTimeSecond); publicvoidclearConte*t() curFileName = ;subgc = null;mylist.Clear(); privatevoidclearPanel() graphics.Clear(Color.Maroon); privatevoidsplit() subgc = strLrcConte*t.Split(newchar , , r, n );/subgc存儲歌詞文件中所有的时间信息和歌词/使用正则表达式判断时间格式提取出时间信息,并进展排序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论