基于安卓系统的一款音乐APP设计与实现_第1页
基于安卓系统的一款音乐APP设计与实现_第2页
基于安卓系统的一款音乐APP设计与实现_第3页
基于安卓系统的一款音乐APP设计与实现_第4页
基于安卓系统的一款音乐APP设计与实现_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

摘要近年来,在移动设备市场中,手机逐渐成为了用户的第一选择。随着移动应用技术和互联网技术的深入发展,人们对手机应用的功能和性能也就有了更加高的要求,一些音乐App已经不能满足人们对个性化、简洁化的需求。现有的音乐App界面繁杂、功能单一,只具有听歌曲等纯粹的视听功能,缺乏更加有乐趣的其它功能。因此,设计一个界面简单快捷,功能丰富的可以给用户带来更多选择的音乐App显得很有市场需求。关键字:智能手机Android平台音乐AppAbstractInrecentyears,mobilephoneshavegraduallybecomethefirstchoiceofusersinthemobiledevicemarket.Withthein-depthdevelopmentofmobileapplicationtechnologyandInternettechnology,peoplehavehigherrequirementsforthefunctionandperformanceofmobileapplications.Somemusicappshavebeenunabletomeetpeople'spersonalizedandconciseneeds.Theexistingmusicapphascomplexinterfaceandsinglefunction.Itonlyhaspureaudio-visualfunctionssuchaslisteningtosongs,andlacksotherfunctionsthataremorefun.Therefore,thedesignofasimpleandfastinterface,richfunctionscanbringusersmorechoicesofmusicappisverymarketdemand.Keywords:IntelligentmobilephoneAndroidplatformMusicApp目录TOC\o"1-3"\h\u第1章绪论 绪论1.1课题背景与意义进入21世纪以来,中国互联网技术的发展在生活的各个方面都在加速,到处都可以看到互联网的影子。近年来,手机越来越多的进入了人们的生活,因为手机功能多且体积小,使用很便捷,所以使用手机的民众数量快速增加。另外,Android是开源的,而且Android平台上的大多数应用程序都是免费的,所以很多手机制造商都使用Android系统,这在手机市场上有很大的优势。根据现有的调查数据,iOS目前仅占13%的市场占有率,而Android的市场占有率为87%。另外,Android手机比iphone价格更低,性价比更高,所以Android更有吸引力。随着世界的发展进步和人们各种各样的压力的增加,人们的物质世界逐渐丰富,但精神世界却逐渐贫乏。因此,人们通过手机上的音视频应用来丰富自己的精神生活。研究表明,听音乐可以使人放松,缓解压力。此外,如今人们的生活压力很大,尤其是那些生活在一线城市的人。因此,音乐App在智能手机上的出现是不可避免的。android市场充斥着各种各样的音乐App。在现有的音乐App中,有些功能过于简单,不能满足用户的需要;有些功能强大,但界面繁杂;在一些网络欠好的情况下用户体验差。因此,随着用户需求的不断增加,目前的音乐App已经无法满足用户多样化的需求。基于安卓平台的应用非常灵活,减少了开发量,收缩了开发期。对于用户来说,可以最大程度地定义自己的手机。此外,安卓手机本身具有资源有限的特点,基于上述问题,结合用户需求,设计并实现了一款功能全面、界面简洁美观的音乐App就显得很有意义。1.2研究现状自2009年以来,手机已经逐渐走入人们的生活,随着手机的功能越来越强大,它们已经逐渐取代了以前单独的歌曲播放器,使用手机听音乐已成为用户听音乐的重要手段之一。许多企业和个人已经看到了音乐媒体潜在的发展趋势,从传统的个人电脑到智能手机和平板电脑等便携式设备上,许多功能强大的音乐App都得到了开发和研究。目前,国内市场较盛行的音乐App包括酷狗音乐、QQ音乐、网易云音乐和百度音乐等,其中酷狗音乐和QQ音乐在国内市场比较盛行。除了上述知名音乐App外,还有一些音乐App支持更多功能,但市场占有率相对较小,例如,虾米音乐、咪咕音乐等。音乐App已经成为许多公司的竞争项目,由此可见,音乐App市场存在一定的挑战和竞争,也将带来业务发展的机遇。随着移动互联网的快速发展和音乐媒体资源的日益丰富,一些音乐App已经无法满足人们多样化的音乐需求,而Android平台有着良好的发展基础,这将使手机音乐App不断发展。因此,手机音乐App的开发具有广阔的市场前景。1.3论文研究的主要内容本课题针对国内已有的基于安卓系统的音乐App进行了研究和分析,本文所设计的音乐播放器在内容方面更加丰富,通过对用户的需求进行了解,对其他公司开发的音乐App进行了功能上的分析,大致了解开发所需要用到的技术,以及结合一些当下流行的开发模式进行初步的模式选择,从而实现大概的模块上的分析和模块上的设计,划分我们所需要的功能模块,从而完成音乐App系统的总体设计和各模块的详细设计。本论文研究的主要内容:(1)分析音乐App的现状以及研究的意义,确定了研究的目的。(2)研究Java模式开发、Litepal数据库等相关技术。(3)详细分析了音乐App的功能,并进行了具体的需求分析。(4)研究了音乐App的总体设计方案、相关架构和基于API结构的设计方法。(5)对完成的音乐App进行测试。在测试中发现其中的问题,不断的解决问题,完善App。 相关开发环境和技术的简介2.1开发环境的介绍本音乐App的开发环境包括以下的内容: 使用的开发工具有androidstudio,AndroidSDK,数据库的操作工具是Navicat 使用到的相关开发技术是java与Kotlin; 电脑系统配置为Windows10操作系统,内存使用8G的内存,硬盘400G,CPU2.6GHz。2.2相关技术的介绍在本App的设计和实现过程中,需要采用多种技术与服务的配合来完成,现在我将会对所采用的的技术与服务做一个详细的介绍。2.2.1JavaJava是一种比较广泛使用计算机的编程语言,具有面向对象、跨平台和通用编程等诸多功能。它广泛用于企业Web应用程序开发和移动应用程序开发。本次音乐App的设计与实现主要是使用Java与Kotlin两种语言混合开发。在90年代初,将网络计算的功能扩展到日常生活中是一个激进的愿景。1991年,Sun的一小群名为“GreenTeam”的工程师认为,相信下一个高潮是数字消费设备和计算机的结合。在JamesGosling的带领下,该团队昼夜不停地工作,最终创建了彻底改变我们世界的编程语言——Java。Java编程语言的样式非常类似于C++语言。继承了C++语言的面向对象技术的核心,放弃了容易出错的指针,并用引用替换了它们,删除了C++中的运算符重载和多重继承功能,并将其替换为接口;JavaSE1.5引入了通用编程,类型安全的枚举,不确定长度的参数以及自动打包/拆箱功能。太阳计算机系统有限公司对Java语言的解释是:“Java编程语言是一种简单的、面向对象的、分布式的、解释性的、健壮的、安全的、与系统无关的、可移植的、高性能的、多线程的和动态的语言。”JDK11发布于2018年9月25日,其是一个长期支持版本,其带来了许多新的特性,如LocalVar、HttpClient、ListAPI等。2.2.2KotlinKotlin语言是由捷克著名的软件开发公司JetBrains公司开发的,是一种用于现代多平台应用的计算机静态编程语言。Kotlin可以被编译成Java字节码或JavaScript,这便于在没有JVM的设备上运行。Kotlin有许多优点,是一种兼容Java的语言,它比Java更安全,可以静态检测常见的陷阱,例如引用空指针,此外,它比Java简单,受到大多数程序开发人员的喜爱。自2017年以来,Kotlin已经正式成为官方的安卓支持开发语言。2.2.3ServiceService(服务)是一个应用程序组件,它可以在后端执行长期运行的操作,而无需用户界面。服务可以由其他应用程序组件(如Activity)启动,一旦启动,服务将一直在后台运行,即使启动服务的组件(Activity)已被销毁也不会有影响。此外,组件可以绑定到要与之交互的服务,甚至可以执行进程间通信(IPC)。例如,服务可以处理网络事务、播放音乐、执行文件I/O或与内容提供程序交互,所有这些都可以在后台完成。2.2.4MVC开发模式随着当前的系统越来越大,每个方面的功能也越来越复杂。为了使系统的开发更加简单,有必要采用MVC开发模式来规划系统的各个模块。MVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序开发的设计模式:M:Model模型层,系统开发基本的业务数据以及业务逻辑都属于模型层。V:View视图层,为用户展示数据用的。C:Controller控制器,通常会使用SERVLET来完成控制层的工作。MVC分层的思想有利于管理复杂的应用程序,使每个层次的代码分明,并使每个层次分工明确。2.3本章小结本章主要对我们音乐App的设计与开发中所使用到的技术进行基本的介绍。为我们音乐App进一步的开发进行技术上的说明,对系统建设过程中所需的理论基础进行详细的研究与分析,为我们以后音乐App的实现提供技术上的支持。需求分析3.1编写目的音乐App需求分析主要是为了提出系统应该具备的功能模块和我们预期需要完成的目标。需求分析是通过了解用户的需求来确定系统的功能性需求和非功能性需求。功能性需求是解释音乐系统的具体功能和功能完成后要达到的目的。非功能性需求是指除了业务需求之外,管理系统还为用户提供的一些特性,这些特性当然是功能性需求之外的一些需求,其中包括相关标准、系统要求的质量特性,包括一些性能需求、安全需求、可维护性需求等需求。系统相关需求分析是系统开发的重要环节,是系统设计和开发的基础,它是以后进行系统测试的重要依据和基础,因此编写需求分析的目的是成为以后的维护说明文档。3.2总体需求在智能手机时代,各种各样的软件应用影响着用户的视觉效果,特别是基于Android系统的移动设备呈指数级增长,因为Android系统的音乐播放器功能单一,界面单调,因此,设计一款基于Android手机且拥有丰富的音乐库和多种界面的音乐App,无疑可以满足许多音乐爱好者的需求。3.3功能性需求根据相关调研得出手机音乐软件的具体需求,具体情况如下:3.3.1功能性需求(1)进入退出功能需求用户可以顺利的进入或退出App。(2)播放暂停功能的需求用户可以播放任意一首歌曲与暂停任意一首歌曲。(3)下一首上一首的功能需求用户可以随时切换上一首或下一首。(4)音质的功能需求用户可以选择多种音质。(5)收藏的功能需求用户可以收藏自己喜欢的歌曲。(6)下载的功能需求用户可以下载歌曲。(7)播放模式的功能需求用户可以选择歌单循环、单曲循环和随机播放。(8)添加到歌单的功能需求用户可以添加歌曲到自己建立的歌单。(9)歌词及其搜索设置的功能需求用户可以搜索歌曲的歌词。3.4非功能性需求非功能性需求将决定用户对软件使用的体验或者软件的品质等相关问题。以下列举几个较为重要的非功能性需求3.4.1界面美观需求这个需求主要描述对系统外观的一种期望,这个需求需要系统达到一个符合规定的外观。音乐App应该具有界面简洁、端庄、简约、精美等特点,给人一种专业气息的体验。包括按钮、展示界面等都需要符合音乐软件的氛围。可以参考其他音乐App中的设计风格进行设计。3.4.2易操作性需求易操作性会使系统使用起来更加的简易,对于用户使用本App时可以实现“一看就会”的使用情况。让用户可以很快的操作App,而不是需要花很多的时间和经历来熟悉App的操作。3.4.3界面交互需求用户是否喜欢某产品的衡量标准之一就是是否有简捷且友好的交互界面,同时要保证界面简洁。3.5可行性分析3.5.1技术可行性分析音乐App是基于安卓系统的一款音乐播放App,主要是用java技术与Kotlin技术进行开发,对技术要求还是比较高,因此需要开发人员有相对熟练的安卓开发经验以及想对熟悉的数据操作经验,要用到了Service、Fragment等技术,现针对主要技术进行技术可行性分析。本音乐App数据库采用安卓第三方小型数据库litepal,litepal是一款开源的数据库,具有空间轻便、开发简易与操作方便的特点,非常适合本次音乐App的开发。本次音乐App的后台音乐数据均来自于API(应用程序编程接口),API是一些预定义的功能,或指软件系统的不同组件的衔接协议。其目的是为应用程序和开发人员提供访问一组基于特定软件或硬件的例程的能力,而无需了解内部工作机制的细节或访问源代码,API还具有共享、标准、去集中化、开放性和模块化等优点,非常适用于本次音乐App的开发与建设。3.5.2经济可行性分析音乐App的开发是由开发者自己开发,不需要购买其他软件或者端口之类的,而且在本次音乐App的开发之前所做的市场调研及对其他的音乐App比较,发现音乐App的市场潜力巨大,不存在开发出来没有消费者使用的可能,所有开发成功后的经济收入都是没有任何疑问的,本次音乐App开发是通过开发者自己的努力和勤奋,大部分的工作都是根据自己的思考,面对短时间内自身没有办法去搞定的情况时,向导师请教或者上网浏览资料进行独立研究,所以对于音乐App系统的开发在经济上是完全可行的,没有任何额外的费用支出。使用的Java技术与Kotlin技术是比较成熟且普遍的技术,因此音乐App项目在经济上是可行的。从人力资源、硬件设备资源、服务器资源等方面考虑,音乐App系统开发资源可以说是十分充足的。3.5.3进度可行性分析制定明确的进度表,保证音乐App项目的按时完成,对于没有按时完成的任务需要减少项目的作用域,增加项目按时完成的可行性。要保证音乐App项目能够如期完成,必须要对项目每个模块进行时间控制,对没有在正常时间内完成的任务及时做出调整。在项目开工前,制定详细的项目计划,确定开发的这个项目那些决定性的关键,严格把关、留意决定性因素上的进展和流程,并实时进行调整和改变。3.6本章小结系统开发的需求分析与可行性分析尤为重要,我们需要彻底了解用户的需求和用户的问题。本章介绍了音乐App的一些基本信息,这些信息在本系统的设计中起着重要的作用,本章将为以下总体设计和详细设计提供完整的文档支持,描述系统所需的各种功能。系统的总体设计4.1系统的总体结构设计4.1.1音乐App功能结构图图4-1音乐App功能结构图4.1.2功能结构描述本音乐App大体分为我的、发现、搜索、音乐任务栏、音乐播放与更多。(1)我的模块我的模块主要设计好的功能有“我的收藏”、“下载”与“歌单”。其中,“我的收藏”里实现的功能有:用户收藏好的音乐,在我的收藏中搜索自己收藏好的音乐,对收藏好的音乐进行批量添加到歌单与批量下载,对收藏好的音乐进行按歌曲名、按歌手名与按专辑名排序,对收藏好的音乐条目进行下一首播放、添加到歌单、查看专辑与查看歌手。“下载”实现的功能有:显示用户已经下载好的音乐,在下载中搜索自己下载好的歌曲,删除用户下载的歌曲,显示正在下载歌曲的进度,对下载好的音乐条目进行下一首播放、添加到歌单、查看专辑与查看歌手。“歌单”实现的功能有:新建歌单及新建歌单命名,删除或者批量删除歌单,重命名歌单,歌单内搜索音乐,对歌单里的音乐进行批量添加到歌单与批量下载,对歌单里的音乐进行按歌曲名、按歌手名与按专辑名排序,对歌单里的音乐条目进行下一首播放、添加到歌单、查看专辑与查看歌手。(2)发现模块发现模块主要设计好的功能有歌手列表里的“热门歌手”与“按条件筛选歌手”。其中,“按条件筛选歌手”实现的功能有:按照歌手的地区、性别、组合、音乐分类与名字首字母来进行歌手的筛选,筛选后显示出相应的歌手给用户选择。“热门歌手”实现的功能有:最近热门的歌手显示,点击任意一个歌手即可进入到歌手歌曲列表,在歌曲列表中任意点击一首歌曲就可以进行播放,可以查看歌手的简介,可以对歌曲列表里的音乐进行批量添加到歌单与批量下载,对歌曲列表里的音乐条目可以进行下一首播放、添加到歌单、查看专辑、查看歌手与下载歌曲。(3)搜索模块搜索模块主要设计好的功能有“搜索歌手与歌曲”与“搜索历史”。其中,“搜索歌手与歌曲”实现的功能有:用户搜索任意一个歌手与歌曲都会将准确的歌手与歌曲显示出来,如果搜索的是歌手就显示歌手的歌曲条目,如果搜索歌曲就显示歌曲条目,点击任意一首歌都可以播放,对歌曲列表里的音乐条目可以进行下一首播放、添加到歌单、查看专辑、查看歌手与下载歌曲。“搜索历史”实现的功能有:用户每次搜索不相同的歌手与歌曲都会形成搜索历史,用户可以清空搜索历史,也可以单独删除任意一条搜索历史。(4)音乐任务栏模块音乐任务栏模块主要设计好的功能有“播放暂停”、“上一首与下一首”、“桌面歌词”与“关闭音乐App”。其中,“播放暂停”实现的功能有:用户点击播放按钮,音乐播放,点击暂停按钮,音乐暂停。“上一首与下一首”实现的功能有:用户点击上一首按钮,上一首歌曲播放,点击下一首按钮,下一首歌曲播放。“关闭音乐App”实现的功能有:用户点击关闭按钮,音乐App就被关闭,结束音乐App的所有进程。“桌面歌词”实现的功能有:在音乐播放时点击桌面歌词按钮桌面歌词才会被启动,在音乐暂停时点击桌面歌词按钮桌面歌词不会被启动,桌面歌词可以实现上一首与下一首音乐的播放、播放与暂停、锁定桌面歌词、关闭桌面歌词与设置桌面歌词的大小与歌词颜色。(5)更多模块更多模块主要设计好的功能有“关于”、“设置”与“退出”。其中,“设置”实现的功能有:用户点击设置进入设置页面,设置内包含桌面歌词请求悬浮窗权限、开启夜间模式、下载目录与清除缓存;只有用户点击桌面歌词请求悬浮窗权限才能开启悬浮窗权限,才能让桌面歌词功能成功实现;用户点击开启夜间模式,音乐App的主题颜色就会变成暗色系,适合在夜间进行浏览与使用,有利于保护用户的眼睛;下载目录里有歌曲下载成功后所在的存储路径,方便用户查找歌曲下载到了哪里;用户点击清除缓存即可清除音乐App所有的图片缓存,提高图片加载速度,减少音乐App对手机内存的占用。“关于”实现了本款音乐App的软件版本号的显示,并展示对用户的欢迎使用的感谢用语,使用户玩的开心,心情愉悦;“退出”实现了用户点击退出按钮后,音乐App就被关闭,结束音乐App的所有进程。(6)音乐播放模块音乐播放模块主要设计好的功能有“播放暂停”、“上一首与下一首”、“收藏音乐”、“选择播放模式”、“下载音乐”、“添加音乐到歌单”、“音乐进度条”、“音质选择”、“歌词”与“更多操作”。其中,“播放暂停”实现的功能有:用户点击播放按钮,音乐播放,点击暂停按钮,音乐暂停。“上一首与下一首”实现的功能有:用户点击上一首按钮,上一首歌曲播放,点击下一首按钮,下一首歌曲播放。“收藏音乐”实现的功能有:用户点击收藏按钮即可收藏音乐,再次点击收藏按钮即可取消收藏音乐。“选择播放模式”实现的功能有:用户点击播放模式按钮可以任意切换到循环播放、单曲播放与随机播放。“下载音乐”实现的功能有:用户点击下载按钮即可选择标准品质、较高品质、HQ品质与无损品质四种品质任意一种进行下载。“添加音乐到歌单”实现的功能有:用户点击添加音乐到歌单按钮即可将音乐添加到任意一个歌单,用户还可以立即新建一个歌单再将音乐加入到歌单。“音乐进度条”实现的功能有:用户播放音乐时,进度条显示音乐总时长以及音乐播放进度,用户可以随意拉动进度条,进度条拉到哪里音乐就在哪里开始播放。“音质选择”实现的功能有:用户点击播放音乐,默认音质都是标准品质,用户可以点击音质选择按钮,选择标准品质、较高品质、HQ品质与无损品质四种品质任意一种进行播放。“更多操作”实现的功能有:用户点击更多操作按钮可以对歌曲进行下一首播放、添加到歌单、查看专辑、查看歌手与下载歌曲。“歌词”实现的功能有:用户在播放页面向左滑动即可进入歌词显示模块,用户可以随意滑动歌词到任意一个位置点击歌词,然后歌曲就在用户点击歌词的地方开始播放,用户如果对系统匹配的歌词不满意可以在线搜索歌词,并将搜索到的歌词应用到歌词显示中去,用户如果对歌词字体大小与歌词颜色不满意的话,都可以进行调整。4.2系统的开发模式设计在开发模式下,该音乐App采用MVC(Model-View-Control模型-视图-控制)模式开发,MVC开发模式具有高重用性、低耦合性、快速部署性和高可维护性等优点,有利于本次音乐App的设计与实现,有利于软件的工程管理等,其实施难度一般。需要利用的知识点和技术点一般是主流开发技术,可以逐步掌握和合理利用,非常适合本次音乐App的设计。由于涉及的技术范围很广,有必要更多地利用文档和教程进行学习和实践,最终目标是获得良好的人机交互体验。4.3设备要求4.3.1硬件设备PC计算机内存4.00GB64位系统,基于X64的处理器4.3.2支持软件操作系统软件Windows10数据库软件LitePal、MySQL集成开发软件androidstudio4.4音乐App的模块划分 本次设计的音乐APP模块划分为我的模块、发现模块、搜索模块、任务栏模块、音乐播放模块与更多模块共计六个模块:图4-2音乐App模块划分4.5数据库的设计 本次音乐App的数据库开发使用了litepal,litepal是一款开源的数据库,具有空间轻便、开发简易的特点,非常适合本次音乐App的开发。本次音乐App数据库开发的数据表如下所示。4.5.1表格:music音乐表字段:表4-1音乐表列名名称数据类型字段类型默认值是否主键id数据库存储idintegerintegernull是type歌曲类型本地/网络texttextnull否mid歌曲idtexttextnull否title音乐标题texttextnull否artist歌手texttextnull否album专辑texttextnull否artistId专辑idtexttextnull否albumId专辑idtexttextnull否trackNumber专辑内歌曲个数integerintegernull否duration持续时间integerintegernull否isLove收藏integerintegernull否isOnline本地/网络integerintegernull否uri音乐路径texttextnull否lyric本地/网络音乐歌词地址texttextnull否coverUri本地/网络专辑封面路径texttextnull否coverBig网络专辑封面texttextnull否coverSmall网络small封面texttextnull否fileName文件名texttextnull否fileSize文件大小integerintegernull否year发行日期texttextnull否date更新日期integerintegernull否isCp在线歌曲是否限制播放,false可以播放integerintegernull否isDl在线歌曲是否付费歌曲,false不能下载integerintegernull否collectId收藏idtexttextnull否quality音乐品质,默认标准模式integerintegernull否hqHQ品质integerintegernull否sq较高品质integerintegernull否high无损品质integerintegernull否hasMv是否有MVintegerintegernull否4.5.2表格:playlist收藏及歌单表字段:表4-2收藏及本地歌单表列名名称数据类型字段类型默认值是否主键id数据库存储idintegerintegernull是pid歌单idtexttextnull否name歌单名texttextnull否total歌曲数量integerintegernull否updateDate更新日期integerintegernull否updateFrequency更新频率texttextnull否date创建日期integerintegernull否des描述texttextnull否order排列顺序texttextnull否coverUrl封面texttextnull否type类型,本地歌单,播放历史,我的收藏texttextnull否playCount播放次数integerintegernull否4.5.3表格:tasksmanagermodel音乐下载表字段:表4-3音乐下载表列名名称数据类型字段类型默认值是否主键id数据库存储idintegerintegernull是mid歌曲idtexttextnull否name下载歌曲名texttextnull否url下载网址texttextnull否path下载路径texttextnull否finish下载完成integerintegernull否4.5.4表格:musictoplaylist收藏的音乐及歌单内音乐表字段:表4-4收藏的音乐及歌单内音乐表列名名称数据类型字段类型默认值是否主键id数据库存储idintegerintegernull是pid歌单idtexttextnull否mid歌曲idtexttextnull否total歌曲数量integerintegernull否updateDate更新日期integerintegernull否createDate创建日期integerintegernull否4.5.5表格:searchhistorybean搜索历史表字段:表4-5搜索历史表列名名称数据类型字段类型默认值是否主键id数据库存储idintegerintegernull是title音乐标题texttextnull否4.6业务流程与数据流程4.6.1业务流程用户点击音乐App后,首先进入欢迎等待页面,再跳转到音乐App的“我的”页面,点击收藏可以展现用户收藏的音乐,点击下载可以展现用户下载的音乐,用户还可以新建歌单;用户点击发现页面,可以进入歌手列表查看歌手;用户点击音乐后音乐开始播放同时进入音乐播放界面,用户可以进行播放暂停、上一首下一首、收藏下载以及歌词显示等操作;用户进入更多界面可以设置与退出音乐App。图4-3业务流程图4.6.2数据流程(1)音乐数据来源本次音乐App的后台音乐数据均来自于API,API实现方法如下:封装QQ音乐API,通过BaseApiImpl文件,调用js方法拼接API请求地址,然后AjaxHandler文件收到请求地址,再通过okhhtp请求,获取返回数据,然后在回到js组装返回数据。最后返回一个json字符串,在BaseApiImpl文件中回调方法中gson解析成具体对象,并将接口数据集中到MusicApi类中管理。音乐播放API接口app.native.js,使用DSbridge解决Android跨域问题,实现Android与js交互。具体接口实现在BaseApiImpl文件中。(2)音乐数据流程顶层数据流是最抽象的一层,它包含用户点击音乐与音乐App播放音乐,播放的音乐数据均来源与数据库及API,用户向音乐App获取音乐数据,向音乐App输入用户音乐信息(如音乐收藏、音乐下载与音乐歌单等),音乐App向用户显示信息数据与播放音乐数据。图4-4顶层数据流图在中间层数据流中,用户通过点击在线音乐、音乐收藏、音乐下载、本地歌单及音乐搜索历史向数据库及API获取数据;用户点击在线音乐,后台通过API获取音乐数据,音乐数据包括音乐、封面、音乐时长及歌词等数据;用户点击音乐收藏,系统后台会给收藏的音乐一个编码,将其写入数据库音乐收藏表,实现音乐收藏,本地歌单也是同等原理实现;用户点击音乐下载,系统后台通过API获取音乐下载地址并实现下载。图4-5中层数据流图在底层数据流中,数据库及API可以响应用户的数据请求,将用户需要的音乐数据读取并发送给用户,使用户可以在音乐App上播放音乐。图4-6底层数据流图4.7界面布局与音频播放设计4.7.1界面布局设计本次音乐App的UI布局大多是采用线性布局(LinearLayout)来进行设计,之所以大多是采用线性布局,是因为线性布局具有使用简单,操作方便的特点,方便设计;音乐App的布局设计的比较简洁明了,使用户一看就会操作,字体背景颜色都采用统一的色调,使其不突兀,更具有观赏性、良好的人机交互性。因为本次音乐App所需要设计实现的布局比较多,因此比较多的使用在不同的布局中共享使用同一布局文件的方法以节省设计制作时间与充分利用资源,并统一命名所需颜色的色号,方便使用。4.7.2音频播放设计本次音乐App的音频设计采用了安卓MediaPlayer类,MediaPlayer类是安卓设计中控制音视频媒体与文件播放的,在本次音乐App的设计与实现中占有举足轻重的地位;MediaPlayer类里的方法有很多,但最主要答方法有:getCurrentPosition()方法获取当前音乐播放的位置,getDuration()方法获取音乐的总时长,booleanisPlaying()方法获取音乐是否在播放,voidpause()方法暂停播放音乐,stop()方法停止播放音乐等,我将使用这些方法来实现音乐App的播放、暂停等多种功能的实现。4.8本章小结 本章主要是说明音乐App的总体设计,对系统进行总体模块进行划分,大概描述系统开发的总体内容情况,并设计好数据库后台,理清业务流程与数据流程。第5章系统的详细设计5.1项目结构5.1.1目录结构图5-1目录结构api包为接口类集合;assets包为数据库配置数据库管理;bean包为数据库访问操纵、数据库连接信息;common包为部分工具类;ui包为前端控制相关;data包为部分数据库操作、部分歌单操作;player包为歌单及Service操作相关;utils包为其他相关;assets包为数据库;res包为前端布局。5.1.2Service设计与实现Service是安卓四大组件之一,可以在后台长时间运行,即使用户切换应用仍然可以在后台继续运行,因此,Service非常适合应用于本次音乐App的开发中去。我将通过Service实现音乐播放不被打断,Service运行时播放音乐,Service被停止运行时音乐就会停止播放,选择Service服务,新建Service,命名为MusicPlayerService,继承Service类实现自定义Service:publicclassMusicPlayerServiceextendsService{}通过Service连接Ui类,在ui类中点击暂停与播放的时候调用Service里面暂停与播放的方法,在MusicPlayerService中启动Service服务,执行onStartCommand()方法:publicintonStartCommand(Intentintent,intflags,intstartId){},与使用onBind()方法绑定Service:publicIBinderonBind(Intentintent){},Service使用onCreate()方法初始化音乐播放服务:publicvoidonCreate(){

