软件工程android播放器论文设计.docx

上传人:b****5 文档编号:6213480 上传时间:2023-01-04 格式:DOCX 页数:36 大小:960.97KB
下载 相关 举报
软件工程android播放器论文设计.docx_第1页
第1页 / 共36页
软件工程android播放器论文设计.docx_第2页
第2页 / 共36页
软件工程android播放器论文设计.docx_第3页
第3页 / 共36页
软件工程android播放器论文设计.docx_第4页
第4页 / 共36页
软件工程android播放器论文设计.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

软件工程android播放器论文设计.docx

《软件工程android播放器论文设计.docx》由会员分享,可在线阅读,更多相关《软件工程android播放器论文设计.docx(36页珍藏版)》请在冰豆网上搜索。

软件工程android播放器论文设计.docx

软件工程android播放器论文设计

 

Android论文设计

项目名称:

android播放器

 

学校:

西华师大

 

专业:

软件工程

 

班级:

2009级3班

 

学生:

冯XXX

 

 

引言

当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。

那么能否在手机上拥有自己编写的个性音乐播放器呢?

能的,谷歌Android系统就能做到。

本文的音乐播放器就是基于谷歌Android手机平台的播放器。

Android:

是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。

这使得越来越多的人关注这个操作系统。

本次作品音乐播放器就是基于Android平台的。

随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。

于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。

针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:

还能播放RMVB格式的视频文件。

此外,还能支持中文、英文等语言界面。

要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。

目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV,等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。

播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。

二编写目的

现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,并且带有音乐剪切功能,可以把自己喜欢的部分进行剪切用作彩铃。

实现的主要功能是播放Mp3,Wav多种格式的音乐文件,并且能够控制播放,暂停,停止,上一曲,下一曲,音量调节,视觉外观,播放列表和歌曲信息的编辑操作等多种播放控制功能,界面简明,操作简单。

本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。

使人们的生活更加多样化。

也使设计者更加熟练Android的技术和其它在市场上的特点

三实现功能

(1)可以读取SD卡中的歌曲

(2)点击进入播放列表

(3)可进行下一首播放

(4)可进行上一首播放

(5)可进行快进

(6)可调节播放时间

(7)可进行录音

(8)可以实现歌曲暂停功能

(9)可进行音乐剪切

(10)可将歌曲分配到联系人用做铃声

(11)可现实进度卡

四功能需求(用例图分析)

根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成四部分来概括,即播放器的基本控制需要,播放列表管理需求,播放器友好性需求和播放器扩展卡需求。

以下分别描述:

4.1.1播放器的基本控制需求

图4.1播放器基本控制图

 

4.1.2播放清单列表管理需求

当用户选中列表中某一项歌曲,就有的需求:

图4.2播放器清单

 

4.1.3播放友好性需求

图4.3播放器设定

 

4.1.4播放器扩展卡需求

图4.4文件浏览器

4.1.5功能需求(时序图)分析

音乐播放器的时序图分析如(图)

4.5系统时序图分析

五系统结构图和流程图

5.1.1系统功能表

功能类别

子功能

子功能

 

播放列表

 

播放列表菜单

退出播放

从SD寻找歌曲

歌曲菜单

播放->进入播放界面

删除->SD卡同步更新

重命名->数据库同步更新

进行音乐剪切

 

播放界面

 

播放

播放歌曲->线程启动->时间更新

暂停

暂停歌曲->线程暂停->时间暂停

停止

停止歌曲->线程停止->时间停止

上一首

播放列表索引变化->寻找上一ID歌曲

下一首

播放列表索引变化->寻找下一ID歌曲

 

播放界面菜单

返回到播放列表

返回到主菜单

从扩展卡寻找歌曲

退出播放器

隐藏播放界面

主菜单

退出程序

程序退出

进入播放列表

显示播放列表

表2.1功能表

图2.5.2系统功能结构图

 

5.1.2系统界面需求

