音乐播放器的设计与实现设计.docx

上传人:b****5 文档编号:7969639 上传时间:2023-01-27 格式:DOCX 页数:32 大小:1.11MB
下载 相关 举报
音乐播放器的设计与实现设计.docx_第1页
第1页 / 共32页
音乐播放器的设计与实现设计.docx_第2页
第2页 / 共32页
音乐播放器的设计与实现设计.docx_第3页
第3页 / 共32页
音乐播放器的设计与实现设计.docx_第4页
第4页 / 共32页
音乐播放器的设计与实现设计.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

音乐播放器的设计与实现设计.docx

《音乐播放器的设计与实现设计.docx》由会员分享,可在线阅读,更多相关《音乐播放器的设计与实现设计.docx(32页珍藏版)》请在冰豆网上搜索。

音乐播放器的设计与实现设计.docx

音乐播放器的设计与实现设计

音乐播放器的设计与实现设计

 

Android音乐播放器的设计与实现

(电子信息工程系软件技术111班王永军)

摘要:

本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse开发工具对播放器代码进行编写。

同时给出了详细的系统设计过程、部分界面截图及主要的功能流程图,该音乐播放器集播放、暂停、停止、上一首、下一首、歌词显示等功能于一体,性能良好,在Android系统中能独立运行。

实验证明,基于android平台的软件开发简单,使用方便简洁,必将成为未来几年的发展方向,具有普遍意义。

关键词:

Android;Java;Eclipse;音乐播放器

一、前言

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

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

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

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

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

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

针对以上各种弊端,选择了开发多语种的音频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户听歌的需求。

现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计的实现的这主要功能是播放MP3等音乐文件,并且能够控制播放器播放,暂停,停止,上一曲,下一曲。

界面简单,操作简单。

本项目是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的播放器,让手机主人随时随地处于音乐的旋律中。

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

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

二、系统分析

(一)系统需求分析

1.需求分析

本系统属于用户常用的音乐播放器。

可以方便用户平时对音乐文件的操作。

本系统应达到以下目标:

(1)软件采用人机交互的方式,界面美观友好,操作灵活、方便、富有个性化。

(2)能够对音乐文件进行有效的管理。

(3)系统应最大限度地实现易维护性和易操作性。

2.软件的可行性研究

(1)经济上的可行性

Android 是Google历经数年和投资数亿美元开发出来的智能手机系统,是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。

随着各大移动终端生产商大力开发和生产基于 Android 的移动智能设备, Android迅速得到业界和社会的认可,并成为整个产业的热点,基于 Android 平台的各类人才逐渐成为各大企业竞相争夺的焦点。

而且 Android 是一个开放的系统,不管是企业还是个人都可以参与来表达自己的创意和想法。

(2)技术上的可行性

Google发起了围绕Android的组织——开放手机联盟,其英文全称为“OpenHandsetAlliance”。

它采用了软件堆层(softwarestack,又名以软件叠层)的架构,主要分为三部分。

底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。

(3)操作上的可行性

本系统采用Android框架,可以在eclipse中安装Android开发插件,使用Android模拟器也可以使用任意Android终端。

模拟器和真正的Android手机没有太大区别,人们对手机操作早已熟悉。

(二)系统功能需求分析

1.用例图及用例描述

功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了用户的业务需求。

用户需求文档描述了用户使用产品必须要完成的任务。

针对音乐播放器分别对音乐播放功能进行详细的调研和分析,总结出如用户需求信息,其用例图如图2.1所示。

图2.1播放器用例图

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

(1)用例名称:

播放

参与者:

用户

目标:

使得用户可以播放在播放列表中选中的歌曲

前置条件:

播放器正在运行

基本事件流:

1.用户单击“播放”按钮

2.播放器将播放列表中的当前的歌曲

(2)用例名称:

暂停

参与者:

用户

目标:

使得用户可以暂停正在播放的歌曲

前置条件:

歌曲正在播放且未停止和暂停

基本事件流:

1.用户单击“暂停”按钮

2.播放器将暂停当前的歌曲

(3)用例名称:

上一首/下一首

参与者:

用户

目标:

使得用户可以听上一首或下一首歌曲

前置条件:

歌曲正在播放或暂停

基本事件流:

1.用户单击“上一首或下一首”按钮

2.播放器将播放上一首或下一首歌曲

(4)用例名称:

播放列表

参与者:

用户

目标:

使得用户可以进入播放清单

