【基于Android的音乐播放器的设计与实现7200字(论文)】_第1页
【基于Android的音乐播放器的设计与实现7200字(论文)】_第2页
【基于Android的音乐播放器的设计与实现7200字(论文)】_第3页
【基于Android的音乐播放器的设计与实现7200字(论文)】_第4页
【基于Android的音乐播放器的设计与实现7200字(论文)】_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

基于Android的音乐播放器的设计与实现目录TOC\o"1-3"\h\u4219第一章绪论 1144401.1研究背景 1141911.2研究意义 1869第二章需求分析 2317632.1可行性分析 254462.1.1社会与经济可行性分析 2136112.1.2技术行性分析 2295552.2系统需求分析 2321002.2.1软件使用流程分析 2299922.2.2系统基本功能需求分析 2249012.3系统功能模块分析与设计 397592.4数据库需求分析 429101第三章音乐播放器功能实现 6244813.1包架构设计 618183.2基石类设计 6212853.2.1BaseActivity类 692943.2.2ListenerApp类 7232703.3我的歌曲 769343.4我的歌单 9184483.5文件夹 11277013.6我喜欢 12254643.7最近记录 13255453.8音乐播放 13156133.9主题设置 1515770第四章软件测试 1617954.1我的歌曲功能测试 16146524.2创建歌单功能测试 16262754.3音乐播放功能测试 1610044.4歌词滚动功能测试 1798624.5循环模型功能测试 17201014.6歌曲添加到歌单功能测试 17270244.7最近播放功能测试 18225394.8我喜欢功能测试 1891414.9主题测试功能测试 1814745总结 204789参考文献 21第一章绪论1.1研究背景科技改变了生活,在这个日新月异的新时代,我们处在科技快速发展的世界。可想而知这样的环境必定带来了方便快捷的生活,人们通过手机开始了解外面的世界,手机已经成为人们必不可少的随身物品,但同时科技的发展也让处于21世纪的人们承受了巨大的压力。所以找寻缓解压力的方法与途径就显得十分重要。相较于其他缓解压力的途径,听音乐被大多数人所选择,人们对于音乐的了解欲望也与日俱增。音乐不再局限于想要舒缓压力的人们,也更多的走进了越来越多人的生活中,音乐渐渐成为人们生活中的一部分。因此两方面来看手机中的音乐播放器对于人们有着不可或缺的重要性。1.2研究意义科技迅速发展,人们生活中也充斥着各种各样的软件,音乐播放软件的种类也越来越多。虽然现在市场上有许多的音乐播放器软件,但这些软件都或多或少的有一些缺点,比如说现下很多音乐播放软件需要注册登录才能使用,对于一些不喜欢这些繁琐步骤,只想要听歌的用户来说,这些地方是不方便的。这个音乐播出器APP的设计目的一方面是为了让用户在任一方面任一时长,不管时长长短,都能够进行音乐欣赏,缓和生活压力,培养生活情操。另一个方面,该软件使用科学的播放方式,不止搭建了歌词的展示,用户还可以通过滑动把控进度和特效展示,使用扁平化的设计格局,提升用户体验。同时软件功能也更清晰易懂,方便轻巧。因而开发这一应用能够更好的满足学生群体、上班族等用户倾听音乐的需求,具有较高的实用价值。第二章需求分析2.1可行性分析2.1.1社会与经济可行性分析随着社会的发展,快节奏的生活渐渐成为了当代人的日常,随之而来的压力也逐渐让人们想要逃离。调查显示,在当今社会越来越多的人会选择听音乐来缓解压力,所以开发一款音乐播放器软件能很大程度上帮助到人们,并且开发该音乐软件的技术也十分成熟,不需要开发成本,在AndroidStudio上开发即可,因此从社会与经济可行性方面分析,能够开发这一款音乐播放器软件。2.1.2技术行性分析本软件是一款在AndroidStudio平台运用JAVA语言进行开发的音乐播放器,该软件使用RecyclerView作为网格列表类展示控件,通过Fragment进行页面搭建,将表等数据存储在Android自带的SQLite数据库。所用到的技术都熟练掌握,遇到的问题也已经通过询问老师、网上查找等方法解决,所以从技术方面分析,该软件的开发是可行的。2.2系统需求分析2.2.1软件使用流程分析点击手机桌面软件图标进入软件,点击想听的歌曲进行播放,进入音乐播放界面。点击播放按钮进行播放或暂停,根据用户喜好可点击上/下一曲进行歌曲切换,也可点亮红心收藏到我喜欢界面,用户也可点击歌词进行歌词查看。主界面可以进行搜索、歌曲、歌手、专辑的查看,用户也可点击主界面侧边栏进行歌单创建、我喜欢查看、文件夹导入歌曲、设置等功能。2.2.2系统基本功能需求分析对于一个音乐播放软件来说,相比于花里胡哨的外表,简洁干净,功能清晰的界面更能得到用户的青睐。本软件界面美观的同时又不繁琐,侧边栏的运用让软件界面功能更明确,给用户视觉上的享受。本软件不需要登录注册,让用户更能直接快速的感受音乐。音乐播放界面功能也一应俱全,同时歌词的展示也让播放更有趣。用户也可下载自己喜欢的音乐到本地文件夹,从软件内导入,让音乐种类变得丰富。2.3系统功能模块分析与设计该软件的主要功能包括音乐播放、音乐分类(歌曲、歌手、专辑)、音乐管理、音乐搜索、歌单、我喜欢的歌曲、最近记录、设置等功能。(1)音乐播放:用户可从文件夹导入指定音乐文件进行播放,也可查看歌词,进行循环模式等设置;(2)音乐分类:音乐分类分为歌曲、歌手、专辑三个类别,用户可以任选类别进行查看。在我的歌曲界面,用户可查看手机中的全部音乐,可以从软件右上方点击搜索进行歌曲搜索,也可对视图进行调整,视图分为网格和列表视图;(3)音乐管理:用户可对音乐文件进行增加、删除、修改、查询,由Android本地数据库SQLite实现;(4)音乐搜索:通过SQL查询到用户设置条件的文件,同时在列表中展示;(5)我的歌单:用户可选择音乐进行歌单的创建,并进行命名等管理;(6)我喜欢:用户可通过音乐播放界面点亮红心对音乐进行喜欢,之后用户就可在我喜欢界面查看;(7)最近添加:用户添加的音乐可在此页面展示;(8)播放排行:软件将每首音乐播放次数进行统计,并按从大到小的顺序进行排列;音乐播放器APP的各个分块或页面之间的切换关联如图2-1所示。图2-12.4数据库需求分析根据功能必需,数据库关键创建了以下几张关联表。MusicPlaybackState表,储存歌曲状态,字段:TRACK_ID编号、SOURCE_ID资料ID、SOURCE_TYPE资料类别、SOURCE_POSITION资料位置,如表2-1。RecentStore最近歌曲表,字段:NAME名字、ID歌曲标识、TIMEPLAYED时长戳,如表2-2。SongPlayCount播出次数表,字段含有了:id歌曲编号、NAME歌曲名、PLAYCOUNTSCORE播出次数,如表2-3。SearchHistory搜索历史表,字段:NAME名称、SEARCHSTRING搜索内容、TIMESEARCHED时长戳,如表2-4。FavoriteSong喜欢的歌表,字段:NAME名称、SONGID歌曲ID、TIMEADDED添加时长,如表2-5。关联的字段一定要进行唯一设置,例如:id编号、用户名等和用户唯一性有紧密关联的字段,保证用户信息的一致性和程序的可用性。表2-1MusicPlaybackState表表2-2RecentStore最近歌曲表表2-3SongPlayCount播出次数表表2-4SearchHistory搜索历史表表2-5FavoriteSong喜欢的歌表

