基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx

上传人:b****7 文档编号:25552928 上传时间:2023-06-09 格式:DOCX 页数:49 大小:496.34KB
下载 相关 举报
基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx_第1页
第1页 / 共49页
基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx_第2页
第2页 / 共49页
基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx_第3页
第3页 / 共49页
基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx_第4页
第4页 / 共49页
基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx

《基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx》由会员分享,可在线阅读,更多相关《基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx(49页珍藏版)》请在冰豆网上搜索。

基于安卓Android的MP3播放器的设计与实现本科毕业论文.docx

基于安卓Android的MP3播放器的设计与实现本科毕业论文

 

毕业论文

题目基于安卓Android的MP3播放器

的设计与实现

学生所在学院电气信息学院

专业软件工程

起止日期2015.12.16—2016.05.17

摘要

Android平台是Google针对移动设备所推出的一个操作平台,此平台是以Apache开源许可的方式的进行发布的,所以使用该系统是免费的,所以开发人员能够在该平台上开发属于自己的应用。

Android平台是由“操作系统”、“中间件”、“用户界面”和“应用程序”组成的。

它采用了软件堆层的架构设计,分为三部分,其中底层以Linux内核工作为基础,只提供基本功能来处理事件;中间层包括函数库和虚拟机,负责系统运行所必须的环境;最上层是各种应用程序,包括Android系统自带的通话、短信、相机等应用;应用软件则由其他自由开发人员或公司自行开发,然后发布到Android应用市场供用户下载。

本文以Android开发平台为基础,首先简要介绍了Android平台的发展历程、以及当前国内外关于音乐播放器的发展现状。

然后描述了Android开发平台的开发环境的搭建。

之后便对本播放器做了一个详细的需求分析。

再然后便开始描述本播放器所需使用的数据库的设计。

然后对本播放器中的所有功能界面进行详细介绍和功能实现。

关键词:

Android音乐播放器Android平台的开发与设计

1.概述

1.1项目背景

在大学前三学年的学习生活中,我学会了C++、C#、Java这三门编程语言,正因为掌握了编程的基础,于是在大学第四学年中,我自学了Android开发,转眼就要毕业了,我想要用我所学到的知识去完成一个基于Android的音乐播放器开发来给我的大学画上一个圆满的句号。

至于说为什么想到的会是一款基于Android的音乐播放器,我想说既然最近一学年在学习Android开发,那就应该用现阶段自己掌握得最熟练的技术去开发。

至于为什么是音乐播放器,那就得说说音乐在平时生活中所占的比重了。

音乐已经成为了人们生活中不可或缺的一部分了,闲暇无聊时听一首安静的慢歌、朋友聚会时在KTV高歌一曲,听歌成了习惯后,软件开发商发现了商机。

各式各样的手机音乐播放器随之被推出。

诚然,作为专业的软件应用开发商所开发的产品功能还是很强大的,不管是在音乐资源还是界面效果上都是很符合大众口味的。

然而秉着虚心学习的态度,都不能抑制我想要开发一款属于自己的音乐播放器的想法。

1.2国内外相关研究现状及发展趋势

目前国内较为流行的几款手机端音乐播放器主要有:

网易云音乐、酷狗音乐、酷我音乐、多米音乐、虾米音乐、天天动听等,这些播放器大都有海量的曲库支持,专业的音效,炫酷的皮肤,详细的歌曲信息、专辑信息等等。

因这些播放器功能大都雷同,因本次所开发的播放器使用了XX音乐提供的开放接口,所以此处仅以XX音乐为例介绍其特点:

XX音乐Android版是一款专为手机定制的功能强大的音乐播放器,数量庞大的音乐资源提供试听下载,权威的推荐音乐榜单,新鲜的新歌推送,智能语音搜歌,登录账号收藏音乐,PC端和手机即可同步显示。

而对于国外的音乐播放器,因为接触得少,这里只介绍一款。

Beoplayer,是一款丹麦的音乐播放器,Beoplayer是一款免费软件,由丹麦的Bang&Olufsen公司所设计开发,这是一家全球顶级的数字设备产品提供商,他们的产品设计理念是“独特高贵”,因此其公司的产品一直被音乐爱好者所喜爱。

1.3项目研究意义

作为即将毕业的大学生,毕业设计是对大学学习过程中知识积累量的一次考验,而我也想知道在大学四年期间我到底有什么收获,所以我想要通过这次的毕业设计课题“基于Android的音乐播放器”来面对这场考验,并以一个令人满意的成绩完成考验。

1.4本文主要内容

本次项目的主要研究内容是研究、分析和实现基于Android手机平台的音乐播放器,具体包括以下几个部分:

(1)第一章介绍项目背景和国内外现状

(2)第二章介绍Android平台的历史和开发环境的搭建

