基于android的音乐播放器设计与实现本科学位论文.docx
《基于android的音乐播放器设计与实现本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于android的音乐播放器设计与实现本科学位论文.docx(42页珍藏版)》请在冰豆网上搜索。
基于android的音乐播放器设计与实现本科学位论文
摘要
在如今这个生活节奏越来越快的社会,科技也随之发展的越来越智能化。
而手机的智能化就是其中体现的一个方面,现在市场上比较主流的手机系统就是Android,苹果和w8。
Android是一个开源的系统,它底层是基于Linux的操作系统。
本毕业设计的音乐播放器采用了Android开源系统技术,利用Java语言和EclipseJDK编辑工具对音乐播放器进行编写。
同时也给出了比较详细的系统设计过程、部分界面图及主要功能运行流程图,本设计还对一些架构的和界面的高度过程中遇到的问题和解决方法进行了详细的讨论,还有一些开发过程中遇到的错误问题进行了举例。
该音乐播放器集播放、暂停、停止、上一首、下一首、歌词显示等功能于一体,有良好的性能,炫酷的播放界面。
能在Android手机系统中能独立运行。
该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式(单曲循环,单曲循环,顺序循环,顺序播放,随机播放)、以及歌词开闭状态等比较人性化的设置.该音乐播放器的名称是:
“旋风播放器“,名字就和它的风格一样。
关键词:
Linux操作系统;Android;流程图;音乐播放器;开源系统
Abstract
Inthisincreasinglyfastpaceoflifesociety,scienceandtechnologyalsowillbethedevelopmentofmoreandmoreintelligent.TheintelligentphonewhichreflectsoneaspectofthemarketisnowmoremainstreamphonesystemisAndroid,AppleandW8.Androidisanopensourcesystem,itistheunderlyingLinux-basedoperatingsystem.
ThemusicplayerofthegraduatedesignusestheAndroidopensourcetechnology,theusetheJavalanguageandEclipseJDKofeditingtoolstowritethemusicplayer.Butalsogivesamoredetailedsystemdesignprocess,partoftheinterfacemapandmainfunctionsofaflowchartoftheoperation,thedesignofahighdegreeofprocessarchitectureandinterfaceproblemsencounteredandsolutionsarediscussedindetail,aswellassomedevelopmentprocesserrorsencounteredexamples.Themusicplayerissettoplay,pause,stop,previousone,thenextsong,lyricsdisplayandotherfunctionsinone,goodperformance,coolplayerinterface.Androidmobilephonesystemcanrunindependently.Theplayeralsohasaccesstothephonefilebrowserfunction,songplaybackmode(singlecycle,singlecycle,ordercycle,theorderofplay,randomplay),aswellastheopeningandclosinglyricsstatehumanesetthemusicthenameoftheplayer:
"whirlwindplayer",thenameanditsstyle.
Keywords:
Linuxoperatingsystem;Android;flowchart;musicplayer;opensourcesystem
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
引言
随着科技的进步,手机的功能也不断的得到丰富,从最早的“大哥大”到现在的商务PDA手机,智能手机,音乐手机等等,功能也从单纯的打电话发展到了发短信,听歌,上网,玩游戏....手机和我们生活的联系越来越紧密,手机的功能也是很多人们关注的焦点。
目前手机的音乐播放功能已经是大家比较关注的一个部分了,不少在人在购买手机的时候都会关心手机的音乐播放的能力,这也足以看出目前大家对音乐播放功能的重视,所以一款性能良好的手机音乐播放器软件一定会受到欢迎。
和传统的音乐播放器相比,手机播放音乐更加的容易携带,其他方面也都不输于传统音乐播放器,而且还具有网上听音乐功能,所以开发一款受欢迎的手机音乐播放软件是具有良好的市场和应用前景的。
一款专业的音乐播放软件是手机中必不可少的要素,几乎市场上所有的手机都拥有一个自带的音乐播放软件,通过软件可以对音乐欣赏中一些必要的元素进行人性化的设置,同时在操作的时候也能得到一定的便利,但是不能满足用户的所有要求,所以网上就出现了各种各样的手机音乐播放软件,来满足不同用户的不同要求。
不同手机平台的手机,所支持的音乐播放软件也是各不相同,而现在最流行的手机平台就是google的android手机平台,所以本课题就致力于开发出一款基于android手机平台的音乐播放器,来满足用户的使用需求。
第一章系统需求分析
1.1功能需求(用例图分析)
根据项目所要达到的目标,从而我们可获得项目系统的基本需求,以下是从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求。
以下分别描述:
1.1.1播放器的基本控制需求
图1.1播放器基本控制图
用例名称:
播放
参与者:
用户
目标:
使用户可以选择播放列表中的歌曲
前置条件:
环境启动播放器正在运行
基本事件流:
1.用户单击“播放”按钮
2.播放器将播放列表中的当前选中的歌曲
用例名称:
暂停
参与者:
用户
目标:
使得用户可以暂停正在播放的歌曲
前置条件:
歌曲正在播放且未停止和暂停
基本事件流:
1.用户单击“暂停”按钮
2.播放器将暂停当前的歌曲
用例名称:
停止
参与者:
用户
目标:
使得用户可以停止正在播放的歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“停止”按钮
2.播放器将停止当前播放的歌曲
用例名称:
上一首/下一首
参与者:
用户
目标:
使得用户可以听上一首或下一首歌曲
前置条件:
歌曲正在播放或暂停或停止
基本事件流:
1.用户单击“上一首或下一首”按钮
2.播放器将播放上一首或下一首歌曲
用例名称:
歌曲列表
参与者:
用户
目标:
使得用户可以进入歌曲列表
前置条件:
程序在运行
1.1.2播放友好性需求
图1.2播放器设定
用例名称:
播放模式
参与者:
用户
目标:
使得程序进入播放模式设定状态
前置条件:
程序运行在播放器设定界面中
基本事件流:
1.用户单击“顺序、随机、单曲”按钮
2.播放器进入选中模式播放状态
用例名称:
歌词显示
参与者:
用户
目标:
使得程序进入播放器歌词设置状态
前置条件:
程序运行在播设定界面
基本事件流:
1.用户单击“歌词开关按钮”按钮
2.播放器显示或关闭歌词
1.1.3功能需求(时序图)分析
音乐播放器的时序图分析如(图)
1.2系统结构图和流程图
(1)音乐播放器的系统流程图(图1.2.1)
图1.2.1流程图
(2)播放器功能表
图1.2.2系统功能结构图
1.3播放器系统界面需求
播放器界面要求合理布局,颜色炫丽,控制按钮都比较友好,为了该音乐播放器的炫丽,图片素材多数为自己从网上找的(图2.6)
图1.3.1界面图
1.4系统性能需求
根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:
(1)当要求歌曲播放时,程序响应时间最长不能超过5秒
(2)当要求歌曲暂停时,程序响应时间最长不能超过5秒
(3)当要求歌曲停止时,程序响应时间最长不能超过5秒
(4)当要求歌曲上/下一首时,程序响应时间最长不能超过5秒
(5)当要求进行歌曲列表时,程序响应时间最长不能超过5秒
1.5运行环境需求
(1)操作系统:
Android手机基于Linux操作系统
(2)支持环境:
Android2.3-2.3.3版本
(3)开发环境:
Eclipse3.6.2ADT16
第二章Android数据库设计
数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织形式等一系列问题。
数据库,顾名思义,是存放数据的仓库。
只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。
数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定范围内的各种用户共享。
在涉及数据库的软件开发中,需要根据有待解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择。
2..1数据库及字段属性设计
2.1.1字段设计(表、图)
file_table主要是保存歌曲id、歌曲名字、歌曲大小、作者。
字段说明:
music_id歌曲id号,music_name歌曲名字,music_size歌曲大小,music_singer歌曲作者(表2.1、图2.1.1)
Android自带一个MediaStore封闭类专门来存储媒体信息
通过UriEXTERNAL_CONTENT_URI来访问SDcard中的歌曲详细信息。
存放媒体信息如NAME(标题)、SINGER(歌曲作者)、SIZE(大小)(表2.2、图2.1.2)
属性
数据类型
允许为空
主键
Music_id
integer
Notnull
Primarykey
Music_name
text
Notnull
Music_size
text
Notnull
Music_singer
text
Nutnull
表2.1
属性
数据类型
允许空
主键
_ID
INTEGER
Notnull
Primarykey
NAME
TEXT
Notnull
SINGER
TEXT
SIZE
LONG
表2.2
图2.1.1歌曲列表
图2.1.2歌曲详细
2.1.2音乐播放器E-R图
音乐播放器E-R(实体-联系:
entity-relation图)图(图3.1.3)
图3.1.3E-R图
2.2数据库连接
这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。
Android数据库存储的位置在data/data/<项目文件夹>/databases/目录下Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。
通过Context.getContentResolver()方法直接对数据库进行操作。
程序中数据库类为DBHelperextendsSQLiteOpenHelper(继承关系),内容提供类DBProviderextendsContentProvider(继承关系)
2.2.1创建数据库
Android提供了标准的数据库创建方式。
继承SQLiteOpenHelper,实现onCreate和onUpgrade两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:
publicclassDBHelperextendsSQLiteOpenHelper{
publicDBHelper(Contextcontext){
super(context,Constant.DATABASENAME,null,Constant.VERSION);
}
@Override
publicvoidonCreate(SQLiteDatabasedb){
Stringsql="createtable"+Constant.TB_MUSIC+"(music_idintegerprimarykeyautoincrement,music_nametext,music_lengthtext,music_singertext)";
db.execSQL(sql);
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'inspring','03:
36','汪峰')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'notsosimply','03:
36','黄小琥')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'dontcry','03:
36','GunsandRoses')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'cryonmyshoulder','03:
46','欧美群星')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'Lenka-TroubleIsAFriend','04:
56','Lenka')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'loveissimple','03:
56','陶喆')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'aslongasyouloveme','03:
43','后街男孩')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'mylove','04:
24','西城男孩')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"
values(null,'sunshine','03:
33','周杰伦')");
db.execSQL("insertinto"+Constant.TB_MUSIC+"values(null,'theworld','03:
35','王菲')");
}
@Override
publicvoidonUpgrade(SQLiteDatabasearg0,intarg1,intarg2){
}
数据库如果创建不成功则抛出FIleNotFoundException异常
2.2.2操作数据库
Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。
//数据库删除操作
@Override
publicintdelete(Uriarg0,Stringarg1,String[]arg2){
SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
try{
Db.delete(FileColumn.TABLE,arg1,arg2);
}catch(Exceptionex){
ex.printStackTrace();
}return1;
}
@Override//数据库插入操作
publicUriinsert(Uriuri,ContentValuesvalues){
SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
longcount=0;
try{count=db.insert(FileColumn.TABLE,null,values);
}catch(Exceptionex)
{ex.printStackTrace();}
if(count>0)returnuri;
elsereturnnull;
}
//数据库更新操作
@Override
publicintupdate(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs){
SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
inti=0;
try{
i=db.update(FileColumn.TABLE,values,selection,null);returni;
}catch(Exceptionex){}
return0;
}
2.2.3数据显示
程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来
@Override//数据库查询操作
publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){
SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
//依次参数为:
表名,查询字段,where语句,替换,groupby(分组),having(分组条件),orderby(排序)
Cursorcur=db.query(FileColumn.TABLE,projection,selection,selectionArgs,null,null,sortOrder);returncur;}
第三章Android项目介绍
3.1在我们理解Android是什么?
3.1.1Android简介
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由AndyRubin开发,主要支持手机。
2005年8月由Google收购注资。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。
随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
第一部Android智能手机发布于2008年10月。
Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2012年11月数据显示,Android占据全球智能手机操