MP3音乐播放器论文

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

9. 照相机,GPS,指南针,和加速度计(依赖于硬件);

10. 丰富的开发环境:包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse集成开发环境插件。

Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。

Android的系统架构和其操作系统一样,采用了分层的架构[7]。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

根目录 应用程序(Application) 联系 手机浏览器 应用程序框架(Application Framework) 窗口管理器 ?? 活动管理器 包管理器 电话管理器 资源管理器 内容提供商 视图系统 通知管理器 位置管理器 界面管理器 开放GL|ES SGL 媒体框架 库 嵌入式数据库 内核 libc 安卓运行环境 核心库 Dilvik 虚拟机 FreeType SSL LINUX 内核 显示器驱动 键盘驱动 摄像头驱动 WiFi 驱动 闪存驱动器 音频驱动器 粘合剂(IPC)驱动 电源管理器 图2.2 Android Architecture(android 软件结构图)

5

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

其软件层次结构自上而下分为以下几个层次: 1.应用程序(Application)

Android 会同一核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的[5]。

应用程序框架(Application Framework)

开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过的遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括[8]:

(1)可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(Grids),文本框(Text boxes),按钮(button),甚至包括另一个可嵌入的web浏览器。

(2)内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人的数据库),或者共享它们自己的数据。

(3)资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(Layout Files)。

(4)通知管理器(Notification Manager)使得应用程序生可以在状态栏中显示客户通知信息。

(5)活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

2.各种库(Libraries)和Android运行环境(RunTime)

Android包括一个被Android系统中各种不同组件所使用的C/C++库集。该库通过Android应用程序框架为开发者提供服务。

Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik

6

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

虚拟机实例。Dalvik是针对于同时高效地运行多个VMS来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行.Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。 3.操作系统层

Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议和驱动模型。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。

2.1.2 Android应用软件开发的核心技术

JAVA是Android上的主流开发语言,各种支持也最完善。Android发布的API和SDK也都主要是面向JAVA开发人员的。我的播放器实例也是用JAVA开发的。 Android 应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码中设置相应权限)。例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite浏览器组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。

Android应用程序的组件有以下四种: 1.Activities

一个Activity实际上表现出来的就是一个程序的界面。这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等形式。一个应用程序也可能有不止一个Activity[9]。比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activity,还可能需要设置、菜单等界面。

7

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

每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。

Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。我们可以用Activity.setContentView()方法来设置一个Activity中所要显示的view. 2.Services

Service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件式至关重要的。以下载管理器为例,用户肯定希望能够在切换到其他程序时仍然在后台继续下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过程,如停止、继续等,这就需要Activity与service之间进行通信。Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制后台service的行为。 3.Broadcast receivers

Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载。Broadcast receiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其他组件去处理广播消息。它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。NitificationManager的 通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。 4.Content Providers

Content Provider是一种为其它应用程序提供数据的组件[10]。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其他任何有效的方式保存。

8

联系客服:779662525#qq.com(#替换为@)