(3)第三章介绍对播放器的需求分析

(4)第四章介绍数据库的设计

(5)第五章介绍项目详细的设计

(6)第六章介绍系统测试

2.Android开发环境搭建

AndroidStudio是Google推出的Android开发工具,基于IntelliJIDEA开发,类似于Eclipse等开发工具,AndroidStudio集成了Android开发工具用于开发和调试,并且在AndroidStudio的安装包中已经封装了AndroidSDK,所以只需要安装JavaJDK和AndroidStudio即可开始Android应用的开发。

在本次开发中,所采用的开发工具及其下载地址如下表1-1所示。

表1-1Android开发所需工具软件版本信息及下载地址

软件名称

下载地址

JavaJDK

AndroidStudio

http:

//www.android-studio.org/index.php/component/content/category/88-download

将上述工具下载,首先安装JavaJDK,安装完成后配置环境变量的Path路径和classPath路径,打开cmd命令行工具,输入java和javac命令查看是否配置成功。

安装AndroidStudio时,若本机上并没有AndroidSDK,需要勾选上AndroidSDK项,在安装完毕以后需要打开AndroidSDK并选在一些必须的AndroidAPI,只有这样才能使AndroidStudio成功编译Android项目。

完成以上步骤,便可开始Android应用的开发了。

3.项目需求分析

3.1目的

开发一款属于自己的个性化的音乐播放器。

3.2系统背景

市场上各式各样的播放器让人眼花缭乱,让人选择起来却无从下手。

本着学习交流的心态,在觉得自己有这种能力的情况下,开发一款自己的个性化的音乐播放器。

3.3问题说明

音乐播放器是手机必不可少的一部分,一个好的播放器能极大的增加用户体验,同时,界面简洁,操作快捷也是一个播放器所应具备的。

本播放器系统流程图如图3.1所示。

3.4系统范围

音乐播放器主要为用户提供播放音频文件的功能,文件范围不限于本地文件,可播放或下载网络歌曲文件,适合所有喜爱音乐的人群使用。

3.5用例图及用例描述

用例图如图3.2所示。

 

图3.1系统流程图

图3.2系统用例图

音乐播放器的用例详情描述如下:

(1)用例名称:

获取本地歌曲列表。

参与者:

系统。

目标:

第一次使用系统时系统自动获取本地符合条件歌曲的信息并存入数据库,并生成歌曲列表供用户选择。

基本事件流:

打开播放器,播放器在欢迎界面中判断是否初次使用本系统。

(2)用例名称:

获取网络歌曲列表。

参与者:

用户。

目标:

获取XX音乐提供的各类型的歌曲榜单,方便用户收听或下载。

基本事件流:

用户打开“发现”栏目,选择对应的榜单,系统请求服务器返回歌曲信息并以列表形式返回给用户。

(3)用例名称:

播放。

参与者:

用户。

目标:

播放用户选定的歌曲。

基本事件流:

用户在歌曲列表中选择某项,系统在后台开始播放与该项对应的歌曲。

(4)用例名称:

播放界面。

参与者:

用户。

目标:

用户打开对应的歌曲的播放界面。

基本事件流:

用户打开播放界面,系统显示当前播放歌曲的详细信息和播放进度。

3.6功能摘要

软件详细功能如表3-1所示。

表3-1功能摘要

序号

角色

功能

1

用户

1、生成本地歌曲列表

2、播放本地或网络歌曲

3、下载网络歌曲

4、歌词同步显示

5、搜索网络歌曲

6、自动查找歌词

7、自动加载专辑图片

3.7假定与约束

运行环境约束详情如表3-2所示。

表3-2运行环境约束

名称

详细要求

操作系统

Android2.2—Android5.1

数据库

SQLite3

4.数据库设计

4.1数据库概念设计

根据上一章节所描述的需求分析可得到本播放器中所要使用的数据库实体为“歌曲”,且歌曲信息实体包括歌曲id、名称、演唱者、专辑、歌词路径、歌曲路径、歌曲专辑图片等属性,其中歌曲id为数据表的主键。

歌曲信息实体E-R图如图4.1所示。

图4.1歌曲E-R图

4.2数据表设计

在对歌曲信息实体分析以后,就需要开始进行数据库表的设计了。

在本播放器中,需要进行保存在数据库中的信息主要有“本地歌曲”、“最近下载任务”、“最爱歌曲”、“最近播放的歌曲”,而“最爱歌曲”已经在“本地歌曲”中设置属性判断,无需再创建数据表,所以本播放器中供需使用三个表:

本地歌曲表tb_local、下载任务表tb_download、最近播放表tb_lately。

 

本地歌曲表tb_local

tb_local表用来负责存储由用户扫描出的音乐文件信息,信息包括由系统自动生成的歌曲编号,从歌曲文件中解析出的相关信息,具体字段定义见表4-1。