super.onCreate();

LogUtil.e(TAG,"onCreate");

//初始化音乐播放服务

initMediaPlayer();

}Service需要调用FloatLyricViewManagerMediaSessionManagerAudioAndFocusManager里的方法://对象引用

privateFloatLyricViewManagermFloatLyricViewManager;//桌面歌词管理类

privateMediaSessionManagermediaSessionManager;//MediaSession管理类

privateAudioAndFocusManageraudioAndFocusManager;//音频管理类在initConfig方法初始化:privatevoidinitConfig(){mFloatLyricViewManager=newFloatLyricViewManager(this);

//初始化和设置

mediaSessionManager=newMediaSessionManager(mBindStub,this,mMainHandler);

audioAndFocusManager=newAudioAndFocusManager(this,mHandler);}创建一个MusicPlayerHandler类,写入播放暂停等方法,实现播放音乐、暂停播放等功能publicclassMusicPlayerHandlerextendsHandler{}解除绑定Service设置监听音乐播放完成,停止Service//Service活动生命周期是在onUnbind()方法返回后结束

publicbooleanonUnbind(Intentintent){

}进行程序结束时的清理工作,应该在OnDestroy()中,否则就有可能会出现内存泄漏的危险了。

publicvoidonDestroy(){}5.2进入、启动与退出模块5.2.1进入(1)界面设计:(a)进入效果(b)我的主页效果图5-2进入主页界面(2)实现思路:点击音乐App应用,进入音乐App主界面时,设计一个欢迎页面WelcomeActivity及其布局文件activity_welcome,并实现停留两秒自动跳转进入主界面;具体实现是采用intent()方法实现跳转,采用postDelayed()方法实现停留2秒。5.2.2退出(1)界面设计:图5-3退出界面实现思路:在“更多”页面点击“退出”按钮,然后就会退出音乐App,这个功能是通过采用finish()方法结束进程来实现的。5.2.3启动(1)界面设计:图5-4启动界面(2)实现思路:当进入了主界面MainActivity后,获取FragmentManager,在活动中直接通过调用getFragmentManager()方法得到启动MainFragment,并进入MainFragment页面,在MainFragment对应布局文件frag_main中实现顶部蓝色布局,通过addFragment()方法实现“我的”与“发现”两个界面的共存。5.3音乐播放模块5.3.1音乐播放(1)界面设计:图5-5音乐播放界面(2)实现思路:当用户点击播放按钮以后,系统后台会通过onCreate()方法创建initMediaPlayer服务,就会通过后台initMediaPlayer()方法初始化音乐播放服务,播放当前歌曲,AndroidVideoCache缓存设置,边播边缓存,通过playCurrentAndNext()方法播放当前音乐,最后通过play()方法实现音乐播放。5.3.2音乐暂停播放(1)界面设计:图5-6音乐暂停界面(2)实现思路:当点击暂停按钮后,后台就会通过pause()方法来实现暂停功能的实现。5.3.3切换下一首与上一首(1)界面设计:图5-7音乐切换界面(2)实现思路:当用户点击上一首按钮时,后台会首先通过getPreviousPosition()方法来获取上一首音乐的位置,再通过使用prev()方法来实现切换上一首音乐的播放;当用户点击下一首按钮时,后台会首先通过getNextPosition()方法来获取下一首音乐的位置,再通过使用next()方法来实现切换到下一首音乐的播放。5.3.4收藏与添加到歌单(1)界面设计:(a)音乐收藏界面效果(b)添加到歌单效果图5-8收藏与添加到歌单界面(2)实现思路:当用户点击了收藏按钮(即心形按钮),后台会通过collectMusic()方法将歌曲添加到数据库musiclake1中的Playlist表,然后通过setImageResource()方法更新收藏状态,使心形按钮变成红色,即表示收藏成功;同理,当用户再次点击心形按钮时就可以取消收藏。当用户点击添加到歌单的按钮时,后台会通过addToPlaylist()方法将歌曲添加到本地歌单。5.3.5改变播放模式(1)界面设计:(a)随机播放效果(b)顺序播放效果(c)单曲循环效果图5-9改变音乐播放模式(2)实现思路:当用户点击播放模式按钮时,后台通过updatePlayMode()方法切换播放模式,并通过执行ToastUtils类显示切换后的播放模式吐司,播放模式总共有三种,分别是循环播放、单曲播放与随机播放,后台系统通过PlayQueueManager()方法定义playingModeId类来实现默认播放模式为循环播放。5.3.6下载歌曲(1)界面设计:(a)音质选择效果(b)下载效果图5-10下载歌曲(2)实现思路:当用户点击下载按钮时,后台通过downloadMusic()方法调用QualitySelectDialog类的initItems()方法实现弹出下载歌曲音质选择,音质可选择标准品质、较高品质、HQ品质与无损品质,选择品质后点击下载歌曲后会弹出通过MaterialDialog()方法实现的下载歌曲弹窗,点击确定后会通过getMusicDownloadUrl()方法获取该歌曲的下载地址并开始下载,下载成功后会显示“歌名+下载成功”的吐司提示,如果用户重复下载则会显示“歌名+已在下载列表中...”。5.3.7音质切换(1)界面设计:图5-11音质切换(2)实现思路:当用户点击音质按钮时,后台通过调用QualitySelectDialog类的initItems()方法与TranslateAnimation()方法实现自下而上弹出歌曲音质选择菜单栏,音质可选择标准品质、较高品质、HQ品质与无损品质,用户选择品质后,系统通过后台initMediaPlayer()方法初始化音乐播放服务,播放当前音质歌曲,通过playCurrentAndNext()方法播放当前音乐,最后通过play()方法实现音乐播放。5.3.8进度条(1)界面设计:(a)进度条效果(b)歌词进度条效果图5-12进度条(2)实现思路:当歌曲开始播放,系统后台通过getDuration方法获取正在播放的歌曲的总时长,并通过getCurrentPosition()方法获取正在播放歌曲的进度,再通过seekTo()方法实现歌曲进度的快进与后退。5.3.9歌词(1)界面设计:(a)歌词效果(b)选择效果(c)歌词搜索(d)字体大小效果图5-13歌词(2)实现思路:当用户划到歌词呈现页面时,系统后台会通过searchLyric()方法自动搜索歌词,如何没有搜索到歌词的话,会弹出“没有搜索到+歌曲名+相关歌词”的吐司,如果有搜索到,则系统后台将通过initLyricList()方法初始化歌词,使歌词匹配歌曲播放进度,当用户点击歌词按钮时,会自下而上弹出一个菜单栏,菜单栏内有两个按钮,分别是“在线搜词”与“字体样式”,点击在线搜词会显示搜索出来的歌词的结果,点击任意一个搜索出来的歌词结果,就会弹出“歌词修改成功”的吐司,点击字体样式则可以修改字体大小与字体颜色。5.3.10封面播放转动(1)界面设计:(a)封面转动前(b)封面转动后图5-14封面转动(2)实现思路:当用户开始播放歌曲时,系统后台通过initAlbumPic()方法初始化旋转动画,通过startRotateAnimation方法切换歌曲,开始旋转动画,从而实现歌曲播放时封面随着转动;当用户暂停播放歌曲时,系统后台通过stopRotateAnimation()方法停止封面旋转,当再次播放歌曲时系统后台通过resumeRotateAnimation()方法实现封面继续旋转。5.3.11播放更多(1)界面设计:图5-15更多选择(2)实现思路:当用户点击播放更多后,系统后台通过ItemAdapter()方法自下而上弹出更多菜单栏,菜单栏内有“下一首播放”、“添加到歌单”、“查看专辑”与“查看歌手”可供用户选择的功能。当用户点击“下一首播放”后,系统后台通过nextPlay()方法实现下一首播放这一首歌;当用户点击添加到歌单的按钮时,后台会通过addToPlaylist()方法将歌曲添加到本地歌单;当用户点击“查看专辑”时,系统后台会通过turnToAlbum()方法跳转到该音乐所属专辑;当用户点击“查看歌手”时,系统后台会通过turnToArtist()方法打开歌手列表。5.4音乐搜索模块5.4.1在线搜索(1)界面设计:(a)搜索界面效果(b)搜索效果图5-16在线搜索(2)实现思路:当用户点击搜索按钮时,系统后台就会弹出搜索页面,用户输入好后点击搜索后,系统后台通过search()方法进行接口搜索,再通过setupViewPager()方法将搜索到的结果以列表的形式展现出来。5.4.2搜索历史与删除搜索历史(1)界面设计:(a)无搜索历史(b)搜索历史图5-17搜索历史(2)实现思路:当用户输入搜索内容后点击搜索按钮时,系统后台会将用户输入的内容通过saveOrUpdate()方法写入musiclake数据库SearchHistoryBean搜索历史表内,然后再用getSearchHistory()方法与where()方法获取数据库搜索历史,而后通过showSearchHistory()方法显示搜索历史。当用户点击具体搜索历史后面的“x”按钮后,系统后台就会通过deleteAllAsync()方法删除该搜索历史条目,当用户点击右上方的垃圾桶按钮后,系统后台会通过deleteAll()方法删除所有的搜索历史。5.4.3歌单搜索(1)界面设计:(a)歌单搜索界面(b)搜索效果图5-18歌单搜索(2)实现思路:当用户在歌单内点击搜索按钮后,系统后台就会跳转到歌单内搜索页面,用户输入搜索内容后,系统后台通过showSearchOnStart()方法自动匹配相符合的搜索歌曲展现出来。5.5通知栏模块5.5.1通知栏(1)界面设计:图5-19通知栏(2)实现思路:当用户播放音乐时,系统后台会通过isPlaying()方法获取当前音乐的播放状态,再用releaseServiceUiAndStop()方法释放通知栏,然后再使用initNotify()方法初始化通知栏,再使用updateNotification()方法更新通知栏信息;当用户点击通知栏背景时,系统后台会通过Intent()方法跳转到当前音乐的播放界面;当用户切换音乐时,系统后台会通过isChange()方法确认是否改变歌曲信息,然后通过isPlaying()方法获取当前音乐的播放状态;当用户点击通知栏的关闭按钮时,系统后台会通过cancelNotification()方法isRunningForeground类结束音乐App的进程并关闭音乐App。5.5.2桌面歌词(1)界面设计:(a)桌面歌词效果(b)调整歌词效果图5-20桌面歌词(2)实现思路:当用户点击通知栏的“词”按钮时,系统后台就会通过showDesktopLyric()方法显示桌面歌词,并通过Timwr()方法与scheduleAtFixedRate()开启定时器定时刷新桌面歌词,实现每隔0.5秒刷新一次,再通过updateLyric()方法实现正在播放时刷新;在歌词显示栏里还可以设置字体大小与颜色、锁定歌词、关闭歌词栏、切换上下一首与播放暂停。5.6用户我的模块5.6.1我的界面(1)界面设计:图5-21我的界面(2)实现思路:当用户进入我的界面时,系统后台就会通过updatePlaylist()方法自动更新本地歌单列表,如果歌单列表为空则显示“暂无歌单,快去新建吧!”;并显示收藏列表、下载列表与本地歌曲列表。5.6.2我的收藏(1)界面设计:图5-22我的收藏(2)实现思路:当用户点击“我的收藏”时,系统后台会通过getMusicList()方法获取数据库里所有收藏歌曲,点击播放歌单按钮时,会通过saveOrUpdateMusic()方法播放收藏列表内的歌曲。5.6.3下载(1)界面设计:图5-23下载(2)实现思路:当用户进入下载界面后,系统后台通过getDownloadList()方法获取已下载列表,通过getDownloadingList()方法获取下载列表,通过clearDownloadList()方法清空下载列表,通过updateTask()方法更新数据库TasksManagerModel下载表下载任务状态。5.6.4本地歌单(1)界面设计:(a)新建本地歌单(b)歌单建好效果图5-24本地歌单(2)实现思路:当用户点击新建歌单的按钮时,系统后台就会弹出新建歌单框,输入歌单名后,点击确定即通过createPlaylist()方法新建好一个歌单;当用户进入我的界面时,系统后台通过setNewData()方法与getAllPlaylist()方法获取加载本地歌单列表,再通过if语句判断歌单列表,如本地歌单列表为空则显示“空空如也”。当用户点击进入歌单后,系统后台会通过getMusicList()方法扫描歌单歌曲;当用户点击添加歌曲到歌单的按钮时,后台会通过addToPlaylist()方法将歌曲添加到本地歌单,用户点击重命名歌单后通过renamePlaylist类重命名歌单,点击删除歌单会通过deletePlaylist()方法实现删除歌单。5.7发现模块5.7.1歌手列表(1)界面设计:(a)发现页面(b)歌手选择(c)歌手歌单图5-25歌手列表(2)实现思路:当用户点击”歌手列表”后,系统后台会通过initViews()方法初始化歌手列表,然后通过updateArtistList()方法更新歌手分类;当用户点击任一一个歌手后,系统后台通过showArtistList()方法显示歌手歌曲。5.8更多模块5.8.1设置(1)界面设计:(a)更多页面(b)设置选择图5-26设置(2)实现思路:当用户点击“清除缓存”时,系统后台就会通过cleanApplicationData()方法实现清除所有图片缓存;当用户点击“桌面歌词”时,系统后台就会通过checkLyricPermission()方法来实现检查桌面歌词所需的权限。5.8.2退出音乐App(1)界面设计:图5-27退出App(2)实现思路:当用户点击“退出”时,系统后台会通过finish()方法实现退出音乐App。5.9音乐API5.9.1API本音乐App通过应用程序接口获取网络音乐数据,具体接口如下:QQ音乐Api接口定义:QQMusicApiServiceImpl5.9.2DSbridge使用通过BaseApiImpl,调用js方法拼接api请求地址,然后AjaxHandler收到请求地址,再通过okhhtp请求,获取返回数据,然后在回到js组装返回数据。最后返回一个json字符串,在BaseApiImpl回调方法中gson解析成具体对象。5.10本章小结本章主要是说明音乐App的开发程序,对系统进行代码编写,按模块进行程序的编写,描述系统输入处理输出的详细运行流程。第6章系统的测试6.1进入退出模块6.1.1进入退出模块测试(1)图片:图6-1进入退出测试表格:表6-SEQ表6-\*ARABIC1进入退出模块测试表用例编号测试点内容描述预期结果实际结果结论1进入音乐App用户在手机上点击微音乐App图标,进入微音乐App显示欢迎页面,跳转到我的主页面成功进入,跳转到我的主页面通过2退出音乐App用户在微音乐App上点击退出按钮音乐App终止运行音乐App终止运行通过6.2主页我的与发现模块6.2.1我的模块测试(1)图片:图6-2我的测试表格:表6-SEQ表6-\*ARABIC2我的测试表用例编号测试点内容描述预期结果实际结果结论1我的收藏用户点击进入我的收藏内,查看自己收藏的歌收藏歌曲均可正常显示与正常播放正常显示正常播放通过2下载用户点击进入下载,查看自己下载的歌曲已下载的歌与下载中的歌均正常显示与正常播放正常显示正常播放通过3本地歌单用户点击新建按钮新建歌单,用户点击本地歌单进入本地歌单新建歌单成功,进入本地歌单成功,歌单内歌曲均正常播放正常显示新建歌单成功,进入歌单成功,歌曲正常播放正常显示通过6.2.2发现模块测试(1)图片:图6-3歌手列表测试(2)表格:表6-SEQ表6-\*ARABIC3歌手列表测试表用例编号测试点内容描述预期结果实际结果结论1歌手列表用户进入发现页面,点击歌手列表按钮进入歌手列表,用户点击一名歌手进入歌手歌曲列表,点击任意一首歌曲进行播放正确显示歌手,正确显示歌手歌曲列表,音乐播放正常正确显示歌手,正确显示歌手歌曲列表,音乐播放正常通过2歌手筛选用户对歌手进行有条件的筛选,筛选好后点击歌手进入歌手歌曲列表,点击任意一首歌曲进行播放正确显示筛选后的歌手,正确显示歌手歌曲列表,音乐播放正常正确显示筛选后的歌手,正确显示歌手歌曲列表,音乐播放正常通过6.3音乐播放模块6.3.1音乐播放模块测试(1)图片:(a)音乐播放效果测试(b)歌词测试图6-4音乐播放测试(2)表格:表6-SEQ表6-\*ARABIC4音乐播放模块测试表用例编号测试点内容描述预期结果实际结果结论1音乐播放用户进入音乐播放页后点击音乐的播放按钮与暂停按钮正确播放音乐与暂停播放音乐,播放音乐与暂停音乐成功通过2切换音乐用户任意切换上一首音乐与下一首音乐正确切换上一首音乐与下一首音乐成功切换上一首音乐与下一首音乐通过3播放模式用户随意切换循环播放、单曲播放、随机播放切换音乐播放模式正确成功循环切换播放模式通过4播放音质用户点击标准品质、较高品质、HQ品质与无损品质的音乐音质按钮正确切换播放音乐的音质成功切换对应音乐音质通过5播放进度用户播放音乐并拖动音乐进度条,歌曲总时长启动进度条正常移动,歌曲总时长无误,音乐与进度条完美吻合进度条正常移动,歌曲总时长无误,音乐与进度条完美吻合通过6歌曲歌词歌词与歌词颜色大小切换歌词颜色与大小成功切换歌词颜色与大小通过7收藏歌曲用户点击收藏歌曲按钮成功收藏歌曲成功收藏歌曲通过8下载歌曲用户选择下载音质进行下载音乐下载成功音乐下载成功通过9添加到歌单用户添加音乐到本地歌单添加音乐到歌单成功添加音乐到歌单成功通过10更多用户点击下一首播放、查看专辑与歌手正确播放下一首,歌手与专辑查看无误正确播放下一首,歌手与专辑查看无误通过6.4搜索音乐模块6.4.1搜索音乐模块测试(1)图片:(a)测试效果(b)搜索效果图6-5搜索音乐测试表格:表6-SEQ表6-\*ARABIC5搜索音乐模块测试表用例编号测试点内容描述预期结果实际结果结论1音乐搜索用户搜索音乐正确显示搜索结果正确显示搜索结果通过2音乐搜索历史用户删除搜索历史正确显示搜索历史,成功删除搜索历史正确显示搜索历史,成功删除搜索历史通过3歌单内搜索用户搜索歌单内音乐成功搜索歌单内音乐成功搜索歌单内音乐通过6.5设置模块6.5.1设置模块测试(1)图片:(a)设置前效果(b)设置后效果图6-6设置测试表格:表6-SEQ表6-\*ARABIC6设置模块测试表用例编号测试点内容描述预期结果实际结果结论1桌面歌词用户请求悬浮窗权限正确获取手机悬浮窗权限正确获取手机悬浮窗权限通过2开启夜间模式用户切换夜间模式与正常模式夜间模式与正常模式互相切换正确夜间模式与正常模式互相切换正确通过3清除缓存用户点击清除所有图片缓存清除缓存成功清除缓存成功通过4下载目录用户查看下载歌曲目录下载目录显示正确下载目录显示正确通过6.6本章小结本章主要介绍了音乐App的测试数据,对系统数据进行了测试,发现并修正了系统中的错误或偏差,提高了音乐App系统的性能。从测试结果来看,本文开发的音乐App在功能需求方面达到了预期的效果,很好地为用户提供了听音乐的需求,另外,在非功能需求方面,也具有良好的稳定性,能够在一定程度上承受用户的暴力使用,不会轻易出现卡顿、崩溃等影响用户体验的现象。第7章系统特色和创新7.1系统特色在开发模式下,该音乐App采用MVC(Model-View-Control模型-视图-控制)模式开发,具有高重用性、低耦合性、快速部署性和高可维护性等优点,有利于软件的工程管理等,其实施难度一般。需要利用的知识点和技术点一般是主流开发技术,可以逐步掌握和合理利用。由于涉及的技术范围很广,有必要更多地利用文档和教程进行学习和实践,最终目标是获得良好的人机交互体验。7.2系统创新这款音乐App是一款功能非常丰富的App,具有在线播放音乐功能、本地音乐播放功能等,让用户可以更加个性化地玩音乐、听音乐,丰富用户的精神世界。第8章总结在分析国内外现有Android平台音乐App的基础上,结合自己对市场的调查,得出了本文音乐App的性能和功能要求,进行了系统的总体设计,并对各个模块进行了详细的设计,对数据库和消息处理机制等关键技术进行了探讨。以Android为平台,以JAVA为主导语言,实现了UI界面和功能。最后,对系统的功能和性能进行了测试,并与市场上主流的音乐播放软件进行了比较。测试表明,该音乐播放软件界面清晰简单,操作方便,手机资源占用少,响应速度快,达到了预期目标,具有较大的市场空间。对于此处音乐App的完成,作为开发者的我来说可以说是非常开心的,在学习的过程中主要是通过书本和上网学习一些知识和开发技巧,这一次是通过自己所学习的理论知识加以运用实践,将学习到的知识真正的运用和融会贯通。通过这次自己设计的音乐App,让自己遇到很多之前无法通过自己完成的难题,但是通过导师和同学们的帮助,还是能够顺利地化解这些难题,并且通过这些难题也帮助我对软件知识的综合运用及使用的技巧。还有就是通过毕业设计的完成,让我学会了如何跟老师和学生之间的更好交流沟通,这对我以后进入到社会是一个很好的磨练。通过自己这段时间的努力,完成这次毕业设计,主要是对我大学这几年所学知识的进行综合的检测,我学到了很多知识,不只是书本知识,还有就是对于书本知识的实践应用,在学习书本知识的同时,掌握了课本上没有的技术知识和其他专业课程知识,对于本次音乐App的实现,是近年来自己首次完成设计的一个系统。在项目的设计过程中,我克服了各种困难,并且在面对这些困难,我积极的面对,想办法解决问题,并且更好的掌握了理论知识和动手操作实践能力。虽然此款音乐App虽取得了一定的成果,但还需要进一步完善,在今后的工作中,可以从以下几个方面着手进行研究:(1)在功能方面,没有实现用户管理功能。未来可以添加注册、登录和修改密码等功能,使音乐App的功能更加的全面与完善。(2)在界面上,更多地参考时下盛行音乐App的格调,如QQ音乐,在界面设计上缺乏创新和个性化,在未来,可以尝试一个全新的用户界面整体布局和设计,以形成一个独特风格的音乐App。5353参考文献 高梦园.基于安卓的多元化云音乐App的设计与实现[D].秦皇岛:燕山大学硕士学位论文,2018:11-23.\t"/qq_19431333/article/details/_blank"xingfeng_coder.深入理解Service(一)——服务生命周期[J/OL].CSDN技术社区,2016.12.[3] 苏航.基于Android的音乐播放器软件的设计与实现[D].成都:电子科技大学硕士学位论文,2016:12-20.[4]pifoo.4.2.0Android四大组件之-Service概述[J/OL].简书,2015.10.[5]南山巅上.Android中Service(服务)详解[J/OL].CSDN技术社区,2017.2.[6]郭霖.第一行代码——Android(第2版)[M].人民邮电出版社,2016.11.[7]刘敏.基于Android平台的软件行为分析系统的设计与实现[D].北京:北京邮电大学硕士学位论文,2014:6-20.[8]赵志荣.清华开发者书库Android开发从0到1[M].清华大学出版社,2017.07.[9]切切歆语.AndroidMVC,MVP和MVVM架构设计模式[J/OL].博客园,2018.3.[10]崔毅明.基于Android平台的多功能音乐播放器的设计与实现[D].长春:吉林大学硕士学位论文,2015:15-33.[11]夏明钰.基于Android的校园音乐应用的设计与实现[D].武汉:华中科技大学硕士学位论文,2015:28-41.声明致谢 在本次毕业设计中感谢指导老师和同学的帮助,他们在发现问题、分析问题和解决问题上提供了不少的外部协助,最终凭着自己的能力完成了这次任务。附录 附录一:数据库设计脚本附录二:系统源码

