iOS系统的在线音乐播放器手机APP设计_第1页
iOS系统的在线音乐播放器手机APP设计_第2页
iOS系统的在线音乐播放器手机APP设计_第3页
iOS系统的在线音乐播放器手机APP设计_第4页
iOS系统的在线音乐播放器手机APP设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

...wd...iOS系统的在线音乐播放器手机app设计基于iOS系统的在线音乐播放器,是为了给用户提供更好的音乐播放效果,更家方便的用户操作,享受音乐带来的乐趣。目前大多数音乐播放器都是以计算机和电子设备做为载体,在享受音乐带来乐趣的同时,占用系统内存对比大,此次设计的音乐播放器可以合理防止内存过大造成闪退的状况。基于iOS的在线音乐播放器针对iPhone设备研发。因为移动设备的便利性,使音乐播放器的方便性和易操作性得到了很大的提高。本设计对开发中遇到的问题和解决方法进展了详细的讨论,该音乐播放器集播放、暂停、停顿、快进、快退、下一曲、上一曲、音量调节等功能于一体,性能良好。第一阶段先对工程进展全面的、仔细的需求分析,并准确做出工程进度安排,明确每个阶段的任务;第二阶段是进展工程分模块编码;第三阶段对工程进展全面测试和系统集成测试。在程序的开发上,因为OC语言的不可跨平台性,所以只在OSX系统上进展编码,目前,基于iOS的在线音乐播放器的手机客户端已经完成测试,到达预期效果。关键词:音乐播放器;iOS;Objective-C目录257361前言1170541.1软件开发背景及意义1201071.2开展现状及趋势16211.3主要研究方法及过程2166982相关技术简介343912.1OC语音简介3269572.2AVaudioplayer技术35832.2.1AVaudioplayer的体系构造3101202.2.2AVaudioplayer混频原理4107222.3JDK技术5175173需求分析7266773.1功能需求7230623.1.1播放器的根本控制需求716533.1.2功能需求分析7282313.2运行及其它需求分析8223223.3可行性分析8178563.3.1经济及技术可行性878923.3.2运行及法律可行性98444软件构造及界面设计10308884.1翻开文件菜单下的详细设计13128254.1.1翻开文件设计13244244.1.2退出系统设计1323784.2播放菜单下的详细设计14312674.3显示菜单下的详细设计1441704.4帮助菜单下的详细设计15141264.5播放列表的详细设计16235904.6播放按钮的详细设计17243895.结论19前言1.1课题来源及研究背景当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场开展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三大手机操作系统,Windowsphone,Android,以及iOS操作系统,其中iOS系统有很大的开展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢,本文的音乐播放器就是基于iOS手机平台的播放器。1.2开发目的及意义现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一。随着人们的生活水平越来越高,人们对音乐的需求也越来越高,而传统的音乐播放器又限于手机内存,在音乐的分类和管理上有着很大的局限性。本设计的实现的是对音乐能够控制播放,暂停,停顿,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。添加了对网络音乐的支持,使得手机只需要联网就会瞬间拥有百万首歌曲,不必在局限于手机内存。丰富的歌曲分类功能,使得繁多网络歌曲的管理,更加的仅仅有条。这样就打破的传统播放器内存的限制,是人们能够享受到更加丰富的歌曲。本工程是一款基于iOS手机平台的音乐播放器,使iOS手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。使人们的生活更加多样化。也使设计者更加熟练iOS的技术和其它在市场上的特点。1.3课题研究内容本系统紧跟当前移动手机开发趋势,使用Objective-c语言开发一个基于iOS平台的音乐播放娱乐系统,实现基于iOS平台的音乐播放娱乐系统的根本功能。歌的切换以及列表显示,在听歌的同时能够更好娱乐1.4论文的组织与构造第一章为绪论,介绍了本文的选题背景和意义,总结国内外音乐播放器研究现状,同时对论文研究内容安排进展阐述。第二章对系统中涉及的相关理论和关键技术进展了研究,对Objective-C开发语言、iphone手机系统和MacOS相关技术进展了介绍和分析。第三章对系统进展研究,阐述了系统的功能和性能和UI界面的设计和实现。第四章在前面三章根基上研发出iPhone的音乐播放软件,同时,对系统各模块设计和实现进展分析,其中对关键技术给出了详细实现过程。最后是论文的总结。2.相关技术概述2.1系统架构及开发环境简介 开发iOS软件需要使用苹果官方发布的Xcode工具软件,Xcode软件目前已更新到第6版本,是一款相当强大的开发工具。使用Xcode我们将按图2-1来实现播放器的功能。用户根本操作用户根本操作播放暂停上一首下一首快进快退播放模式单曲循环顺序播放随机播放图2-1播放器功能图2.2音乐播放器应用控件及组件介绍开发iOS软件使用OC语言,并使用苹果公司所开发集成的Xcode软件,开发音乐播放器需使用到以下方法。SystemSoundServicesSystemSoundServices是最底层也是最简单的声音播放服务,调用AudioServicesPlaySystemSound这个方法就可以播放一些简单的音频文件,使用此方法只适合播放一些很小的提示或者警告音,因为它有很多限制:如:声音长度要小于30秒、InlinearPCM或者IMA4(IMA/ADPCM)格式的打包成.caf,.aif,或者.wav的文件、不能控制播放的进度、调用方法后立即播放声音、没有循环播放和立体声控制,另外,它还可以调用系统的震动功能,方法也很简单。具体的代码可以参考官方的例如