表4-1tb_local表字段

序号

字段

类型

大小

允许为空

备注

1

_id

INTEGER

4

自增编号

表主键

2

song_id

INTEGER

10

歌曲编号

3

url

TEXT

100

歌曲路径

4

title

TEXT

100

歌曲名称

5

artist

TEXT

100

歌手

6

artist_id

INTEGER

10

歌手编号

7

album

TEXT

100

歌曲专辑

8

album_id

INTEGER

10

歌曲专辑编号

9

size

INTEGER

10

歌曲文件大小

10

duration

INTEGER

10

歌曲播放时长

11

album_image

TEXT

100

歌曲专辑图片

12

bitrate

INTEGER

10

歌曲比特率

13

lrc

TEXT

100

歌词路径

14

year

INTEGER

10

年代

15

channel

TEXT

100

声道

16

simple_rate

TEXT

100

歌曲采样率

17

comment

TEXT

100

备注

18

favorite

INTEGER

10

是否为爱歌曲

下载任务表tb_download

tb_download负责保存用户下载的歌曲信息,因歌曲下载完毕后会将信息转存到tb_local表中,所以在tb_download中仅保存了歌曲编号信息,这个编号是从XX音乐接口获取的歌曲编号。

tb_download字段定义如表4-2所示。

表4-2tb_download表字段

序号

字段

类型

大小

允许为空

备注

1

_id

INTEGER

4

自增编号

表主键

2

song_id

INTEGER

10

歌曲编号

最近播放表tb_lately

tb_lately负责保存用户最近播放的15首歌曲,因播放的可能会是来源于网络的歌曲,所以此表中也会保存如tb_local中除却favorite的其他信息。

字段定义如表4-3所示。

表4-3tb_lately字段

序号

字段

类型

大小

允许为空

备注

1

_id

INTEGER

4

自增编号

表主键

2

song_id

INTEGER

10

歌曲编号

3

url

TEXT

100

歌曲路径

4

title

TEXT

100

歌曲名称

5

artist

TEXT

100

歌手

6

artist_id

INTEGER

10

歌手编号

7

album

TEXT

100

歌曲专辑

8

album_id

INTEGER

10

歌曲专辑编号

9

size

INTEGER

10

歌曲文件大小

10

duration

INTEGER

10

歌曲播放时长

11

album_image

TEXT

100

歌曲专辑图片

12

bitrate

INTEGER

10

歌曲比特率

13

lrc

TEXT

100

歌词路径

14

year

INTEGER

10

年代

15

channel

TEXT

100

声道

16

simple_rate

TEXT

100

歌曲采样率

4.3数据库的连接及操作类的编写

在数据库连接及操作类中,主要包括对数据库的连接及对数据库的增删修改操作,要连接到SQLite数据库,需要自定义工具类去继承SQLiteOpenHelper抽象类,并实现其方法。

此处先贴出代码再做介绍。

publicclassDataBaseHelperextendsSQLiteOpenHelper{

privatestaticfinalStringDATABASE_NAME="music.db";

privatestaticfinalintVERSION=1;

publicDataBaseHelper(Contextcontext){

this(context,DATABASE_NAME,null,VERSION);

}

publicDataBaseHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactorycursorFactory,intversion){

super(context,name,cursorFactory,version);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

db.execSQL(MyMusicTable.CREATE_TABLE_SQL_LOCAL);

db.execSQL(MyMusicTable.CREATE_TABLE_SQL_DOWNLOAD);

db.execSQL(MyMusicTable.CREATE_TABLE_LATELY);

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

}

}

在DatabaseHelper类中,通过实现构造方法去创建数据库,然后在onCreate方法中执行创建表的语句,当进行应用更新时,再在onUpgrade方法中进行更新数据库的操作。

然而到此还并没有完成数据库的连接。

可以看到,在构造方法中使用到了Context对象,可以想到要连接到数据库,就需要传入这个Context对象,这就需要在Activity中对该数据库连接对象进行实例化了。

同时,为了使代码更加简洁,此处将数据库的其他操作方法写到另一个操作类MyDatabase中。

在MyDatabase中,通过实例化DataBaseHelper对象dbHelper,调用其父类中的方法getWiteableDatabase获取一个SQLiteDatabase实例,通过这个实例的方法就可以进行数据库的增删修改操作了。

查询操作

在本播放器中,并没有针对某项数据进行查询,而是查询某表中所有的歌曲信息并保存到一个游标集Cursor中,然后可通过此表中所拥有的字段再获取一个信息集合List。

下面代码为根据表名称获取一个Cursor对象。

publicCursorgetTable(StringtableName){

SQLiteDatabasedb=dbHelper.getReadableDatabase();

returndb.query(tableName,null,null,null,null,null,null);

}