捷键与一些电脑小技巧HYPERLINKwinkey+d:

这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!

--这个就是winkeywinkey+f:

不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。

winkey+r:

在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!

alt+tab:

如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。

winkey+e:

当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!

小提示:

winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。

再补充点

F1显示当前程序或者windows的帮助内容。

F2当你选中一个文件的话,这意味着“重命名”

F3当你在桌面上的时候是打开“查找:所有文件”对话框

F10或ALT激活当前程序的菜单栏

windows键或CTRL+ESC打开开始菜单

CTRL+ALT+DELETE在win9x中打开关闭程序对话框

DELETE删除被选择的选择项目,如果是文件,将被放入回收站

SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是

放入回收站

CTRL+N新建一个新的文件

CTRL+O打开“打开文件”对话框

CTRL+P打开“打印”对话框

CTRL+S保存当前操作的文件

CTRL+X剪切被选择的项目到剪贴板

CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板

SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置

ALT+BACKSPACE或CTRL+Z撤销上一步的操作

ALT+SHIFT+BACKSPACE重做上一步被撤销的操作

Windows键+D:最小化或恢复windows窗口

Windows键+U:打开“辅助工具管理器”

Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置

Windows键+E打开资源管理器

Windows键+F打开“查找:所有文件”对话框

Windows键+R打开“运行”对话框

Windows键+BREAK打开“系统属性”对话框

Windows键+CTRL+F打开“查找:计算机”对话框

SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单

SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo

rd的时候按下不放,可以跳过自启动的宏

ALT+F4关闭当前应用程序

ALT+SPACEBAR打开程序最左上角的菜单

ALT+TAB切换当前程序

ALT+ESC切换当前程序

ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换

PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板

ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板

CTRL+F4关闭当前应用程序中的当前文本(如word中)

CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前

一个窗口)

在IE中:

ALT+RIGHTARROW显示前一页(前进键)

ALT+LEFTARROW显示后一页(后退键)

CTRL+TAB在页面上的各框架中切换(加shift反向)

F5刷新

CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”

2.删除以下文件夹中的内容:

x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)

x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)

x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)

x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)

x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)

x:\WINDOWS\Temp\下的所有文件(临时文件)

x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)

x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)

x:\WINDOWS\SoftwareDistribution\download下的所有文件

3.如果对系统进行过windoesupdade升级

温馨提示

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

评论

0/150

提交评论