件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
Android包括操作系统、用户界面和应用程序--移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开放了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
Android作为谷歌企业战略的重要组成部分,将进一步推进"随时随地为每个人提供信息"这一企业目标的实现。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。 出于这个目的,Android将补充而不会替代谷歌长期以来奉行的移动发展战略一通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
2.1.2 Android 系统架构
Android的系统架构和其操作系统一样,采用了分层的架构。如图2.1 Android系统架构所示,Android分为五个部分,分别是:应用程序(Application)、应用程序框架(Application Framework)、程序库(Libraries)、Android运行时库(AndroidRuntime) 、linux核心(Linux Kernel)。
应用程序:Android将包含一套核心应用程序,其中包括E-Mai l客户端,短信程序,日历,地图,浏览器,通讯录等等。所有的应用程序都是由Java语言完成的。
应用程序框架:开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
程序库:Android包含-套C/C++开发库,主要包括:Libc、Media、Framework、WebKit、SGL、OpenGL ES、FreeType、SQLite等。它们被用于Android系统的各种组件中。这些功能通过Android应用框架展现给开发人员。
Android运行时库:Android运行时库包含一组核心库(提供了Java语言核心库内的大部分功能)和Dalvik虚拟机。同时 Android 提供了丰富的库类支持且大部分为开源代码,如2D和3D图像库OpenGL ES、数据库SQLite。
Linux核心:Android基于Linux 2.6内核来提供系统的核心服务,如安全机制,内存管理,进程管理.网络堆栈和驱动模型,如图2.1所示。内核还作为硬件和其余的软件应用之间的一个抽象层。
图2.1 Android系统架构图
从总体架构中看,Android相比其他平台显示出了自身的特点,比如WebKit 浏览器、Dalvik虚拟机等模块。这些模块的应用也成了Android的焦点,开发者可以充分利用Android提供的这些模块的接口。开发出更具有特色的应用程序。
2.1.3 Android应用组件类型分析
Android应用组件对象主要由四个部分构成:Activity、Intent、Service、ContentProvider。如图2.2所示的是Android应用组件类型。
1、AndroidManifest.xml文件是整个应用程序的配置文件,所有下面的组件都必须在AndroidManifest.xml中声明。AndroidManifest.xml负责把Activity、Intent、Service、Content Provider有机的组合起来,形成一个整体的应用程序。
图2.2 Android应用组件类型图
2. Activity:基本模块,通常代表一个单独的屏幕,主要用于处理应用程序的整体性工作,如监听系统事件、为用户显示指定的View、启动其他Activity等。在Android软件环境中,应用程序由一系列的Acitivity组成,Activity不但能提供给应用程序本身,也可以提供给系统内任何一个外部应用,开发者可以通过Activity组成形成应用程序。
图2.3 Activity栈流程图
Activity类的应用程序有其默认的运行方式,它有自己的生命周期,即它的产生、运行、销毁的一个过程。如图2.3所示的是Activity栈流程,在系统中的 Activity被一个Activity栈所管理。当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈中删除。默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。
3. Intent:执行某操作的一个抽象描述,用于协调应用程序内部和应用程序间的交互与通讯。Intent的结构包括动作和动作所对应的数据。动作表示一般的操作行为,典型动作的值有MAIN(活动的入口),VIEW、PICK、EDIT和其他一些。动作所对应的数据URI表示。Intent常用来实现Activity的切换,并传递相关信息。Intent的解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。
4. Service:一个无固定期限在后台运行的应用组件,它没有 UI,也不与用户进行交互。在activity中我们可以用Context.startService()来启动一个service。同时,系统也将保持这个service一直执行,直到这个service运行结束。另外,我们还可以通过使用Context.bindService()的方法,连接到另一个service上(如果这个service还没有运行将启动它)。当连接到另一个service之后,我们还可以为service提供的接口与它进行通讯。
5. Content Provider:在 Android中,Content Provider是一个特殊的存储数据的类型,它提供了一套标准的接口来获取和储存数据,以方便其他的应用保存和读取此内容提供器处理的各种数据类型。当某个应用程序希望与其它的应用共享其数据时,Android提供的Content Provider就可以发挥作用了。在实现Content Provider的抽象接口以后,程序可以将自己的数据暴露出去,其他程序只要有权限,就可以通过这一套标准而统一的接口,读取或是删除该程序的数据。
2.1.4 Android应用程序开发工具
Android平台上的应用程序都是由Java开发的。Android一般选用Eclipse作为应用程序开发环境。并为Eclipse编写了专门的ADT插件,此外还有一个专门用于Android开发的Android SDK,Android SDK指的是Android专属的软件开发工具包。
调试工具:Android SDK 自带一个移动设备模拟器,它可以让开发者不需使用物理设备就可以预览、开发和测试Android应用程序。Android模拟器能够模拟除了接听和拨打电话外的所有移动设备上的典型功能和行为。如图2.4所示,Android模拟器提供了大量的导航和控制键, 开发者可以通过鼠标或键盘点击这些按键来为你的应用程序产生事件。同时它还有一个屏幕用于显示Android自带应用程序和开发的应用程序。
图2.4 Android移动设备模拟器图
2.2 Socket网络通信
2.2.1 Socket协议概述
Socket的英文原义是"孔"或"插座"。在这里作为4BDS UNIX的进程通信机制,取后一种意思。Socket非常类似于电话插座。以一个国家级电话网为例。电话的通话双方相当于相互通信的两个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于Socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的号码,相当于对方有一个固定的Socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成
上一篇:
基于Android的海南风景猜猜看软件的开发与研究
下一篇:
试论APP广告在手机中的应用