播放器界面要求布局合理,颜色舒适,控制按钮友好,为了减少开发工程量,图片素材多数为公司项目素材(图2.6)

图2.6播放器界面

说明:

左下角为清单按钮右下角为程序退出按钮

蓝色条为音轨

5.1.3运行环境需求

操作系统:

Android手机基于Linux操作系统

支持环境:

Android1.5-2.0.1版本

开发环境:

Eclipse3.5ADT0.95

5.1.4音乐播放器E-R图

音乐播放器E-R(实体-联系:

entity-relation图)图(图3.1.3)

图3.1.3E-R图

六数据库连接

6.1.1

这里将介绍如何进行Android数据库连接,Android中自带SQLite数据库,这是一个十分小型的数据库,这样正适合Android这种移动平台使用。

Android数据库存储的位置在data/data/<项目文件夹>/databases/目录下Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。

通过Context.getContentResolver()方法直接对数据库进行操作。

程序中数据库类为DBHelperextendsSQLiteOpenHelper(继承关系),内容提供类DBProviderextendsContentProvider(继承关系)

6.1.2创建数据库

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异常

6.1.3操作数据库

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;

}

6.1.4数据显示

程序是利用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;}

七播放器系统功能详细设计

7.1音乐播放器主界面功能实现

7.1.1播放器主界面

播放器主界面(图5.1)

图7.1

Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。

这样就可以形成不同的可视化界面和炫丽的效果。

播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法,如下代码:

@Override

PublicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.play_rack);}

该方法主要执行界面的初始化操作,Activity有个设置布局的方法:

Context.setContentView(layoutResID),参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为play_rack。

下面为play_rack.xml布局文件代码结构如下:

xmlversion="1.0"encoding="utf-8"?

>

在绝对布局下嵌套两种线性布局,第一个实现了标题和歌曲名的显示位置,通过布局设置绝对坐标来控制标题的位置。

每个布局内可以放置多种Widget(窗体部件)例如:

等。

每个Widget内有多种属性,可以设置该Widget的坐标,大小,背景和颜色等参数。

在播放界面中,歌词显示为居中,实现方法代码如下:

orientation="horizontal"

android:

gravity="center"android:

layout_height="wrap_content"android:

layout_width="fill_parent">

layout_height="wrap_content"

android:

textColor="#8deeee"android:

id="@+id/lrcText"

android:

layout_width="wrap_content">

属性:

orientation="horizontal":

此线性布局的子部件为水平方式布局Layout_width="fill_content":

布局的宽度为填满父布局

Layout_height="wrap_content":

布局的高度子由窗体的大小决定

窗体TextView文本:

textColor="8deeee"设置文本显示的颜色RGB为"8deeee"

TextSize为默认大小

7.1.2播放界面音轨的实现

播放器音轨SeekBar(如下图)

Android系统自带SeekBar(如下图)

图7.2

不管是从界面外观还是从功能上,系统自带的SeekBar往往不能满足用户的需要。

所以我在这里自定义了一个音轨SeekBar,

在play_rack.Xml配置文件中,SeekBar的代码如下:

id="@+id/seekbar"android:

layout_width="245px"

android:

layout_height="20px"android:

layout_x="40px"android:

layout_y="260px"

android:

progressDrawable="@drawable/seekbar_style"android:

thumb="@drawable/thumb"

android:

paddingLeft="18px"android:

paddingRight="15px"android:

paddingTop="5px"android:

paddingBottom="5px"android:

progress="0"

android:

max="100"android:

secondaryProgress="0">

上面代码中有参数android:

thumb="@drawable/thumb"为音轨游标的图片资源android:

progressDrawable="@drawable/seekbar_style"为SeekBar条的风格style。

引用了drawable中的seekbay_style.xml文件,seekbay_style.Xml是自定义的配置文件,算法如下:

xmlversion="1.0"encoding="utf-8"?

>

android="