第三章音乐播放器功能实现3.1包架构设计包架构在项目中有一个清晰的划分,对开发者的帮助时很大的。可以使架构更清晰,编码和架构效果也能得到增强,同时结构清溪了也使开发变得更容易方便,对软件的后期维护也有很大帮助,所以此次项目也对包架构进行分包操作。 api包:存放需要对网络进行请求的类 dataloader包:存放数据需要进行加载操作的类 event包:存放需要进行自定义的数据类型 injector包:存放依赖注入相关的类 listener包:事件监听类 permission包:权限适配类 provider包:存放与数据库有关联的类 util包:用到的工具类 receiver包:全部广播接受者类 ui包:存放全部外观类 widget包:存放全部自定义控件类3.2基石类设计3.2.1BaseActivity类为了使软件便捷研发,让代码更简洁方便使用了BaseActivity类。BaseActivity类继承于Activity父类,BaseActivity中实现了大多数页面必须的共同内容,在BaseActivity类中封装一些适用频率比较高的方法,如:加载框的展示隐藏、布局文件的设置、控件的绑定、标题栏的事件、页面切换动画、页面Window属性这些。详要功能页面只必须集成该基类进行实现,增强研发效果。3.2.2ListenerApp类为了提升APP的性能和流畅度,避开因为初始化而导致卡顿,进而影响到用户对APP的体验,快速更新媒体库,使用了ListenerApp类。ListenerApp类继承于Application父类,Application是安卓系统的大局唯一的。因此大部分初始化操作可在这个方面进行操作,譬如,xUtil的初始化、地图控件的初始化、共同分享参数的初始化、数据库的初始化这些。在这个方面要注意,Application有可能会因为线程的因素而重复执行,因此必须在执行关联操作之前进行断定,避开重复执行影响性能。另外,假如太多初始化操作会导致APP卡顿,因此尽量只初始化重心组合件,而次要的东西则等到具体使用到的时候再进行初始化。3.3我的歌曲我的歌曲界面是1个Fragment。这个Fragment里面又添加了3个子Fragment,这方面与Fragment嵌入的知识有关,这些子Fragment分别是对歌曲、歌手和专辑展示,用户可通过这些子Fragment去软件中对所有音乐文件进行查看。通过在对应的按钮上设置点击事件来监听接口跳转。点击此按钮可以通过制作不同类型的动画(移动translate:透明alpha,旋转rotate、缩放scale)来实现两界面之间的跳转,可以混合匹配不同的动画效果来应用。动画完成后,页面从引导外观跳转到主外观。功能实现后,根据外观需求,搜索图像数据按钮样式,使用一些图像处理程序来完成项目的整体外观图案设计。通过微调控件(或部件)之间的比较位置或布局,完善每个显示器的外观,增强视觉效果,增强用户体验。使用后监控动画播放,以实现登录后完美跳转到程序的主页面。如图3-1程序界面截图:图3-1我的歌曲3.4我的歌单我的歌单页面,是为用户构建的自定义播放列表功能,用户可以创建新的歌单。在我的歌曲列表创建后,允许选择将指定的歌曲添加到指定的播放列表。RecyclerView和CardView是Android中使用的新控件。RecyclerView被用作一个列表控件来容纳“我的播放列表”数据集合,并且使用CardView显示一个单一的播放列表数据布局来创建一个平面卡片效果。RecyclerView用于显示列表数据,CoordinatorLayout和AppBarLayout用于工具栏,适当的ScrollMode用于创建标题、返回和回放按钮的酷动画,以改善用户体验。如图3-2。关联截图:图3-2我的歌单界面效果3.5文件夹在Android系统中,我们可以使用内容扫描所有的音频文件并获取相关信息,包括:文件名,时长,专辑名,歌手名等。文件夹页面列出了所有带有音频的文件夹,以便用户可以查看这些歌曲和文件。你也可以设置:添加到播放队列,添加到歌单,从设施中删除该文件,等等。通过RequestPermission方法向用户申请权限访问文件夹得到目录,进入目录寻找保存歌曲进行保存,根据授权结果回调,刷新当前权限列表。如图3-3关联截图:图3-3文件夹界面效果3.6我喜欢我喜欢的外观和我的歌曲是同一个界面,因为内容和显示方式基本上是一样的,所以直接采用重用制度。这个页面上的关键控件是RecyclerView。RecyclerView是一个列表控件,它将数据显示为列表。它必须有一个数据适配器来填充和显示数据,获得RecyclerView控件并设置Adapter和选项来监听它,Adapter必须从BaseAdapter继承,这个过程使用系统构建一个简单的Adapter-ArayAdapter来实现。实现了关联的提取方法:getCount、getItemId、getItem、getView等。当使用ListView时,必须特别注意为ListView实现缓存系统。第一个概念是ViewHolder,它保存视图中各种控件的句柄。其次,在getView模式下访问ViewHolder,实现视图缓存。另一方面是更新视图数据,以避免由于视图缓存重用而导致外观数据显示不同的情况。如图3-4关联截图:图3-4我喜欢界面效果3.7最近记录最近记录含有:最近播放,最近添加以播放排行。这三个功能全是基于Android的SQLite数据库去实现的。每一次有相对应的动作出现(播放音乐,添加音乐)就会触发相对应的记录更新,当用户每播放一首音乐时,那么就会为这首音乐的播放次数自增。当最近有新的音乐添加的时候,最近添加则会将对应的数据记录到数据库中。当用户必须浏览最近播放,最近添加以播放排行时,首先通过db操作类从数据库文件中获取到关联的实体对像合集,然后将合集设置的数据适配器Adapter上面另外更新外观展示。如图3-5关联截图:图3-5最近记录界面效果3.8音乐播放音乐播放在安卓中是需要内部储存的,而安卓系统给每1个线程的内部储存大小是有局限的,所以我们可采取多线程的方式实现,概念1个AIDL文件,作为音乐播放线程的接口声明类,这个AIDL文件其实就是1个声明用处,关键是要实现音乐播放线程和使用主线程的跨线程间通信,操作这个远程实例来实现跨线程的数据交流和音乐播放。创建MediaPlayer,设置媒体资源准备进度监听,媒体资源准备播放完毕监听(进行播放),媒体资源播放完毕监听(方便下一曲),音乐播放通过pause、stop方法实现音乐的暂停和播放。进度条通过实现SeekBar监听接口,用onStopTrackingTouch方法监听手指拖动SeekBar停止后的监听,计算当前停止位置百分比获取当前歌曲播放的秒数得到目标值,使用player.seekTo(intmsec)方法跳转到目前值,最后通知更新UI。UI页面使用MetrialDesign模式来实现共享元素从播放栏到音乐播放细节页面的过渡动画。LyricView控件实现歌词显示,在显示歌词时监听滑动事件,当滑动事件被监听时,歌词上显示进度跳转按钮,用户可以点击直接跳转到相应的进度继续播放音乐。有两种方式显示歌词。第一种是单行显示,即图像正常显示。第二种是列表展示,用高斯模糊图像来营造音乐的氛围和意境。如图3-6关联截图:图3-6音乐播放界面效果3.9主题设置主题设置搭建用户可使设置自我想要的主题颜色,提升用户体验。软件中使用的第3方依赖库,其实关键处理的问题有2个:第一是如何替换当前页面的主题颜色,因为主题是在页面启动前设置的,假如要更换就必要重启;第二是如何替换其他页面。当然,第二个问题是比较方便的,直接储存变量就可以。而第一个问题可以经过LayoutInflaterFactory来实现替换全部的控件属性。如图3-7关联截图:图3-7主题设置界面效果

