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

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

3组:梁锦21209010417 王燕21209010414 李雪飞21209010415 卫妙珠21209010419 雷宁21209010418 曹项飞21209010416

目录

1音乐播放器设计.......................................................................................... 错误!未定义书签。

1.1项目介绍 (1)

1.1.1播放器的基本控制需求 (1)

1.1.2项目流程 (2)

1.1.3UI界面设计 (3)

1.1.4项目程序结构 (4)

1.1.5项目Manifest.xml文件 (5)

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

1.2.1项目的创建 (8)

1.2.2界面设置 (8)

1.2.3结构分析 (9)

1.3 设计成果及分析 (9)

1.3.1 设计成果 (10)

1.3.2问题及分析 (12)

1.1项目介绍

本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对设计过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、等功能于一体,性能良好,在Android系统中能独立运行。本设计简单实用,没有过于花哨的功能与界面,简单的功能不仅仅操作方便,还为系统资源节省空间。

在Android系统下开发一款多媒体播放器,并学习多媒体技术,熟悉软件开发流程。Android多媒体框架播放机制,包括:Open Core,Packet Video(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文件,此配置文件是整个程序能够正常运行的核心,它里面包含了Android SDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。任何一个AndroidManifest.Xml文件的格式都应为:

Android系统有一个编码的规定,支持的编码是"utf-8",当程序中出现乱码是,我们须将其编码格式转化为"utf-8".在AndroidManifest.xml中会在第一行声明一句:。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自xmlns:android="https://www.360docs.net/doc/ca8649155.html,/apk/res/android"

xmlns(XML namespace)是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个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" >

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

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

在intent-filter选项中,有action和category等等属性,我们需要定义action的值为android.intent.action.MAIN,category的值为https://www.360docs.net/doc/ca8649155.html,UNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的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程序。

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

Project name(项目名称): chengcheng Music Player

Build Target(需要的版本): Android 1.5

Application name(应用名称): Music Player1

Package name(包名): https://www.360docs.net/doc/ca8649155.html,.karl.music

Create Activity(Java项目名称): Music Player

在实际程序中,我们可以定义自己的名称。其中软件包名称尤为重要。系统中的每个应用程序都必须具有唯一的软件包名。因为在很多地方都会用到软件包名,所以一旦设定好软件包名就不要随意修改它。

1.2.2界面设置

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

最外层的LinearLayout里面嵌套多层LineaLayout,子LinearLayout里面嵌套着单选按

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

播放模式用的是一个组件RadioGroup,这个组件有单项选择的功能,里面有RadioButton 项,多个RadioButton项只能同时选中一个,该播放器播放模式有单曲循环,随机播放,顺序播放等功能。MediaPlayer有一个监听器,它监听着歌曲是否正在播放或者是否播放完成,当歌曲播放完成时,会触发方法OnCompletionListener(),在该方法里面可以处理歌曲播放完成后的操作。RadioGroup可以进行单项选择操作。

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

1.2.3结构分析

(1)播放器的.Java文件

.Java文件是本项目的主要功能实现程序。在https://www.360docs.net/doc/ca8649155.html,.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:\Documents and Setting\Administrator\Local Setting\Temp\AndroidEmulator 文件夹下的内容。在遇见此内存问题时,清理此目录临时文件后,模拟器便能正常运行了。

(2)程序问题

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

序中。

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

在运行程序后,有时歌曲名称,专辑,表演者等信息会出现乱码,预测估计是模拟器自带的字符串有错误。但由于时间问题,此问题到现在还未解决。

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

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

6结论

(1) 通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。

(2) 音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下一首、音量调节、文件浏览器、播放列表查询等功能。运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写+SQLite数据库支持+SharePreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。

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

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

谢辞

值此论文完成之际,衷心感谢我的导师金一鸣老师,在毕业设计的过程中给予我悉心的指导和帮助,他对待学识的严谨态度和作风让我感触颇深。感谢陈雯老师,作为我班的辅导员,在大学生活期间,给予同学们的帮助和教导。感谢2008届电子科学与技术的全体同学,和我一起度过了难忘的四年时光。感谢我的爸爸妈妈,将我培养成人,教育我,帮助我。最后,对审批此论文的老师表示深深地谢意。

参考文献

[1] 雍俊海编著.Java程序设计习题集[M].北京:清华大学出版社,2006

[2]Jasmin Blanchette,Mark Summerfield. C++ GUI Programming with Java. [M] Publisher:Prentice Hall PTR,January152004. 15~25

[3] 朱福喜编著.Java语言习题与解析[M].北京:清华大学出版社,2006

[4] 赵文靖编著.Java程序设计基础与上机指导[M].北京:清华大学出版社,2006

[5] 吴其庆编著.Java程序设计实例教程[M].北京:冶金工业出版社,2006

[6]王克宏著.Java技术教程(基础篇)[M].北京:高等教育出版社,2002.04

[7] JavaEye论坛.https://www.360docs.net/doc/ca8649155.html,/forums.2010-04-15.

[8]Trolltech Inc. Android Reference Documentation3.3.2. https://www.360docs.net/doc/ca8649155.html,/title-cn. 2004年

[9]耿祥义,Java大学实用教程[M],北京:电子工业出版社,2005.3

[10] 杨丰盛主编.Android应用开发揭秘[M].西安:机械工业出版社,2010-01-25

[11] eoe.Android开发社区.https://www.360docs.net/doc/ca8649155.html,/.2010-04-10.

[12] 高焕堂编.Android应用框架原理与程式设计(第三版)[M].北京:清华大学出版社,2008-10-03

[13]shane Condor, Lauren Decry. Android移动应用开发从入门到精通[M].北京:人民邮电出版社,2010

[14]G.N.Wassef. Lipoprotein (a) in android obesity and NIDDM: a new member in‘the metabolic syndrome’[M]. Biomedecine & Pharmacotherapy, Volume53, Issue10,December 1999,Page462-465.

[15]Federico Perfetto, Roberto Tarquini, Germaine Comealissen, Giorgio Mello, Alessio Tempestini, Paola Gaudiano, Francesco Mancuso, Franz Halberg. Circadian phase difference of leptin in android versus gynoid obesity[M]. Peptides, V olume25, Issue8, Auguest2004, Page1297-1306.

[16]Nesrine Attia, Natalie Fournier, Benoit Vedie, Michele Cambillau, Philippe Beaune,

Olivier Ziegler, Alain Grynbery, Jean-Louis Paul, Bruno Guerci[M].Impact of Android overweight or obesity and insulin resistance on basal and postprandial SR-BI and ABCA1-mediated serum cholesterol efflux capacities. Atherosclerosis, Volume209, Issue1, January1st,2008. Pages95-103.

[17]Alessandro Distefano, Gianluigi Me, Francessco Pace. Android anti-forensics through a local paradigm[M]. Digital Investigation, V olume7, Supplement1, August2010, Pages S83-S94

[18] 余志龙编著.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2009-7-1.

[19] 张孝祥著.java就业培训教程[M].北京:清华大学出版社,2007.

[20] Ming-Chiao Chen, Jiann-Liang Chen,Teng-Wen. Android/OSGi-based vehicular network management system[M]. Computer Communications, Volume334, Issue2, February 15th2011, Pages169-183

[21]Reto Meier. Android高级编程[M].北京:清华大学出版社,2010.

Android简单的登陆界面的设计开发

通信实训报告 -Android移动平台开发 学院:信息工程学院 班级: 学号: 姓名:

实训内容: 一.1.Andriod的简介 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread 和Android 3.0 Honeycomb。 Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。 2.Android构架图 二.1软件下载 Android SDK,网址是https://www.360docs.net/doc/ca8649155.html,. JDK的下载地址https://www.360docs.net/doc/ca8649155.html,/javase/downloads/widget/jdk6.jsp。Eclipse的下载网址是https://www.360docs.net/doc/ca8649155.html,/downloads/ 2.Android开发环境搭建

android毕业设计(论文)开题报告

毕业设计(论文) 开题报告 题目___________________________ 学院___________________________ 专业及班级___________________________ 姓名___________________________ 学号___________________________ 指导教师 ___________________________ 日期 ___________________________

西安科技大学毕业设计(论文)开题报告

二、主要研究(设计)内容、研究(设计)思路及工作方法或工作流程 设计内容:基于Android平台下实现理货员的功能:精耕拜访,销售机会,拜访效果,门店销量查询,待办事项,数据维护:队列信息,基础信息,地图下载。 设计思路及工作方法: 1.精耕拜访: (1)初始进入该页面,系统会自动获取该理货员的本日拜访的门店及路线。 (2)下方地图会自动定位目前理货员的位置。 (3)点击门店的具体门店名称,在右边会显示该门店的联系人,电话,及地址,并且地图 会自动切换定位以该门店为中心。 (4)点击地图上的+可实现地图局部放大。-可实现地图的放小。 (5)如已拜访的门店,点击进入可以调去历史拜访数据。如未拜访的门店,点击进入可以新增该拜访记录。 (6)如理货员在拜访期间,发现门店已经有卖而目前系统中无记录的情况,则可以通过扫 描SKU的条形码,系统会自动匹配该SKU的信息给理货员。 匹配顺序:连锁总店—区域管理—基本SKU信息 补充说明: (1)公司动态内容,为了显示保乐力加集团的整体形象,有必要对公司的动态进行展示。 要包括集团的光辉历程,门店信息,集团的促销信息等。 (2)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员 需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且 分发。 (3)陈列报告,为显示每次理货员必须处理的门店信息记录及图片等。 (4)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且分发。 (5)价格显示,系统会自动带出竞品信息。罗列在下半部。理货员在进行拜访期间,可以对本身的SKU及竞品的价格进行登记。主要登记内容:零售价格,促销价格及促销期间。信息采集完毕,可以供后台进行统计分析。 (7)在陈列信息栏中,有其它途径过来的回应确认,可以一栏展示在上半部。如该理货员需要发起确认,也可以通过点击发起确认进行提出。发起确认的需要销售员进行审核并且分发。 (7)库存信息,主要记录SKU的库存数量。 (8)上半部为助销申请内容,主要是对一些礼品的申请。 (9)订单处理,为新增订单,退货内容及换货内容的跟踪。 2.销售机会: (1)打开销售机会界面,会自动定位目前的门店列表。 (2)用户可以输入门店名称查询具体的门店信息及地图位置。

第4章 Android用户界面设计

视图组件的使用模式 常用组件 高级组件 提示框与警告对话框

就是Android应用程序的开发过程。一般过程是先通过XML布局文件或Java代码创建界面布局,设定组件显示样式,随后获取UI组件对象,并处理组件事件响应。 视图组件的定义 资源的访问 生成视图组件资源标识 视图组件的引用 视图组件的事件响应 组件的常用属性

1.1视图组件的定义 使用XML布局文件定义视图组件 使用Java代码定义视图组件(不推荐)

1.1视图组件的定义 使用XML布局文件定义视图组件 Android平台为大多数视图组件以及其子类提供了XML标记,可通过XML布局文件中的标记来定义视图组件。XML中的每个元素代表了一个组件,即元素名称对应相应的Java类。

1.1视图组件的定义

相关文档
最新文档