SysSound,但是官方的例如只有一些简单的用法,从文档中我们发现可以通过AudioServicesAddSystemSoundCompletion方法为音频播放添加CallBack函数,有了CallBack函数我们可以解决不少问题,比方可以抑制SystemSoundServices本身不支持循环播放的问题。AVAudioPlayer类AVAudioPlayer是AVFoundation.framework中定义的一个类,所以使用要先在工程中引入AVFoundation.framework。我们可以把AVAudioPlayer看作是一个高级的播放器,它支持广泛的音频格式,主要是以下这些格式:AAC、AMR(AdaptiveMulti-Rate,aformatforspeech)、ALAC(AppleLossless)、iLBC(internetLowBitrateCodec,anotherformatforspeech)、IMA4(IMA/ADPCM)、linearPCM(uncompressed)、μ-lawanda-law、MP3(MPEG-1audiolayer3

。AudioQueueServices如果以上两种音频播放的解决方案都无法满足你的需求,那么我想你肯定需要使用AudioQueueServices。使用AudioQueueServices对音频进展播放,你可以完全实现对声音的控制。例如,你可以在声音数据从文件读到内存缓冲区后对声音进展一定处理再进展播放,从而实现对音频的快速/慢速播放的功能。MPMusicPlayerController有两种播放器可以选择,一种是applicationmusicplayer,另外一种是iPodmusicplayer。第一种播放器是一种内部播放器,当程序对出后停顿播放;而第二种播放器则与iPod播放器内的信息相关,退出之后不会停顿播放。在播放之前需要设置队列。MPMoviePlayerControllerMPMoviePlayerController与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController可以直接通过远程URL初始化,而AVAudioPlayer则不可以。不过大体上用起来感觉差不多。格式支持:MOV、MP4、M4V、与3GP等格式,还支持多种音频格式2.3音乐播放器的生命周期音乐播放器行业市场供给分析及市场供给预测包括现在音乐播放器行业市场供给量估计量和预测未来音乐播放器行业市场的供给能力。音乐播放器行业市场需求分析及音乐播放器行业市场需求预测包括现在音乐播放器行业市场需求量估计和预测音乐播放器行业未来市场容量及产品竞争能力。通常采用调查分析法、统计分析法和相关分析预测法。音乐播放器行业市场需求层次和各类地区市场需求量分析即根据各市场特点、人口分布、经济收入、消费习惯、行政区划、畅销牌号、生产性消费等,确定不同地区、不同消费者及用户的需要量以及运输和销售费用。音乐播放器行业市场竞争格局包括市场主要竞争主体分析,各竞争主体在市场上的地位,以及行业采取的主要竞争手段等;估计音乐播放器行业产品生命周期及可销售时间即预测市场需要的时间,使生产及分配等活动与市场需要量作最适当的配合。通过市场分析可确定产品的未来需求量、品种及持续时间;产品销路及竞争能力;产品规格品种变化及更新;产品需求量的地区分布等。音乐播放器行业市场分析报告可为客户正确制定营销策略或投资策略提供信息支持。企业的营销策略决策或投资策略决策只有建设在扎实的市场分析的根基上,只有在对影响需求的外部因素和影响购、产、销的内部因素充分了解和掌握以后,才能减少失误,提高决策的科学性和正确性,从而将经营风险降到最低限度。2.4音乐播放器应用技术的介绍Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的尺寸增加很小,和大局部OO系统使用极大的VM执行时间会取代了整个系统的运作相反。Objective-C写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。因此,Objective-C它完全兼容标准C语言〔C++对C语言的兼容仅在于大局部语法上,而在ABI〔ApplicationBinaryInterface〕上,还需要使用extern"C"这种显式声明来与C函数进展兼容〕,而在此根基上增加了面向对象编程语言的特性以及Smalltalk消息机制。Xcode最新版本是Xcode6,整合了苹果在WWDC大会上发布的新语言Swift。3系统分析2.1可行性分析可行性分析指的是对APP需求的主要内容以及开发条件全面分析,例如市场需求分析、资源供给、建设规模大小、制造工艺路线、型号、筹措资金、盈利方式等。从各个方面〔技术、经济、规模〕统筹分析,计算出预算、客观地预估经济收益。来判定该工程是否可行。从而提出该工程是否值得投资以及意见,为工程决策提供了有力依据的一种综合性的系统分析方案。2.1.1经济可行性分析既然我们选择了做APP,我们必不可少的要关注经济可行性分析。比方我们APP的赢利点在什么地方、我们在开发过程中需要计算我们开发这个工程的资金本钱、时间本钱、是否我们后期的收益可以弥补这些前期的投入。当然我们也不能一味的去追求经济效益。经济可行性分析中的“经济〞不仅仅是普遍意义上的经济,也代表着社会经济效益。所以在开发中我不们开发者不能时时刻刻着想着人民币,更应该从更多更片面的角度去对待经济可行性分析工作。一般来讲,开发APP的本钱花销主要由以下四局部组成的:1)购置、安装软硬的费用。2)系统开发的费用。3)系统安装、运行、维护的费用。4)员工培训的费用。所以结合毕设的整个开发过程可以知道开发网络音乐播放盒所需要的全部软件平台都是免费的,所以从经济可行性上来看是完全可行的。2.1.2技术可行性分析技术可行性也是开发一款APP必不可少的工作。这个工作要求开发人员根据自身或者团队的整体技术能力来判断需求是否能满足客户需求。哪一些我们现在的能力可以完全胜任,又有哪一些我们需要调研学习之后可以做到,还有哪一些我们做不到,需要更优秀的人才来补充。这个过程中我们要做充分的考察,尤其是在遇到了我们可能无法解决的问题的时候,我们不要轻易地说放弃。我们要充分利用互联网带来的便利,我们可以去网上去搜素相关的资源。这一切的一切最终的目的就是要尽最大可能去满足客户的需求。但本毕设因为只是我一个人在做并且工程涉及的业务逻辑也并不是很复杂,所以技术可行性分析我并没有太多去考虑。2.2需求分析需求分析是指在建设一个新的APP的时候,对这个APP的目的、定义、功能这些方面所要做的工作进展统一规划。需求分析是完成一APP不可或缺的局部。开发APP的过程中,我们必须跟客户先进展一个认真的沟通并大致地了解客户的需求。然后我们根据客户的需求来做产品设计,做完之后将产品设计上交给客户,让客户来提修改意见。如此反复我们才能最终敲定好一款APP的外形。万丈高楼平地起,我们不要无视这个过程,更不能懈怠这个过程。因为如果我们在这个过程中进展的很成功,那么我们后期开发起来会非常得心应手。如果外形靓丽、小巧灵活的mini音乐播放盒却很受年轻人们的青睐。市场的开展前景不容无视。综上,设计音乐播放盒子的重点要偏向于靓丽的外观和吸引人的性能表现,小体积却能够实现相对更多的功能。新型的mini音乐播放盒也要附加功能,这样就能够更好地抓住用户的眼球。2.3系统定义针对基于iOS系统酷狗APP的需求分析,实现根本的音乐播放器功能,并允许用户访问豆瓣服务器,播放豆瓣服务器的多媒工程。2.4功能需求此次APP的设计的大致运行流程:首先,用户在苹果设备APP,立马映入眼帘的是APP的新版本介绍新特性。新特性描述了新版本音乐播放盒所具备的改动与新添加的功能。因为APP所用的资源几乎都来自Internet,因此,新特性只是完成一个功能的表达新特性是通过手势滑动UIScrollView来完成的,最后一页有进入按钮,单击这个进入按钮,可以直接进入到APP的主界面。程序的主界面分为两条路线。之所以是两条路线,后面的系统设计会有提到。一条路线为本地音乐,另一条路线为网络音乐。本地音乐—用户可以对其中的单个或者多个歌曲进展收藏、播放、暂停、删除等个性化操作。满足用户最根本的需求的同时还可以动态浏览播放歌曲的歌词。本地音乐列表的操作是可以单曲操作,也可以批量操作。还可以浏览音乐的详情〔歌手、歌词、时长、专辑〕。网络音乐通过验证登录豆瓣服务器,获取多媒体音乐文件。我们在对回传的Json格式的数据进展解析从而得到多媒体资源,APP可以访问电台,用户可以根据自己的洗好来选择自己偏爱的电台。网络音乐用例图如图2-1所示。UUser对音乐列表的操作播放歌曲暂停歌曲上一首、下一首、快进登陆豆瓣电台搜索歌曲退出图2-1网络音乐用例图3.系统设计3.1功能描述随着移动端互联网的普及,智能手机已渐渐地渐被人们承受。它也成为了移动互联网经济主体的一个重要成分,智能手机被越来越多人所承受、习惯;移动APP是基于操作系统开发。越来越多、各式各样的功能层出不穷。Android系统的开源性导致了移动客户端的质量参差不齐,但是由于iOS限制了开发者开发中必备的条件,因此,本程序只能在MAC模拟器上或者iPhone设备上使用,无法在APPLEAPPStore上下载。首先,用户在苹果设备APP,立马映入眼帘的是APP的新版本介绍新特性。新特性描述了新版本音乐播放盒所具备的改动与新添加的功能。因为APP所用的资源几乎都来自Internet,因此,新特性只是完成一个功能的表达,并不是真正意义上的新特性描述次版本的新功能,在APP的使用过程中,请不要将新特性描述放到关注重心上。新特性是通过手势滑动UIScrollView来完成的,最后一页有进入按钮,单击这个进入按钮,可以直接进入到APP的主界面。APP主页有两个选项卡。之所以是两条路线,后面的系统设计会有提到。其中一个选项卡为本地音乐,另一个选项卡为网络音乐。其中本地音乐是通过文件归档到SandBox〔本地保存Plist文件〕对音乐的保存。而网络音乐是利用主界面上的登陆按钮验证连接豆瓣的服务器,来访问外网服务器资源。本地音乐—用户可以对其中的单个或者多个歌曲进展收藏、播放、暂停、删除等个性化操作。满足用户最根本的需求的同时还可以动态浏览播放歌曲的歌词。本地音乐列表的操作是可以单曲操作,也可以批量操作。还可以浏览音乐的详情〔歌手、歌词、时长、专辑〕。网络音乐通过验证登录豆瓣服务器,获取多媒体音乐文件。进入网络音乐页面,我们看到了两个选项卡,一个是“歌手〞选项卡,一个是“电台〞选项卡,歌手选项卡是通过搜索歌手的姓名来搜索音乐的,同是提供下载、播放、浏览。默认歌手是刘德华。电台资源向豆瓣服务器发送GET请求,然后服务器传递回来数据。我们在对回传的json格式的数据进展解析从而得到多媒体资源。服务器上已经将同类别频道的音乐归并到一起了,这使得APP可以访问电台,用户可以根据自己的洗好来选择自己偏爱的电台。3.2系统功能模块化设计3.2.1新特性模块显示的条件:首次进入APP||判断info.Plist中的version如果与上一版本不符。此功能主要是让用户更好、更快地了解APP包含的新功能、已经修复的内容。此功能适用以营利为目的的商业客户需求,为追求更好的用户体验而制作的。因为资源有限,所以本模块功能根本来源于网络,不能用于与商业。3.2.2本地列表模块本地列表模块主要包含以下几个功能:修改功能:单击界面上的“pen〞图标,可对列表中的歌曲进展修。列表的修改可以是单个歌曲,同样也可以多个歌曲。其中修改操作包括模式修改〔模式修改指的是,用户在播放音乐的时候选择的播放顺序:随机、顺序、循环、单曲4个模式〕、全选、加载〔加载存储在本地资源包中的Plist文件,因为本APP采取DE是以Plist的方式存储,因此无法修改。又由于iOS的封闭性,导致了无法浏览本地音乐。所以此功能算是一个对比限制用户体验的功能;删除〔此功能可以与全选功能配合,也可以对单个歌曲进展操作。〕。音乐播放功能:本APP的名字就是音乐播放器,那么自然音乐播放成为了它的核心内容。此功能利用了OC语言分装的AVAudioPlayer类实现播放功能歌词浏览功能:此功能可以浏览存储在本地SandBox的歌词文件,因为局部的歌词文件兼容很差,所以有时会显示乱码,但根本不影响用户的正常使用。单一歌曲操作功能:对选择的歌曲个性化地放到我喜欢数组中〔平时可以单独地播放我喜欢列表,这样可以完善了更好的用户体验〕。3.3系统总体构造图根据需求调研结果确定APP主要包括以下几个功能模块。系统功能构造图如图3-1所示。图3-1系统功能构造图3.3数据库设计3.3.1数据库设计概述从1980至今,数据库技术在商业领域的巨大刺激下以及客户对数据库技术需求的迅速增长,致使数据库技术得到了飞速的开展。尤其表现在:数据库和各平台的相互嵌入。众所周知,SQLite是基于嵌入式的方式开发的,所以SQLite或者其他的数据库都可以和各种平台合理的嵌入,这就使得数据库领域有各式各样的变化与组合,这里我们有两种方式来设计数据库:一:以信息需求为主,处理需求为辅。这种方法称为面向数据的数据库设计方法;二:以处理需求为主,信息需求为辅。这种方法称为面向过程的数据库设计方法。数据库设计的特点如下:1.反复性(Iterative)。2.试探性(Tentative)。3.分步进展。数据库设计的过程6各阶段:需求分析、概念构造设计、逻辑构造设计、数据库物理设计、数据库实施、数据库运行和维护在设计的过程中我们应该包含两方面的内容:〔1〕数据构造设计:也就是设计数据库框架和数据库构造,数据库模式是各应用程序共享的构造,是稳定的、永久的构造,所以一个数据库的合理设计可以让我们后期的开发奠定一个良好的开场与根基。〔2〕行为〔处理〕设计:即设计应用程序、事务处理等构造特性不能与行为特性别离。静态的构造特性的设计与动态的行为特性的设计别离,会导致数据与程序不易结合,增加数据库设计的复杂性。3.3.2E-R图简述我理解中的ER图:将功能模型与数据模型的关系以图形的方式展示给开发人员。这样便于我们理解内容联系。更直观、更容易理解。实体型:用矩形表示,矩形框内写明实体名;属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;联系:用菱形表示,菱形框内写明联系名。3.3.3系统数据库设计针对播放盒APP的特点,数据库设计各个局部的数据项与数据构造如下所示。本地音乐模型图如图3-2所示。豆瓣登陆E-R图如图3-3所示。图3-2本地音乐豆瓣登陆Alta豆瓣登陆AltavatarcreateddescIs_bannedIs_suicideIoc_idloginnametypesignatureuid其主要的表构造如下。我的音乐表如表3-1所示,豆瓣服务器表如表3-2所示。表3-1我的音乐表字段名说明类型长度可否为空主键Name歌曲名称String50否主键Singer歌手名称String10是Time歌曲时长String4否Index索引String8否Geci歌词文件String50是Playurl播放地址String1000否表3-2豆瓣服务器字段名说明类型长度可否为空主键Alt网址String300否主键avatar头像String300是created创立时间String10否desc描述String100否Is_banned字段Boolean1是Is_suicide字段Boolean1否Large_avatar大图String10否Loc_idIDString10否login登陆Boolean1否signature字段String10否type类型String10否uidIDString1000否4.系统实现4.1UI实现播放器播放界面功能实现播放功能的具体代码如下:-(void)startMusic{openOrClose++;if(openOrClose%2==1){[startButtonsetBackgroundImage:[UIImageimageNamed:@"play_bar_passed.png"]forState:UIControlStateNormal];[smallProgressViewprogressViewBegin];currentMusicName.text=[musicArrayobjectAtIndex:curMusicNumber];NSURL*audioFileUrl=[NSURLfileURLWithPath:[[NSBundlemainBundle]pathForResource:[musicArrayobjectAtIndex:curMusicNumber]ofType:@"mp3"]];audioPlay=[[AVAudioPlayeralloc]initWithContentsOfURL:audioFileUrlerror:nil];audioPlay.delegate=self;[audioPlayplay];[smallProgressViewtheTotalTimeOfMusic:audioPlay.duration];inti=(int)audioPlay.duration/60;intj=(int)audioPlay.duration%60;totalTime.text=[NSStringstringWithFormat:@"%02d:%02d",i,j];[lastArrayaddObject:[musicArrayobjectAtIndex:curMusicNumber]];}else{[startButtonsetBackgroundImage:[UIImageimageNamed:@"playarticle_play.png"]forState:UIControlStateNormal];[smallProgressViewprogressViewStop];}}播放功能的实现是通过AVAudioPlayer类库来实现的,其中audioFileUrl是要播放音乐的本地路径。在播放的过程中通过自己封装的进度条类来判断歌曲播放的时间。4.2功能实现播放进度的跟踪显示在播放音乐的时侯,我们希望可以看到播放的进度,通过拉动进度条来方便快捷的实现对歌曲的快进,快退的功能。通过创立一个计时器,利用计时器来实时更新进度条。而进度条的进度显示是用UISlider控件控件。其value的值为0到1,利用正在播放的时间与一共的时长之比来控制UISlider的值,到达进度条的跟着显示。UISlider具有一个change事件,可以改变value的值来设置当前播放的一个进度,来到达一个快进,快退的功能具体代码如下:-(id)init{if(self==[superinit]){self.curTime=[[UILabelalloc]init];self.curTime.backgroundColor=[UIColorclearColor];self.curTime.font=[UIFontsystemFontOfSize:12];self.curTime.textColor=[UIColorwhiteColor];}returnself;}-(double)theTotalTimeOfMusic:(double)totalTime{allTime=totalTime;returnallTime;}-(double)theTimeOfMusicRun{returntheTimeHaveRun;}-(void)progressViewBegin{theTimeHaveRun=0.0;if(theTimeHaveRun<=allTime){time=[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(changeProgressView)userInfo:nilrepeats:YES];}}-(void)progressViewStop{[timeinvalidate];}-(void)progressViewGoOnRunning-(void)changeProgressView{theTimeHaveRun+=1.0;if(theTimeHaveRun>allTime){[timeinvalidate];}else{[selfsetProgress:theTimeHaveRun/allTime];}inti=(int)theTimeHaveRun/60;intj=(int)theTimeHaveRun%60;curTime.text=[NSStringstringWithFormat:@"%02d:%02d",i,j];}其中init方法是自动生本钱身的元素,在此类中包含了进度条开场的方法,进度条暂停的方法,进度条改变的方法,以及向其他的类传输数据的方法,例如传输播放了多长的时间等等。歌词的同步显示有了以上功能,对歌词的显示以上一个必不可少的功能。即是以“时间+歌词〞的格式存储。那么歌词的显示形式主要是通过播放的时间与歌词显示的时间相比照,如果一致则显示。因此,通过将歌词和时间分别用两个数组装入,当正在播放的时间与数组中某个时间相对应的时侯,显示出当前的歌词。界面上的显示方式主要是通过UILable来显示的。有的人不喜欢一句一句的看歌词,想看更多的歌词,那么就参加了全屏歌词的显示。全屏显示的歌词采用的是将所有的歌词装入可变字符串,并对每一句添加分隔符,装入UItextView中,通过正在播放时间与歌词的时间比照,来调整UItextView内容的高度。而textview具有着滑动的动画效果,使得整个歌词上移的效果更加平滑代码如下-(id)init{if(self==[superinit]){musicLicArray=[[NSMutableArrayalloc]initWithCapacity:0];totalLicArray=[[NSMutableArrayalloc]initWithCapacity:0];getAllOfMusicLrc=[[NSMutableArrayalloc]initWithCapacity:0];lineOfMusicLrc=0;}returnself;}-(void)getTheMusicLicStr:(NSString*)str{musicLicArray=[NSMutableArrayarrayWithArray:[strcomponentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"[\n"]]];[musicLicArrayremoveObject:@""];for(NSString*stringinmusicLicArray){NSMutableArray*son=[[NSMutableArrayalloc]initWithCapacity:0];NSArray*arr=[stringcomponentsSeparatedByString:@"]"];NSArray*num=[[arrobjectAtIndex:0]componentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@":."]];CGFloatnu=[[numobjectAtIndex:0]integerValue]*6000+[[numobjectAtIndex:1]integerValue]*60+[[numobjectAtIndex:2]integerValue];NSString*number=[NSStringstringWithFormat:@"%.0f",nu];//[sonsetObject:[arrobjectAtIndex:1]forKey:number];[sonaddObject:number];[sonaddObject:[arrobjectAtIndex:1]];[totalLicArrayaddObject:son];}for(inti=0;i<[totalLicArraycount];i++){[getAllOfMusicLrcaddObject:[[totalLicArrayobjectAtIndex:i]objectAtIndex:1]];}}-(NSString*)getTheTimeOfMusic:(double)time{doubledoi=time*100;for(inti=0;i<[totalLicArraycount];i++){if(doi>=[[[totalLicArrayobjectAtIndex:i]objectAtIndex:0]doubleValue]&&doi<[[[totalLicArrayobjectAtIndex:i+1]objectAtIndex:0]doubleValue]){lineOfMusicLrc=i;return[[totalLicArrayobjectAtIndex:i]objectAtIndex:1];}}returnnil;}-(NSMutableArray*)getTheTotilOfMusicLrc{returngetAllOfMusicLrc;}-(NSInteger)getTheNmuberOfMusicLrc{returnlineOfMusicLrc;}本段代码的运行过程是,在歌曲开场进展播放后,将播放的歌曲名传给此类,此类从自己相应的地方得到全部的歌词。歌词是以lrc格式存储起来的,歌词类得到全部歌词后,根据自己的相应方法,将全部的歌词分成一句句的显示在相应的UITableView上。其中将全部歌词变成一句句的方法是getTheMusicLicStr。此方法根据得到的歌词格式进展分割字符串,并将每一句以字符串的形式存储到totalLicArray数组中。播放列表功能重要代码如下:-(void)downLoadFromUrl:(NSURL*)url{myData=[[NSMutableDataalloc]init];NSURLRequest*request=[NSURLRequestrequestWithURL:url];myConnection=[[NSURLConnectionalloc]initWithRequest:requestdelegate:self];}-(void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data{[myDataappendData:data];}-(void)connection:(NSURLConnection*)connectiondidReceiveResponse:(NSURLResponse*)response{[myDatasetLength:0];}-(void)connectionDidFinishLoading:(NSURLConnection*)connection{if([delegaterespondsToSelector:@selector(downLoadComplited:)]){[delegatedownLoadComplited:self];}}播放列表主要采用了表示图:UITableView来进展显示。这样可以更加直观,更加方便的显示数据。可以通过设置它的代理UITableViewDelegate。实现的主要形式是:设置tableView的组件为1个:numberOfSectionsInTableView:,设置行数:numberofRowsInSection:,设置每行的内容:cellForRowAtIndexPath。当点击的时侯会出发didselect事件,实现歌曲的播放。搜索功能网络歌曲的搜索对于快速查找到自己想找的歌曲是十分有必要的。这里选择的歌曲搜索库是来至于网络的。比方我们选择一首叫滴答的歌曲。只需要使用ASIRequest来请求接口:://mp3.sogou/music.so?query=%B5%CE%B4%F0&class=1&st=&ac=1&pf=&_asf=mp3.sogou&_ast=1338472690&p=&w=&w=02009900&sut=3384&sst0=滴答。这就是搜狗的一个搜索页面,通过它来获取需要的歌曲信息。对于获取到的字符串信息,可以通过UItableview来显示。4.3存储操作实现实体联系模型主要是由实体、属性以及实体之间的联系组成[12]。通过对现实世界的概念模型的抽象,确立实体为歌曲、歌词、用户。根据音乐播放器的功能需求的分析结果,得出数据库的E-R图5-5如下所示:根据数据字典中的数据存储、数据流、处理逻辑、实体的属性及以上数据库设计中的概念构造设计模型,建设相关表进而得到数据库的逻辑构造设计,即数据库表。完毕语在经过为期两个月的毕业设计后,基于iOS的音乐播放器的功能得以实现。在开发之初就应该想好总体框架构造以及假设何进展每一步的操作。开发者需要有清晰地逻辑思路并以科学的方法来开发应用。本设计的题目为“基于iOS的音乐播放器的设计与实现〞。音乐播放器设计的主要内容是进展音乐的播放、下载等功能模块的实现上。因此为能够很好的实现系统设计目标,突出音乐播放器所需实现功能,在开发过程中,由于自己开场没有思考全面导致后来开发程序的过程中出现了一些偏差,以至于使自己引入了许多的变量来标志这些数组、UItableView。本人开发的这款音乐播放器的特点是几乎所有的操作都在一个视图控制器中进展,而UItableView的显示、选择也只能都在这一个视图中进展。使每一个产生的UItableView都只能运行这个控制器中的唯一的显示、选择方法。在开发到最后发现自己在这控制器中增加变量的方法,很是繁琐,懊悔开场时为何不将UItalbeView单独写成一个类,在类中添加他自己的标志变量。这程序中所有的UItableView,他们具有不同的关系。他们之间的关系,在运行程序的过程中与哪个引导出了哪个,以便程序可以按照原路返回。由于自己开发经历缺乏知识有限,在开发过程中出现了许多冗余代码。在设计中同样遇到很多之前调试系统所没有遇到过的异常、错误信息。通过这次设计本人得到的启示是在开发过程中要有清晰地设计思路,尽量简化设计。同时通过这次的设计使自己更好地了解到在知识方面的缺乏,明确今后需要努力的方向。中国地质大学长城学院本科毕业论文外文资料翻译系别:管理科学与工程系专业:信息管理与信息系统姓名:学号:2016年3月7日外文资料翻译译文一种新的网络应用程序开发框架——MVC摘要:MVC(Model/View/Controller)的设计模式出现在在Smalltalk-80,并在软件的设计中广泛应用。本文介绍一种基于MVC框架的的新网络应用程序。这种框架把实施逻辑与表现形式独立开来。它也提高了系统的可维护性,可扩展性以及使用模块数据库备案、模板数据库,通讯对象和缓冲队列的性能。关键词:MVC、设计模式、网络应用程序1.简介网络应用系统是一个基于B(rowser)/S(erver)模型应用系统。它利用多种动态网页开发技术。目前,软件设计的主题之一是网络应用开发模式和工具的。它们直接影响系统的几个关键因素,比方可维护性、可扩展性、稳定性和安全性。本文中,基于MVC[1]的网络应用程序的设计模式是为解决这两类因素——扩展性和可维护性这些不易处理的问题。把MVC设计模式引入网络应用程序开发,执行逻辑可以独立于系统的表现形式。MVC由三种对象组成。1)模型:是应用对象,2)视图:是它的屏幕的显示,3)控制器:定义用户界面并对输入的信息做出响应。在出现MVC之前,用户界面的设计倾向于把这些东西做在一起。然而,MVC独立了它们,增加系统的灵活性和可重用性。MVC把视图和模型独立开来,在它们之间建设了“subscribe/notify〞协议。一个视图必须确保其正确反映模型的状态。每当模型的数据发生改变,视图会得到相应的通知。作为回应,每个视图都会有更新自身的时机。这个方法可以让你附上一个模型的多个视图以便提供不同的报告。你也可以不改变原模型同时创立新的视图。2.背景和存在的问题虽然MVC的设计模式已经在smalltalk-80中提出了,并广泛应用于软件设计,介绍它到网页应用程序开发却仍很困难的。主要由于以下两个因素:1)首先,很难独立来自OC的编程语言。早期的CGI程序使用字符串输出创造了HTML内容。默认的,将HTML文本分成几份,然后把他们嵌入到CGI程序中。脚本语言出现后,变成了脚本语言编写的程序嵌入到HTML文本中。然而,这两种方法有一个共同的缺乏,使他们不能完全独立于HTML文本。因此,这两种方法使采用MVC别离三层模式十分难以实现。2)第二,脚本语言的功能太弱。他们缺乏一些必要的技术支持来采用MVC的设计模式,如消息机制和事件回应机制。直到Model2版,这种情况并没有受到任何改善。依靠强大的OC语言功能,Model2[4]某种程度上实行MVC设计理念。图1显示了MVC的机制:•模型(数据层):它是封装到企业JavaBean。•视图(表示层):view负责的网页方式,如报告的格式,分页等。•控制器(控制层):Servlet受到网页上的用户的输入并执行有关的操作(呼叫相应的EJB组件),给出了相关视图,所以会呈现这些结果。Model2机制主要满足了开发商对要求Web应用逻辑和用户界面独立的需求。但制仍然存在某些限,例如,尽管Model2已经实施采用MVC设计模式的根本理念,三个层次之间的相互关系(Servlet,JavaBean/EJB)仍然封闭。特别是,就Servlet当控制器,不仅控制选择同时响应模型的模块,还负责对处理JSP转移数据提供模块。因为这一过程,Servlet本身已实现非常复杂的执行逻辑,对于体系的开展和维护这是正是一个棘手的问题。因此,在下面的网络应用系统框架,我们会进一步划分出功能的控制器。3.解决方案图2中显示,这一系统框架包含三个内核控制对象/类(UIViewController,ModelCenter,andLPM(LogicalPageModule)Center)和它们的核心数据库(systemdescriptiondataba

温馨提示

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

评论

0/150

提交评论