基于Android平台的手机音乐播放器的设计与实现
1.2 国内外现状
目前Android手机在国内外有很庞大的用户,很多手机厂商都在使用谷歌的Android手机系统,目前有联想、HTC、三星、摩托罗拉、华为、索爱等知名手机厂商,可以说现在Android系统手机的发展前景是很乐观的,在国内近两年来用户手里的手机系统大部分都是苹果系统、Android系统,现在Android系统已经更新到4.0了,像HTC最近处了一款手机就是4.0系统,并且采用手机史上一次用的是四核手机处理器,相继三星等公司也使用了Android 4.0系统作为新款手机的操作系统,所以可以说Android系统的发展前景跟现状都是很受手机用户欢迎的。
1.3 目的及意义
现今社会生活紧张,而欣赏音乐是其中最好的舒缓压力的方式之一,本项目的目的是开发一个可以播放主流音乐文件格式的播放器,本设计 的实现的这主要功能是播放Mp3的音乐文件,并且能够控制播放、暂停、停止、上一曲、下一曲、音量调节、视觉外观、播放列表和歌曲文件的管理操作等多种播放控制功能、界面简明、操作简单。
本设计是一款基于Android手机平台的音乐播放器,使Android手机拥有个性的多媒体播放器,使手机显得更生动灵活化,与人们更为接近,让手机主人随时随地处于音乐视频的旋律之中。是人们的生活更加多样化。也使设计者更加熟练Android的技术和其他在市场上的特点。
- 2 -
第2章 相关技术
2.1 Android简介
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2012年1月,Google开始发表自家品牌手机电话的Nexus One。目前最新SDK版本为Android 4.0.3。 1.Android Features特性
Android系统有如下的几大特性:应用程序框架:支持组件的重用与替换。Dalvik虚拟机:专门为移动设备做了优化。内部集成浏览器:该浏览器基于开源的WebKit引擎。优化的图形库:包括2D和3D图形库,3D图形库基于OpenGL ES。SQLite:用作结构化的数据存储。多媒体支持:包括常见的音频、视频和静态印象文件格式(如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF)。GSM电话(依赖于硬件)。蓝牙Bluetooth,EDGE,3G and WiFi(依赖于硬件)。照相机,GPS,指南针,和加速度计(依赖于硬件)。
丰富的开发环境:包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集2.Android基本框架
Android的框架可分为四层:第一层以Linux为内核的核心层,使用c、c++编写的。第二层系统运行的类库层,也是用c、c++编写的,这里有系统类库、Dalvik虚拟机。第三层是应用程序框架层,里面有Activity Manager(活动管理器)、Window Manager(窗口管理器)、Content Provider(内容提供器)等。第四层是应用程序层,包含了SMS短信客户端程序、电话拨号程序、图片浏览器等应用程序,这些应用程序都是用Java语言编写的,并且是可以被开发人员开发的其他应用程序替换。 Android平台的基本框架(Android Architecture)如图2-1所示。
- 3 -
成开发环境插件。
基于Android平台的手机音乐播放器的设计与实现
图2-1 Android基本框架图
(1)Application
Application Android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。
(2)Application FrameWork
开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。
所有的应用程序都由一系列的服务和系统组成,包括:可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至包括一个可嵌入的web浏览器;内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据;资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(layout files);通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知
- 4 -
信息;活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能;
(3)Libraries库
Android 包括一个被 Android 系统中各种不同组件所使用的 C/C++ 库集。该库通过 Android 应用程序框架为开发者提供服务。以下是一些主要的核心库:系统 C 库:一个从 BSD 继承来的标准 C 系统函数库( libc ),专门为基于 embedded linux 的设备定制。媒体库:基于 PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态印像文件包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。Surface Manager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。LibWebCore:一个最新的web浏览器引擎用来支持Android浏览器和一个可嵌入的web视图。SGL:一个内置的2D图形引擎。3D libraries:基于OpenGL ES 1.0 APIs实现。该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。FreeType:位图(bitmap)和向量(vector)字体显示。SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
(4)Android Runtime
Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。 每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VMs来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,通过SDK中的dx工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。 (5)Linux内核
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。未来发展老牌智能手机软件平台制造商Symbian发言人则表示:Google的Android只不过是另一个linux,symbian对其它软件与其形成的竞争并不感到担心。除了北美之外,Symbian在其它地区智能手机市场都占有大部分市场份额。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。 3.Android系统的四大组件
- 5 -
基于Android平台的手机音乐播放器的设计与实现
在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:
Activity简介: 在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。Service简介:顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期 中的方法就可以了。一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过
Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的Content Provider。它们被定义在Android.provider包下面,通过这样定义好的ContentProvider ,我们可以方便的进行数据操作,当然我们必须拥有适当的权限。我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问。
2.2 Java简介
Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。
在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开
- 6 -