前置条件:

程序在运行

基本事件流:

播放器进入播放列表

(5)用例名称:

歌词显示

参与者:

用户

目标:

使得程序进入播放器歌词设置状态

前置条件:

程序运行在播设定界面

基本事件流:

播放器显示或关闭歌词

2.音乐播放器的时序图

播放器对象之间的交互情况如图2.2所示。

图2.2音乐播放器的时序图

(三)业务流程分析

播放器工作流程图如图2.3所示。

图2.3音乐播放器流程图

三、系统设计

(一)总体设计

根据播放器的实现目标,可获得播放器的基本需求,以下从不同角度来描述系统的需求,系统的功能需求,分成三部分来概括,即播放器的基本控制需求,播放列表管理需求和播放器友好性需求,如图3.1所示为应用功能结构图分析:

图3.1功能结构图

(二)歌曲列表模块设计

程序在初始化界面时,从系统数据库获得SD内所有音乐信息,将这些得到的信息构建到列表呈现给用户,流程如图3.2所示:

图3.2歌曲列表模块流程图

(三)播放控制模块设计

播放控制模块是整个设计控制的核心部分,用户只需通过简单的触摸操作就可以实现对歌曲播放的控制,如图3.3所示:

图3.3播放控制模块流程图

(四)播放器设置模块设计

播放器设置包括播放器背景皮肤更换以及播放器定时睡眠,如图3.4所示:

图3.4播放器设置模块流程图

(五)数据库设计

1.数据库及字段属性设计

(1)字段设计(表、图)

file_table主要是保存歌曲名字、类型、路径。

字段说明:

Id歌曲id号fileName歌曲名字filePath歌曲路径sort歌曲类型(表3.1、图3.5)

Android自带一个MediaStore封闭类专门来存储媒体信息,通过UriEXTERNAL_CONTENT_URI来访问SDcard中的歌曲详细信息。

存放媒体信息如TITLE(标题)、ARTIST(艺术家)、ALBUM(专辑)、SIZE(大小)(表3.2、图3.5)

图3.5歌曲列表

图3.6歌曲详细

(2)音乐播放器E-R图

音乐播放器E-R图(图3.6)

图3.7E-R图

2.数据库连接

(1)创建数据库

Android提供了标准的数据库创建方式。

继承SQLiteOpenHelper,实现onCreate和onUpgrade两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:

/**游标***/

privateCursorc=null;

/**建立表的语句**/

privatestaticfinalStringCREATE_TAB="createtable"+"music(_idintegerprimarykeyautoincrement,music_idinteger,clicksinteger,"+"latesttext)";

/**列名***/

privatestaticfinalStringTAB_NAME="music";

/**数据库***/

privateSQLiteDatabasedb=null;

/***构造函数**/

publicDBHelper(Contextcontext,Stringname,CursorFactoryfactory,

intversion){

super(context,name,factory,version);

}

/***构造一个数据库,如果没有就创建一个数据库***/

@Override

publicvoidonCreate(SQLiteDatabasedb){

this.db=db;

db.execSQL(CREATE_TAB);}

(2)操作数据库

Android对数据库的操作主要有插入、删除、更新、查询操作,在进行任何操作时都必须指定一个Uri,才能对相应的表进行数据操作。

/**插入数据**/

publicvoidinsert(ContentValuesvalues){

SQLiteDatabasedb=getWritableDatabase();

db.insert(TAB_NAME,null,values);

db.close();

}

/***更新数据*/

publicvoidupdate(ContentValuesvalues,intid){

SQLiteDatabasedb=getWritableDatabase();

db.update(TAB_NAME,values,"music_id="+id,null);

db.close();

}

/**删除数据*/

