MP3音乐播放器论文 下载本文

青岛理工大学毕业论文(设计)

第5章 音乐播放器的详细设计

本MP3播放器设计时主要遵循面向对象原则,面向对象即:从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。

在面对对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。

面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

5.1 类关系

针对本MP3播放器,可以设计出不同的对象,这里我们称之为类,具体的可设置为五个包,第一个包主要包括:常量类,下载服务类,当地列表界面类,主界面类,网络列表界面类,播放界面类,播放服务类,开始界面类,这个包主要

21

青岛理工大学毕业论文(设计)

负责界面的创建和一些后台服务,具体分配情况如图5.1所示。第二个包download包主要包括:SD卡操作类,和下载类,主要负责下载网络资源,并把下载到的MP3文件写到SD卡中,具体关系如图5.2所示。第三个包lrc包主要包括一个歌词文件处理类,负责处理歌词文件歌曲播放时同步显示歌词。第四个包model包定义了MP3info实体类,并实现了序列化接口,方便MP3信息在各个类之间的传递,具体关系如图5.3所示。第五个包xml包定义了一个xml解析器类,主要负责xml文件的解析工作,得到网络MP3文件列表。

Mp3ListActivity - Abort:list - mp3Infos:list - UPDATA:list +buildSimpleAdapter(List)():SimpleAdapter +dowmloadXml(String()):String +isOpenNetWorld():boolean +onCreate(Bindle()):Bindler +onListItemClick(ListView,view,int,long()):void +onOptionItemSeclected(MenuItem()):boolean +pauser(String()):list startActivity -hanlder:Hanlder +dialog():void +onCreate(Bundle()):void +onKeyDown(int,KeyEvent()):void downloadService +onBind(Intnet()):lBinder +onStartCommand(Intnet intent,int flags,intStartId()):int -intentFilter:int PlayerActivity AppContent -PlayerMsg:int -URL:int localMp3listActivity -mp3infos:List +onCreate(Bindle()):Bindler +onListItemClick(ListView,view,int,long()):void +onResume():void -isFirstPlaying:boolean -isPlaying:boolean -lastButton:Button -IrcTextView:TextView -mediaPlayer:mediaPlayer -mp3info:mp3info -mp3infos:List -nextButton:Button -playingPosition:int -playingTime:int -receiver:int -SDCardRoot:String -seekBar:SeekBar -startButton:Button -timeTextView:textView +getIntentFileter():IntentFilter +getMpeFiles():List +onCreate(Bundle()):void +onPause():void +onResume():void +play(mp3Info()):void MainActivity +onCreate(Bundle()):void PlayerActivity -begin:long -currentTimeMill:long -durationTime:int -handler:Handler -isPause:boolean -isPlaying:boolean -mediaPlayer:mediaPlayer -massage:String -nextTimeMill:long -pauseTimeMills:long -queue:ArrayList -updateTimeCallBack +onBind(Intent()):binder +onStartCommand(Intent,int,int()):int 图5.1 Mp3Player包类关系图

22

青岛理工大学毕业论文(设计)

5.2 各模块详细设计

音乐播放器包括欢迎界面和主界面,网络文件列表的获取,MP3文件的下载与写SD卡操作,MP3文件的播放等几个模块。 5.2.1 播放器的欢迎界面和主要界面的设计和说明 1.页面设计

Android的每一个可视化界面,都有其唯一的布局配置文件,该文件里面有各种布局方式,各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。 2.代码编写

在介绍各个具体的界面之前先要声明一下要想以列表形式显示一组对象的布局文件,在这个文件中必须包含一个ListView对象,其最简单的实现形式代码一

23

青岛理工大学毕业论文(设计)

般如下:ListView android:id=\ android:layout_width=\ android:layout_height=\ android:drawSelectorOnTop=\ android:scrollbars=\>\

Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法,如下代码:

@Override Public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.play_rack);} 该方法主要执行界面的初始化操作,Activity有个设置布局的方法:Context.setContentView(layoutResID),参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为play_rack。

play_rack.xml

下:

在绝对布局下嵌套两种线性布局,第一个实现了标题和歌曲名的显示位置,通过布局设置绝对坐标来控制标题的位置。每个布局内可以放置多种Widget(窗体部件)例如:等。每个Widget内有多种属性,可以设置该Widget的坐标,大小,背景和颜色等参数。在播放界面中,歌词显示为居中,实现方法代码如

24