基于Android音乐播放器详细设计.docx

上传人:b****5 文档编号:29685828 上传时间:2023-07-26 格式:DOCX 页数:17 大小:265.95KB
下载 相关 举报
基于Android音乐播放器详细设计.docx_第1页
第1页 / 共17页
基于Android音乐播放器详细设计.docx_第2页
第2页 / 共17页
基于Android音乐播放器详细设计.docx_第3页
第3页 / 共17页
基于Android音乐播放器详细设计.docx_第4页
第4页 / 共17页
基于Android音乐播放器详细设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于Android音乐播放器详细设计.docx

《基于Android音乐播放器详细设计.docx》由会员分享,可在线阅读,更多相关《基于Android音乐播放器详细设计.docx(17页珍藏版)》请在冰豆网上搜索。

基于Android音乐播放器详细设计.docx

基于Android音乐播放器详细设计

 

3组:

梁锦王燕

雪飞卫妙珠

雷宁项飞

 

1.1项目介绍

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

同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对设计过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、等功能于一体,性能良好,在Android系统中能独立运行。

本设计简单实用,没有过于花哨的功能与界面,简单的功能不仅仅操作方便,还为系统资源节省空间。

在Android系统下开发一款多媒体播放器,并学习多媒体技术,熟悉软件开发流程。

Android多媒体框架播放机制,包括:

OpenCore,PacketVideo(PV)。

UI设计与制作,包括动态界面布局,浮动控制栏,自定义对话框等。

媒体文件播放与控制,包括音视频文件的播放,后台播放媒体文件等。

媒体文件的信息管理,包括媒体文件信息的扫描,存取与获取,数据库操作等。

播放信息和用户配置参数的保存与加载。

在Android模拟器/真机上实现对媒体文件的播放。

1.1.1播放器的基本控制需求

根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用如下图4-1来描述,系统的功能需求。

(图4-1)

从以上图4-1中我们可以一目了然地看出本项目的控制需求,其中主要包括了播放、暂停、音量调节、新增、上一首,下一首等功能。

1.1.2项目流程

下图4-2是项目设计的流程图,是本项目设计的重要关键点之一,此流程图展示了整个项目的逻辑与算法。

是本项目的核心技术之一。

(图4-2)

不难看出,本项目使用到了3个主要用户界面,分别是播放主界面,播放列表界面以及播放界面。

通过图4-2,我们可以清晰的,一目了然的读懂整个设计的思路以及各个功能的定位。

从而,此流程图更加方便读者了解该项目的功能实现,设计思路,层次结构以及各个程序之间的关系等。

1.1.3UI界面设计

Android的四大基本组件:

Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(容提供者),各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转[20]

Android的五大布局方式:

LinearLayout(线性布局)FrameLayout(帧布局)TableLayout(表格布局)AbsoluteLayout(绝对布局)RelativeLayout(相对布局)。

[21]

五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。

Android的线程,以及线程之间通信的中介:

Handler类

Android数据库:

在第三章已经介绍过了。

这里不再介绍

Android配置文件:

AndroidManifest.Xml及res资源文件中各种属性布局方式引用的资源等。

Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。

我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持800X600的分辨率。

1.1.4项目程序结构

Android工程基本结构目录包括:

src(源代码)、gen(Android系统自动生成的常量)、Res(资源文件):

主要存放程序界面的布局配置(.xml)文件和图片资源。

AndroidMainfes.xml是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转。

如图4.3,写明了Android资源的类型和布局

(图4.3)

下图4.4-4.7为音乐播放器代码结构和各界面的配置文件,图像资源等,图4.4为一个Android工程所必须的结构,图4.5为该播放器的.Java文件,图4.6为播放器所用到的字符串,字体大小,字的颜色等配置文件,图4.7为该播放器的图片资源。

(图4.4)(图4.5)

(图4.6)(图4.7)

1.1.5项目Manifest.xml文件

Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个程序能够正常运行的核心,它里面包含了AndroidSDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。

任何一个AndroidManifest.Xml文件的格式都应为:

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

>

Android系统有一个编码的规定,支持的编码是"utf-8",当程序中出现乱码是,我们须将其编码格式转化为"utf-8".在AndroidManifest.xml中会在第一行声明一句:

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

>。

它是该系统支持的版本和编码。

在第二行定义了我们需要使用的架构,该架构来自xmlns:

android="schemas.android./apk/res/android"

xmlns(XMLnamespace)是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个xmlns,否则程序中的所使用的所有资源将无法找到。

如下程序,在application元素我们定义android:

icon="drawable/icon"

android:

label="string/app_name",android:

icon是程序在手机中显示的图片,我们运用drawable/icon表示了对res/drawable目录下的icon.png的引用。

string/app_name表示了对res/value目录下string.Xml中定义的app_name参数的引用。

android:

icon="drawable/music"

android:

label="string/app_name">

android:

label="string/app_name"

android:

name=".MainActivity">

name="android.intent.action.MAIN"/>

name="android.intent.category.LAUNCHER"/>

name="android.intent.action.CREATE_SHORTCUT">

name="..karl.music.MainActivity">

这是系统确定的首先要启动的Activity是PlayRackActivity。