id="@android:

id/background">

radius="5dip"/>

startColor="#ff9d9e9d"android:

centerColor="#ff5a5d5a"android:

centerY="0.75"android:

endColor="#ff747674"android:

angle="270"/>

id="@android:

id/secondaryProgress">

radius="5dip"/>

startColor="#80ffd300"android:

centerColor="#80ffb600"android:

centerY="0.75"

android:

endColor="#a0ffcb00"android:

angle="270"/>

id="@android:

id/progress">

radius="5dip"/>

startColor="#ff0099CC"android:

centerColor="#ff3399CC"android:

centerY="0.75"android:

endColor="#ff6699CC"android:

angle="270"/>

配置文件中三个Item项依次决定了SeekBar的三层背景,从最下层的灰色到最上层的蓝色。

通过各种属性设置了SeekBar的倾斜度,两端圆半径,角度,中心位置,起始,中心和结束的颜色,游标的起始位置。

通过这些属性设置,就自定义一个如上图一的SeekBar音轨.

播放器最重要的一部分就是音轨与歌曲进度同步的实现。

音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度(图5.3)

图7.3

音轨对象SeekBar在歌曲刚开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。

SeekBar.setProgress

(1)设置游标的起始进度为1。

然后程序运行如下代码:

privateRunnablethread_One=newRunnable(){//线程

publicvoidrun(){

intcurrently_Progress=seekBar.getProgress()+1000;seekBar.setProgress(currently_Progress);

currently_Time.setText(getFileTime(mplayer.getCurrentPosition()));showLrcTwo(lrc_time,lrc_word);handler.postDelayed(thread_One,1000);}};

Android的线程的开始是通过Handler类来进行的,Handler类是线程与线程之间通信的桥梁,实现Runnable接口会实现里面的run方法,当线程开始的时候,Runnable中的run方法会向Handler发一个Message消息,这样,Handler类就可以接收到run方法发送过来的不同的消息进行不同的代码处理。

这样就达到了各线程之间的通信。

要启动一个线程调用Handler的方法postDelayed(Runnable,1000)表示线程睡眠时间是1000ms。

以上代码意思是让播放歌曲的线程每隔1000ms,即每1秒对音轨的TextView重新设置时间且让进度条前进1秒的进度。

对音轨进行刷新。

这样就实现了歌词同步功能SeekBar有一个监听器,该监听器的作用是一直保持着对进度条的监听,当我们用鼠标向SeekBar的各位置进行点击时,它会自动监听其位置,进行相应的位置显示。

这也是进度条上的游标会不停的移动和歌词时间会不停的变动的原因。

7.1.3播放器播放、暂停、停止等功能

图7.4

如图5.4所示:

各按钮水平放置,用的是布局中的线性布局LinearLayout,用方法setOrientation(horizontal);将其设置为水平。

LinearLayout中依次放置播放,暂停,停止,上、下一曲按钮属性。

配置文件代码结构如下:

android的媒体播放原理:

android源程序已经为我们封装好了一个接口类,叫MediaPlayer。

该接口在执行行需要一个数据源,通过如下四个步骤:

第一步:

MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。

第二步:

传入歌曲数据源,这里也是一个数据流MediaPlayer.setDataSource(Stringpath);参数需要传一个路径,该接口类在收到路径后将其转化为数据源。

第三步:

准备播放数据源,调用方法MediaPlayer.Prepare();

第四步:

MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序有关,需要用MediaPlayer.Stop()方法让其停止或MediaPlayer.Start();让其启动;

歌曲数据源的获得:

要获得数据源,需要我们提供给接口类一个歌曲存放路径,而这个路径已经被事先放到数据库里了,我们只需要进行数据库进行操作。

将里面的路径取出。

这里将调用PlayRackActivity的一个方法query();代码算法如下:

publicStringquery(){

ContentResolv

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

当前位置:首页 > 解决方案 > 解决方案

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

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