第四章软件测试4.1我的歌曲功能测试将音乐播放器apk包安装在手机上后,运行APP。点击歌曲,查看音乐文件是否正常扫描展示,点击左上角查看文件夹,音乐文件是否全部录入,若以上步骤正确操作,则我的歌曲功能测试成功,测试用例如表4.1。表4.1我的歌曲测试用例测试用例编号9001测试项目我的歌曲测试标题查看是不是正常扫描展示写入启动APP测试结果歌曲录入成功4.2创建歌单功能测试进入软件点击软件左上角找到我的歌单,进入我的歌单点击软件右上角创建歌单,输入歌单名称点击创建,在当前页面查看新创建的歌单,查看歌单名称是否正确,若操作步骤无误,则创建歌单功能测试成功,测试用例如表4.2。表4.2创建歌单测试用例测试用例编号9002测试项目创建歌单测试标题创建歌单写入写入歌单名称测试结果歌单创建4.3音乐播放功能测试进入软件点击歌曲进行播放,点击页面下放播放按钮是否能正常播放音乐,点击下方歌曲进入播放页面,点击播放按钮查看是否能正常播放音乐,拖动进度条查看是否能正常播放,若操作步骤无误,则音乐播放功能测试成功,测试用例如表4.3.表4.3音乐播放测试用例测试用例编号9003测试项目音乐播放测试标题检查音乐播放是不是正常写入点击播放音乐测试结果音乐正常播放4.4歌词滚动功能测试进入播放页面点击播放按钮,点击歌词进入歌词界面,歌词随音乐播放正常滚动,且可以上下拖动歌词,则歌词滚动测试成功,测试用例如表4.4表4.4歌词滚动测试用例测试用例编号9004测试项目歌词滚动外观测试标题检测是不是可使正常滚动歌词写入滑动测试结果歌词滚动正常4.5循环模型功能测试进入音乐播放界面点击右下角切换循环播放,查看音乐是否可根据音乐播放队列进行循环播放,若播放顺序正确则循环模型功能测试成功,测试用例如表4.5.表4.5循环模型测试用例测试用例编号9004测试项目循环模型测试标题检查各个循环模型是不是正常写入切换循环模型测试结果循环模型正常4.6歌曲添加到歌单功能测试进入我的歌单成功创建歌单,进入音乐播放界面点击右上角添加到创建歌单,点击创建歌单查看音乐是否添加成功,点击歌单右方三个点添加到其他歌单,进入其他歌单查看歌单歌曲是否添加成功,操作无误则歌曲添加到歌单功能测试成功,测试用例如表4.6。表4.6歌曲添加到歌单测试用例测试用例编号9006测试项目歌曲添加到歌单测试标题检测是不是可使正常添加到歌单写入点击添加到歌单测试结果歌曲添加歌单成功4.7最近播放功能测试点击左上角进入最近播放页面,查看最近播放数据是否正常,播放新歌曲,再次进入最近播放页面检查是否录入数据成功,若显示正确,则最近播放功能测试成功,测试用例如表4.7。表4.7最近播放测试用例测试用例编号9007测试项目最近播放页面测试标题检测数据是不是正常写入播放新歌曲测试结果最近播放检测数据正常4.8我喜欢功能测试进入音乐播放页面,将界面下方小红心点亮,界面提示添加我喜欢歌曲成功,进入我喜欢检查歌曲是否添加成功并展示,返回歌曲播放界面,将小红心取消,界面提示删除我喜欢歌曲成功,进入我喜欢检查删除是否成功,若步骤正确则我喜欢功能测试成功,测试用例如表4.8。表4.8我喜欢测试用例测试用例编号9008测试项目我喜欢页面测试标题检测是不是可使添加展示写入添加并进入我喜欢页面测试结果歌曲正常添加并展示

总结本次毕业设计的项目是基于Android的音乐播放器,该软件的主要功能包括音乐播放、音乐分类(歌曲、歌手、专辑)、音乐管理、音乐搜索、歌单、我喜欢的歌曲、最近记录、设置等功能。在AndroidStudio环境下用JAVA语言开发。数据存放在SQLite数据库中。刚开始着手这个项目的时候说实话自己是完全没有条理的,并不知道首先该怎么做,后来在老师的帮助下以及对项目的熟悉中开始慢慢了解并掌握。知道了实现一个项目并不是只专注于设计开发,要有条理。一个合格的设计师要从计划开始的,要明白自己做的是什么,要怎么去做,什么时间去做。本次项目前期制定了详细的计划。其次就是要进行分析,并不是盲目的分析,要进

温馨提示

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

评论

0/150

提交评论