在intent-filter选项中,有action和category等等属性,我们需要定义action的值为android.intent.action.MAIN,category的值为android.intent.category.LAUNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的Activity。

当我们需要通过一个组件触发另一个组件时,我们将设定action和category的其它属性值,系统会根据我们设定的属性值去AndroidManifest.Xml的application中寻找标识,任何一个Activity的action和category是唯一,所以程序在任何时候都能唯一启动一个Activity,这样,不同的Activity之间的跳转就实现了。

在AndroidManifest.Xml中有一个根结点,它是我们需要定义的ADT版本,例如我们将其值设定为android:

minSdkVersion="8",则表示此Android工程所用的版本为1.6,Android还有1.1、1.5、1.6、2.0、2.1这几个版本。

如果我们需要对网络进行访问,比如打开一个网页,刚我还需要设置一个网络访问权限uses-permission,将其的值设置为android:

name="android.permission.INTERNET,我们就可以访问网络了。

当然uses-permission还有很多其它的权限,例如GPS定位权限,浏览器数据存取权限com.android.browser.permission.READ_HISTORY_BOOKMARKS等等。

当程序的任何一个组件要用到时,都必须在AndroidManifest.Xml文件中声明。

四大组件要使用前都需要声明,其声明方式如下:

其中声明provider时还需要声明其授权authorities。

每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性。

过滤器intent-filter有两种启动方式来启动界面:

(1)显示方式

显示方式是在代码中的直接启动组件,启动时会声明Intent,在它的构造方法Intent(组件1,组件2)中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件。

(2)隐式方式

隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。

这些属性是在AndroidManifest.Xml文件中声明的。

两种启动方式都可以通过程序setAction(ACTION常量)和startActivity(intent)或配置文件两种方式来实现组件的跳转。

1.2创建项目及具体结构分析

本节着重分析项目结构中每一个功能的功能设计与创建方法。

包括了项目的创建,界面的设计以及对项目结构的分析。

1.2.1项目的创建

可以使用Eclipse插件创建一个简单的Android程序。

在创建新项目时需要注意输入以下信息:

Projectname(项目名称):

chengchengMusicPlayer

BuildTarget(需要的版本):

Android1.5

Applicationname(应用名称):

MusicPlayer1

Packagename(包名):

..karl.music

CreateActivity(Java项目名称):

MusicPlayer

在实际程序中,我们可以定义自己的名称。

其中软件包名称尤为重要。

系统中的每个应用程序都必须具有唯一的软件包名。

因为在很多地方都会用到软件包名,所以一旦设定好软件包名就不要随意修改它。

1.2.2界面设置

配置文件setting.Xml布局结构如下:

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

>

最外层的LinearLayout里面嵌套多层LineaLayout,子LinearLayout里面嵌套着单选按钮RatioGroup和开关按钮ToggleButton。

RatioGroup里面嵌套着3个RatioButton,即界面上显示的(单曲循环、随机播放、顺序播放)。

播放模式用的是一个组件RadioGroup,这个组件有单项选择的功能,里面有RadioButton项,多个RadioButton项只能同时选中一个,该播放器播放模式有单曲循环,随机播放,顺序播放等功能。

MediaPlayer有一个监听器,它监听着歌曲是否正在播放或者是否播放完成,当歌曲播放完成时,会触发方法OnCompletionListener(),在该方法里面可以处理歌曲播放完成后的操作。

RadioGroup可以进行单项选择操作。

通过RadioButton.isChecked(),如果返回true,刚该项被选中。

1.2.3结构分析

(1)播放器的.Java文件

.Java文件是本项目的主要功能实现程序。

在cn..karl.music程序包中的以下文件:

AlbumsActivity.java,ArtistActivity.java,ItemActivity.java,MainActivity.java,MusicActivity.java,MusicService.java,SongActivity.java

其中,AlbumsActivity.java文件主要描述并定义了专辑的视图界面以及功能作用。

ArtistActivity.java文件主要描述并定义了艺术家的视图界面以及功能作用。

ItemActivity.java文件主要描述并定义了歌曲项目的视图界面以及功能作用。

MainActivity.java定义并实现了记忆上一次运行该项目的动作,在下一次打开运行后继续该操作。

MusicActivity.java文件主要描述并定义了音乐播放器主界面的视图界面以及功能作用。

MusicService.java是音乐播放器在后台运行的程序。

SongActivity.java文件主要描述并定义了最近播放歌曲的记忆功能。

(2)播放器的图片资源

播放器的图片资源主要在res文件夹中。

当然也可以通过更换res中的图片来更换音乐播放器各个UI界面的背景或其他按钮图片。

对于不同的界面,比如播放界面,歌曲列表界面,艺术家界面或者最近播放界面,都快可以设置不同的背景图片,这就使整个播放器在色调方面不显得那么单一了。

1.3设计成果及分析

在经过多次的程序调试及模拟器和真机测试后,本音乐播放器的设计成果及界面效果图会在本节中做概要介绍。

1.3.1设计成果

(1)音乐播放界面如下图5.1所示:

(图5.1)

(2)歌曲列表界面如下图5.2所示