publicvoiddelete(intid){

if(db==null){

db=getWritableDatabase();

}

db.delete(TAB_NAME,"music_id=?

",newString[]{String.valueOf(id)});}

(3)数据显示

程序是利用Cursor游标类指向数据表中的某一项,然后进行查询数据,用Log日志显示出来

/***查找数据*/

publicCursorquery(intid){

SQLiteDatabasedb=getReadableDatabase();

c=db.query(TAB_NAME,null,"music_id=?

",newString[]{String.valueOf(id)},null,null,null);

db.close();

returnc;

}

四、系统实现

(一)主界面

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

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

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

PublicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

);}

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

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

欢迎界面结束以后进入主界面图4.1所示,主界面主要采用相对布局(RelativeLayout)。

图4.1主界面

部分布局代码如下:

android:

id="@+id/rl_player_topbar"

android:

layout_width="fill_parent"

android:

layout_height="50dp"

android:

layout_alignParentTop="true"

android:

background="@drawable/bg_media_library_topbar">

android:

id="@+id/ibtn_player_list"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignParentLeft="true"

android:

layout_margin="5dp"

android:

background="@drawable/player_btn_list"/>

android:

id="@+id/tv_player_song_info"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_centerHorizontal="true"

android:

layout_toLeftOf="@+id/ibtn_player_voice"

android:

layout_toRightOf="@id/ibtn_player_list"

android:

ellipsize="marquee"

android:

focusable="true"

android:

focusableInTouchMode="true"

android:

gravity="center_horizontal"

android:

lines="1"

android:

marqueeRepeatLimit="marquee_forever"

android:

singleLine="true"

android:

text="显示歌名"

android:

textColor="@android:

color/white"

android:

textSize="19sp"

android:

textStyle="bold"/>

android:

id="@+id/tv_player_singer_info"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

layout_below="@id/tv_player_song_info"

android:

layout_centerHorizontal="true"

android:

layout_toLeftOf="@+id/ibtn_player_voice"

android:

layout_toRightOf="@id/ibtn_player_list"

android:

ellipsize="marquee"

android:

focusable="true"

android:

focusableInTouchMode="true"

android:

marqueeRepeatLimit="marquee_forever"

android:

paddingLeft="71dip"

android:

singleLine="true"

android:

text="显示歌手"

android:

textColor="@android:

color/white"

android:

textSize="15sp"/>

android:

id="@+id/ibtn_player_voice"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_alignParentRight="true"

android:

background="@drawable/player_btn_voice"/>

1.播放音轨SeekBar

在main.xml文件中,SeekBar的代码如下:

android:

id="@+id/sb_player_voice"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

layout_centerVertical="true"

android:

layout_toLeftOf="@id/iv_player_max_voice"

android:

layout_toRightOf="@id/iv_player_min_voice"

android:

background="@drawable/voice_seekbar_bg"

android:

paddingLeft="5dp"

android:

paddingRight="5dp"

android:

progressDrawable="@drawable/voice_seekbar_progress"

android:

thumb="@drawable/voice_seekbar_thumb"/>

上面代码中有参数android:

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

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

引用了drawable中的voice_seekbar_progress.xml文件,voice_seekbar_progress.xml是自定义的配置文件,代码如下:

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

>

android=>

id="@android:

id/background"

android:

drawable="@drawable/voice_seekbar_bg">

id="@android:

id/progress">

drawable="@drawable/voice_seekbar_one"/>

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

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

图4.2播放音轨

音轨对象SeekBar部分代码如下:

privatevoidShowSeekBar(){

seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){

@Override

publicvoidonStopTrackingTouch(SeekBarseekBar){

}

@Override

publicvoidonStartTrackingTouch(SeekBarseekBar){

}

@Override

publicvoidonProgressChanged(SeekBarseekBar,intprogress,

booleanfromUser){

if(fromUser){

seekbar_change(progress);

}elseif(seekBar.getId()==R.id.sb_player_voice){

//设置音量

am.setStreamVolume(AudioManager.STREAM_MUSIC,

progress,0);

}

}

});

}

/**

*进度条改变事件

*/

privatevoidseekbar_change(intprogress){

Intentintent=newIntent();

intent.setAction();

intent.putExtra("op",PROGRESS_CHANGE);

intent.putExtra("progress",progress);

startService(intent);

}

2.播放调节功能实现

各按钮水平放置,从左到右依次是上一首、播放、下一首功能按钮。

用的是布局中的线性布局LinearLayout,;将其设置为水平,如图4.3所示:

图4.3播放功能按钮

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

配置文件代码结构如下:

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

layout_centerVertical="true"

android:

layout_toLeftOf="@id/ibtn_player_control_mode"android:

layout_toRightOf="@id/ibtn_player_control_menu"

android:

gravity="center"

android:

orientation="horizontal">

android:

id="@+id/ibtn_player_control_pre"

android:

layout_width="75dip"

android:

layout_height="58dip"

android:

background="@drawable/player_btn_player_pre"/>

android:

id="@+id/ibtn_player_control_play"

android:

layout_width="75dip"

android:

layout_height="58dip"

android

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

当前位置:首页 > 考试认证 > 交规考试

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

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