彭卫卫+基于Android手机平台的音乐播放器2毕业论文.docx
《彭卫卫+基于Android手机平台的音乐播放器2毕业论文.docx》由会员分享,可在线阅读,更多相关《彭卫卫+基于Android手机平台的音乐播放器2毕业论文.docx(46页珍藏版)》请在冰豆网上搜索。
彭卫卫+基于Android手机平台的音乐播放器2毕业论文
(此文档为word格式,下载后您可任意编辑修改!
)
基于Android手机平台的音乐播放器
目录
第一章引言-1-
1.1项目背景-1-
1.2编写目的-2-
第二章系统需求分析-3-
2.1功能需求(用例图分析)-3-
2.1.1播放器的基本控制需求-3-
2.1.2播放清单列表管理需求-5-
2.1.3播放友好性需求-7-
2.1.4播放器扩展卡需求-8-
2.1.5功能需求(时序图)分析-9-
2.2系统结构图和流程图-10-
2.3系统界面需求-11-
2.4系统性能需求-12-
2.5运行环境需求-12-
第三章Android数据库设计-13-
3.1数据库及字段属性设计-13-
3.1.1字段设计(表、图)-13-
3.1.2音乐播放器E-R图-15-
3.2数据库连接-15-
3.2.1创建数据库-15-
3.2.2操作数据库-16-
3.2.3数据显示-17-
第四章Android项目介绍-18-
4.1什么是Android?
-18-
4.1.1Android简介-18-
4.1.2AndroidFeatures特性-18-
4.1.3Android基本框架(AndroidArchitecture)-19-
4.1.4Android系统的四大组件-22-
4.2搭建Android开发环境-23-
4.3Android常用工具的使用-25-
4.3.1命令行的使用-25-
4.3.2DalvikDebugMonitorService(DDMS)的使用-26-
4.4Android音乐播放器的工程-26-
4.4.1Android项目-26-
4.4.2Android工程程序结构-27-
4.4.3AndroidManifest.xml文件-29-
第五章播放器系统功能详细设计-31-
5.1音乐播放器主界面功能实现-31-
5.1.1播放器主界面-31-
5.1.2播放界面音轨的实现-32-
5.1.3播放器播放、暂停、停止等功能-35-
5.2播放列表功能-36-
5.3菜单功能-38-
5.3.1菜单界面-38-
5.3.2菜单功能实现-39-
5.4播放设置界面-41-
5.4.1界面实现-41-
5.4.2歌词显示实现-42-
5.5手机扩展卡的访问-44-
5.5.1文件浏览器界面-45-
5.5.2文件浏览器功能实现-46-
5.6数据存储方式-47-
5.6.1SharedPreferences-47-
5.6.2File存储方式-48-
5.6.3SQLiteDatabase数据库-48-
第六章结论-49-
摘要
当今社会的生活节奏越来越快+Android系统上一的款音乐播放器应用程序的设计与实现进行讨论。
Android是一个开源的系统,它底层是基于Linux的操作系统,本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。
同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对高度过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、歌词显示等功能于一体,性能良好,在Android系统中能独立运行。
该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式、以及歌词开闭状态的友好设置.MP3的全名是MPEGAudioLayer-3,是一种声音文件的压缩格式,由于本播放器只限于应用层程序的探讨,所以对具体的压缩算法不作深究。
关键词:
Android;开源系统;linux;音乐播放器
ABSTRACT
Thepaceoflifeintoday'ssociety,withmoreadvancedamusicplayerfromsystemdesignandrealizationoftheapplicationisdiscussed.Takethesystemisanopensource,itisbasedontheoperatingsystem,usetheLinuxmusicplayeroftheAndroidopen-sourcesystemtechnology,usingtheJavalanguageandeditingtoolsforplayerstoEclipse.Presentsthedetaileddesignprocess,thepartofthesystemandthemainfunctionsofoperationinterfacediagramofdetail,andthemusicplayerepisode,pause,stopanda,next,volumeadjustment,lyricsdisplayfunctions,suchasperformanceisgood,canoperateindependentlyintheAndroidsystem.Thisplayer,openandcloseconditionoffriendlywords.MP3AudioMPEGLayer-nameis3,isakindofsoundfilescompressedformat,becausetheplayerstoexplore,sotheapplicationprocedureforspecificcompressionalgorithmnotprobe
KeyWords:
Android;Opensourcesystem;linux;musicplayer
第一章引言
1.1项目背景
当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。
那么能否在手机上拥有自己编写的个性音乐播放器呢?
能的,谷歌Android系统就能做到。
本文的音乐播放器就是基于谷歌Android手机平台的播放器。
Android:
是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。
这使得越来越多的人关注这个操作系统。
本次作品音乐播放器就是基于Android平台的。
随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。
于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。
针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:
还能播放RMVB格式的视频文件。
此外,还能支持中文、英文等语言界面。
要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。
目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV,等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。
播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。
1.2编写目的
现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲文件的管理操作等多种播放控制功能,界面简明,操作简单。
本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。
使人们的生活更加多样化。
也使设计者更加熟练Android的技术和其它在市场上的特点
第二章系统需求分析
2.1功能需求(用例图分析)
根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。
以下分别描述:
2.1.1播放器的基本控制需求
图2.1播放器基本控制图
用例名称:
播放
参与者:
用户
目标:
使得用户可以播放在播放列表中选中的歌曲
前置条件:
播放器正在运行
基本事件流:
1.用户单击“播放”按钮
2.播放器将播放列表中的当前的歌曲
用例名称:
暂停
参与者:
用户
目标:
使得用户可以暂停正在播放的歌曲
前置条件:
歌曲正在播放且未停止和暂停
基本事件流:
1.用户单击“暂停”按钮
2.播放器将暂停当前的歌曲
用例名称:
停止
参与者:
用户
目标:
使得用户可以停止正在播放的歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“停止”按钮
2.播放器将停止当前播放的歌曲
用例名称:
上一首下一首
参与者:
用户
目标:
使得用户可以听上一首或下一首歌曲
前置条件:
歌曲正在播放或暂停
基本事件流:
1.用户单击“上一首或下一首”按钮
2.播放器将播放上一首或下一首歌曲
用例名称:
播放清单
参与者:
用户
目标:
使得用户可以进入播放清单
前置条件:
程序在运行
基本事件流:
1.用户单击“清单”按钮
2.播放器进入清单列表
2.1.2播放清单列表管理需求
当用户选中列表中某一项歌曲,就有的需求:
图2.2播放器清单
用例名称:
播放
参与者:
用户
目标:
使得程序播放选中的歌曲
前置条件:
程序运行在播放菜单选项中
基本事件流:
1.用户单击“播放”按钮
2.播放器进入播放状态
用例名称:
详细
参与者:
用户
目标:
使得程序显示歌曲详情
前置条件:
程序运行在播放菜单选项中
基本事件流:
1.用户单击“详细”按钮
2.显示歌曲详细状态
用例名称:
增加
参与者:
用户
目标:
使得程序进入手机扩展SD卡
前置条件:
程序运行在播放菜单选项中
基本事件流:
1.用户单击“增加”按钮
2.播放器进入手机扩展SD卡
用例名称:
移除全部移除
参与者:
用户
目标:
使选中的歌曲被移除
前置条件:
程序运行在播放菜单选项中
基本事件流:
1.用户单击“移除全部移除”按钮
2.播放器移除选中歌曲全部移除歌曲
用例名称:
设定
参与者:
用户
目标:
使得程序进入播放器设定状态
前置条件:
程序运行在播放菜单选项中
基本事件流:
1.用户单击“设定”按钮
2.播放器进入设定界面
2.1.3播放友好性需求
图2.3播放器设定
用例名称:
播放模式
参与者:
用户
目标:
使得程序进入播放模式设定状态
前置条件:
程序运行在播放器设定界面中
基本事件流:
1.用户单击“顺序、随机、单曲”按钮
2.播放器进入选中模式播放状态
用例名称:
歌词显示
参与者:
用户
目标:
使得程序进入播放器歌词设置状态
前置条件:
程序运行在播设定界面
基本事件流:
1.用户单击“歌词开关按钮”按钮
2.播放器显示或关闭歌词
2.1.4播放器扩展卡需求
图2.4文件浏览器
用例名称:
SDcard
参与者:
用户
目标:
使得程序进入SDcard目录
前置条件:
程序运行目录界面
基本事件流:
1.用户单击“Sdcard”选项
2.程序进入Sdcard目录下
用例名称:
System
参与者:
用户
目标:
使得程序进入System目录
前置条件:
程序运行目录界面
基本事件流:
1.用户单击“System”选项
2.程序进入System目录下
2.1.5功能需求(时序图)分析
音乐播放器的时序图分析如(图)
2.2系统结构图和流程图
(1)音乐播放器的系统流程图(图2.5.1)
图2.5.1流程图
(2)系统功能表(表2.1)和系统功能结构图(图2.5.2)
功能类别
子功能
子功能
播放列表
播放列表菜单
退出播放
从扩展卡寻找歌曲
歌曲菜单
播放->进入播放界面
删除->数据库同步更新
重命名->数据库同步更新
向上、下移动->数据库同步更新
播放界面
播放
播放歌曲->线程启动->时间更新
暂停
暂停歌曲->线程暂停->时间暂停
停止
停止歌曲->线程停止->时间停止
上一首
播放列表索引变化->寻找上一ID歌曲
下一首
播放列表索引变化->寻找下一ID歌曲
播放界面菜单
返回到播放列表
返回到主菜单
从扩展卡寻找歌曲
退出播放器
隐藏播放界面
主菜单
退出程序
程序退出
进入播放列表
显示播放列表
表2.1功能表
图2.5.2系统功能结构图
2.3系统界面需求
播放器界面要求布局合理,颜色舒适,控制按钮友好,为了减少开发工程量,图片素材多数为公司项目素材(图2.6)
图2.6播放器界面
说明:
左下角为清单按钮右下角为程序退出按钮
蓝色条为音轨
2.4系统性能需求
根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求:
(1)当要求歌曲播放时,程序响应时间最长不能超过5秒
(2)当要求歌曲暂停时,程序响应时间最长不能超过5秒
(3)当要求歌曲停止时,程序响应时间最长不能超过5秒
(4)当要求歌曲上下一首时,程序响应时间最长不能超过5秒
(5)当要求进行清单列表时,程序响应时间最长不能超过5秒
2.5运行环境需求
操作系统:
Android手机基于Linux操作系统
支持环境:
Android1.5-2.0.1版本
开发环境:
Eclipse3.5ADT0.95
第三章Android数据库设计
数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织形式等一系列问题。
数据库,顾名思义,是存放数据的仓库。
只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。
数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定范围内的各种用户共享。
在涉及数据库的软件开发中,需要根据有待解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择
3.1数据库及字段属性设计
3.1.1字段设计(表、图)
file_table主要是保存歌曲名字、类型、路径
字段说明:
Id歌曲id号fileName歌曲名字filePath歌曲路径sort歌曲类型(表3.1、图3.1.1)
Android自带一个MediaStore封闭类专门来存储媒体信息
通过UriEXTERNAL_CONTENT_URI来访问SDcard中的歌曲详细信息。
存放媒体信息如TITLE(标题)、ARTIST(艺术家)、ALBUM(专辑)、SIZE(大小)(表3.2、图3.1.2)
属性
数据类型
允许空
主键
_Id
INTEGER
Notnull
Primarykey
fileName
TEXT
Notnull
filePath
TEXT
sort
INTEGER
表3.1
属性
数据类型
允许空
主键
_ID
INTEGER
Notnull
Primarykey
TITLE
TEXT
Notnull
ARTIST
TEXT
ALBUM
TEXT
SIZE
LONG
表3.2
图3.1.1歌曲列表
图3.1.2歌曲详细
3.1.2音乐播放器E-R图
音乐播放器E-R(实体-联系:
entity-relation图)图(图3.1.3)
图3.1.3E-R图
3.2数据库连接
这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。
Android数据库存储的位置在datadata<项目文件夹>databases目录下Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。
通过Context.getContentResolver()方法直接对数据库进行操作。
程序中数据库类为DBHelperextendsSQLiteOpenHelper(继承关系),内容提供类DBProviderextendsContentProvider(继承关系)
3.2.1创建数据库
Android提供了标准的数据库创建方式。
继承SQLiteOpenHelper,实现onCreate和onUpgrade两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:
publicDBHelper(Contextcontext){创建数据库
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
publicvoidonCreate(SQLiteDatabasedb){创建时调用
db.execSQL(DATABASE_CREATE);
}
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){版本更新时调用
db.execSQL("DROPTABLEIFEXISTSFile_Table");
onCreate(db);
}
@Override在ContextProvider运行时自动创建数据库
publicbooleanonCreate(){
dbOpenHelper=newDBHelper(getContext());
returntrue;
}
数据库如果创建不成功则抛出FIleNotFoundException异常
3.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;
}
3.2.3数据显示
程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来
@Override数据库查询操作
publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){
SQLiteDatabasedb=dbOpenHelper.getWritableDatabase();
依次参数为:
表名,查询字段,where语句,替换,groupby(分组),.TABLE,projection,selection,selectionArgs,null,null,sortOrder);returncur;}
第四章Android项目介绍
4.1什么是Android?
4.1.1Android简介
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
目前最好的是Android2.0的摩托罗拉Droid
Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(OpenHand