(图5.2)

(3)艺术家界面如下图5.3所示

(图5.3)

上述便是在经过多次的程序调试及模拟器和真机测试后,本音乐播放器的设计成果及界面效果图。

1.3.2问题及分析

(1)模拟器占用存问题

在一开始对程序进行调试的时候,偶尔会遇到计算机提示:

系统C盘空间不足之类的信息,这是由于Android模拟器每次运行时都会临时生成几个.tmp临时文件。

一段时间后,其可能占用几GB的磁盘空间。

所以,需要手工定期清理一下,清理目录为C:

\DocumentsandSetting\Administrator\LocalSetting\Temp\AndroidEmulator文件夹下的容。

在遇见此存问题时,清理此目录临时文件后,模拟器便能正常运行了。

(2)程序问题

在调试程序过程中,总是遇见Activity与Manifest之间通信有故障的相关问题,后经与老师同学讨论后,发现是AndroidManifest.xml文件中,漏了将MusicActivity定义入Manifest程序中。

name=".ArtistActivity">

name=".SongsActivity">

name=".ItemActivity">

name=".AlbumsActivity">

name=".MusicActivity">

name=".MusicService">

(3)歌曲名称及SD文件夹不能显示的问题

在运行程序后,有时歌曲名称,专辑,表演者等信息会出现乱码,预测估计是模拟器自带的字符串有错误。

但由于时间问题,此问题到现在还未解决。

另外,有时在运行程序的时候,会显示SD卡未能读取的错误,但时而又会正常工作,推测可能是模拟器稳定性问题。

以上这两点问题都需要在之后慢慢的去琢磨推敲原因。

 

6结论

(1)通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。

开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。

而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。

(2)音乐播放器系统实现了播放器的基本功能:

播放,暂停、停止、上/下一首、音量调节、文件浏览器、播放列表查询等功能。

运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。

是以Java语言编写+SQLite数据库支持+SharePreference配置文件的组合方式进行数据管理。

实现了音乐播放器的系统编程。

(3)本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclipse1.5+Java语言的支持,AndroidDevelopmentTool的插件,和AndroidSDK2.2版本的全面结合,才使整个音乐播放器系统得以实现。

(4)总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。

 

值此论文完成之际,衷心感我的导师金一鸣老师,在毕业设计的过程中给予我悉心的指导和帮助,他对待学识的严谨态度和作风让我感触颇深。

感雯老师,作为我班的辅导员,在大学生活期间,给予同学们的帮助和教导。

感2008届电子科学与技术的全体同学,和我一起度过了难忘的四年时光。

感我的爸爸妈妈,将我培养成人,教育我,帮助我。

最后,对审批此论文的老师表示深深地意。

 

参考文献

[1]雍俊海编著.Java程序设计习题集[M].:

清华大学,2006

[2]JasminBlanchette,MarkSummerfield.C++GUIProgrammingwithJava.[M]Publisher:

PrenticeHallPTR,January152004.15~25

[3]朱福喜编著.Java语言习题与解析[M].:

清华大学,2006

[4]文靖编著.Java程序设计基础与上机指导[M].:

清华大学,2006

[5]吴其庆编著.Java程序设计实例教程[M].:

冶金工业,2006

[6]王克宏著.Java技术教程(基础篇)[M].:

高等教育,2002.04

[7]JavaEye论坛..javaeye./forums.2010-04-15.

[8]TrolltechInc.AndroidReferenceDocumentation3.3.2.qt.nokia./title-.2004年

[9]耿祥义,Java大学实用教程[M],:

电子工业,2005.3

[10]丰盛主编.Android应用开发揭秘[M].:

机械工业,2010-01-25

[11]eoe.Android开发社区..eoeandroid./.2010-04-10.

[12]高焕堂编.Android应用框架原理与程式设计(第三版)[M].:

清华大学,2008-10-03

[13]shaneCondor,LaurenDecry.Android移动应用开发从入门到精通[M].:

人民邮电,2010

[14]G.N.Wassef.Lipoprotein(a)inandroidobesityandNIDDM:

anewmemberin‘themetabolicsyndrome’[M].Biomedecine&Pharmacotherapy,Volume53,Issue10,December1999,Page462-465.

[15]FedericoPerfetto,RobertoTarquini,GermaineComealissen,GiorgioMello,AlessioTempestini,PaolaGaudiano,FrancescoMancuso,FranzHalberg.Circadianphasedifferenceofleptininandroidversusgynoidobesity[M].Peptides,Volume25,Issue8,Auguest2004,Page1297-1306.

[16]NesrineAttia,NatalieFournier,BenoitVedie,MicheleCambillau,PhilippeBeaune,OlivierZiegler,AlainGrynbery,Jean-LouisPaul,BrunoGuerci[M].ImpactofAndroidoverweightorobesityandinsulinresistanceonbasalandpostprandialSR-BIandABCA1-mediatedserumcholesteroleffluxcapacities.Atherosclerosis,Volume209,Issue1,January1st,2008.Pages95-103.

[17]AlessandroDistefano,Gianluig

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

当前位置:首页 > 高中教育 > 其它课程

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

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