插入操作

此处仅以向本地歌曲表中插入一项数据为例介绍如何插入数据。

要向本地歌曲表中插入数据,需要传入一个Music对象,并获取SQLiteDatabase的可写对象,然后执行此对象的insert方法即可,代码如下:

publiclonginsertToSong(StringtableName,Musicmusic){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

ContentValuesvalues=newContentValues();

values.put(MyMusicTable.SONG_ID,music.getSong_id());

values.put(MyMusicTable.URL,music.getUrl());

values.put(MyMusicTable.TITLE,music.getTitle());

values.put(MyMusicTable.ARTIST,music.getArtist());

values.put(MyMusicTable.ARTIST_ID,music.getArtist_id());

values.put(MyMusicTable.ALBUM,music.getAlbum());

values.put(MyMusicTable.ALBUM_ID,music.getAlbum_id());

values.put(MyMusicTable.SIZE,music.getSize());

values.put(MyMusicTable.DURATION,music.getDuration());

values.put(MyMusicTable.ALBUM_IMAGE,music.getAlbumImage());

values.put(MyMusicTable.BITRATE,music.getBitrate());

values.put(MyMusicTable.LRC,music.getLrc());

values.put(MyMusicTable.SAMPLE_RATE,music.getSampleRate());

values.put(MyMusicTable.COMMENT,music.getComment());

values.put(MyMusicTable.FAVORITE,music.getFavorite());

returndb.insert(tableName,null,values);

}

更新操作

要更新数据表中数据,可直接调用SQLiteDatabase对象的update方法。

publicintupdate(StringtableName,ContentValuescv,StringwhereClause,String[]args){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

returndb.update(tableName,cv,whereClause,args);

}

其中tableName表示需要更新的表的名称,cv表示一个键值对,其键为数据表中需要修改的字段,值则为更改后的值,whereClause等价于sql更新语句中的where条件,args数组表示whereClause中的“?

”的值。

删除操作

和更新操作一样,要删除某项数据可直接调用SQLiteDatabase对象的delete方法。

publicintdelete(Stringtable,StringwhereClause,String[]args){

SQLiteDatabasedb=dbHelper.getWritableDatabase();

returndb.delete(table,whereClause,args);

}

5.项目实现

从本章节开始,便要逐步开始播放器系统代码的编写了,这其中包括界面UI的设计,各个功能的实现。

但因代码过多,此处便只贴出部分功能代码,至于UI界面的设计等代码,请查阅源文件。

5.1欢迎界面

5.1.1欢迎界面概述

一个应用是很需要一个欢迎界面的,一方面给用户表明应用的性质,一方面又可在欢迎界面的显示过程中去获取应用配置信息。

在本应用的欢迎界面SplashActivity中,通过显示一张能够表明主题的图片的同时,去获取应用的基本配置信息,如是否第一次打开应用,歌曲的播放模式,联网方式,是否打开了摇一摇切歌等信息。

5.1.2欢迎界面技术分析

在执行这些可能比较耗时的操作时,我们需要另开辟一个线程去执行这些方法,在执行完毕后,通过Handler的消息处理机制,发送消息给主线程去执行接下来的操作。

在这个另开辟的线程中执行两个方法,当启动此应用时即开始执行这个StartThread线程,其流程图如图5.1所示。

部分代码如下:

classStartThreadimplementsRunnable{

@Override

publicvoidrun(){

try{

Thread.sleep(2000);

}catch(InterruptedExceptione){

e.printStackTrace();

}

open();

}

}

图5.1欢迎界面流程图

5.2播放器主界面

5.2.1播放器主界面概述

本应用的设计基本使用Activity和Fragment的方式进行界面的搭配,除却欢迎界面SplashActivity,主界面MainActivity便成了其它的Fragment的父容器。

此外,为方便数据的统一使用,SplashActivity和MainActivity均继承自自定义的BaseActivity,减少了代码的冗杂量。

主界面上功能流程图如图5.2所示。

在MainActivity中,包括三个界面:

顶部的导航界面,底部的当前播放信息界面,中部则是一个ViewPager组件,用于放置“我的”(LocalFragment)和“榜单”(NetFragment)两个Fragment。

初始状态下显示“我的”界面,当点击上方的“榜单”或向左滑动时,则可显示网络歌曲推荐榜单界面。

主界面效果如图5.3所示。

“榜单”界面如图5.4所示。

在主界面中可看到,LocalFragment通过一个GridView组件显示播放器记录的部分信息,通过读取存于数据库中的歌曲信息,在初始化GridView设置其适配器时将数据显示于界面上。

5.2.2主界面技术分析

在本应用中,使用到了一个第三方的开源库SlidingMenu,其效果是可展示一个侧滑菜单,如常用的手机QQ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1