基于Android平台的即时通讯系统的研究与设计_第1页
基于Android平台的即时通讯系统的研究与设计_第2页
基于Android平台的即时通讯系统的研究与设计_第3页
基于Android平台的即时通讯系统的研究与设计_第4页
基于Android平台的即时通讯系统的研究与设计_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计(论文)基于 Android 平台的即时通讯系统的研究与设计学 院 自动化学院 专 业 网络工程 (网络与信息化方向) 年级班别 2009 级(2)班 学 号 3109001332 学生姓名 张京 指导教师 郑日荣 2013 年 5 月 基于A n d r o I d平台的即时通讯系统的研究与设计张京自动化学院摘 要随着 Android 系统的发展,越来越多的移动设备开始使用 Android 作为操作系统。Android 系统内核基于 Linux 而来,应用层则使用基于 Java 代码的 Dalvik 虚拟机,因此 Android 代码的主要编程语言是 Java。即时通讯(Instant Messenger ,简称 IM) ,指基于互联网的即时交流信息的业务。即时通讯是当今互联网用户主要通讯方式之一,能够为互联网用户带来直观、便捷的信息交换服务。蓝牙,一种支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。本文主要对 Android 系统、蓝牙协议进行研究,通过分析 Android 的一个蓝牙即时通讯实例,达到基于 Android 即时通讯系统的研究目的。在这些研究的基础上,设计出能够实现 Android 系统上基于蓝牙、能够进行文件发送的即时通讯软件。首先,本文分析 Android 系统的框架以及功能特征,讲述了 Android 系统的基本运作方式。其次,讲述了在 Android 系统上如何使用蓝牙协议,研究了 Android 系统上的蓝牙工作方式以及关键代码。最后,分析蓝牙的工作实例,在此基础上在Eclipse 开发出能够实现即时通讯的 Android 实例,并且能够传送文件。关键词:即时通讯; 蓝牙; AndroidAbstractWith the development of the Android system, more and more mobile devices start using Android as the operating system. Android system is based on the Linux kernel and the application layer is using Java-based code Dalvik virtual machine, therefore, the major programming language of Android system is Java.Instant Messenger (Abbreviated IM), refers to Internet-based real-time information exchange service. IM is the main way to communicate of Internet users; one can provide Internet users with an intuitive and convenient information exchange service. Bluetooth, one that supports short-range communication device radio technology, can include mobile phone, PDA, wireless headsets, laptop computers, related peripherals and other wireless information exchange between devices.This paper mainly research on the Android system and the Bluetooth protocol, by analyzing of a Bluetooth Android IM instance, to achieve the purpose of researching Android-based instant messaging system. Design an Android system based on Bluetooth, with the capable of instant messaging and file sending.Firstly, this paper analyzes framework and functional characteristics of Android system, and tells the basic operation of Android system. Secondly, Using Bluetooth protocol on the Android system and tells some key-codes. Finally, design an IM program through Eclipse based on the analysis of Bluetooth working examples which have the ability to transfer files.Keywords: Instant Messaging; Bluetooth; Android目 录摘 要 .IABSTRACT .II1 绪论 .11.1 关于 ANDROID 系统的背景以及研究目的 .11.2 国内外研究状况 .11.3 通过 GOOGLE Android SDK 以及 ECLIPSE 进行开发 .21.4 本论文研究的目的及意义 .31.5 本论文主要结构 .32 ANDROID 系统的研究与设计 .52.1 Android 系统的功能特征 .52.2 Android 系统的编程环境的搭建 .62.3 Android 系统的架构 .72.3.1 Android 操作系统 .72.3.2 Android 应用程序 .92.4 Android 程序开发 .102.4.1 Android 用户界面(UI) .102.4.2 Android 控制层开发 .112.4.3 Android 任务和进程/线程模型 .132.4.4 Android 持久层开发 .142.5 Bluetooth .142.5.1 Bluetooth 简介 .142.5.2 Bluetooth 有关基本概念 .162.5.3 如何在 Android 系统中操作 Bluetooth .223 程序主要架构与模块 .263.1 需求分析 .263.1.1 引言 .263.1.2 系统功能 .263.1.3 设计分析 .273.1.4 运行环境说明 .283.2 程序主要架构以及流程 .293.2.1 BluetoothChat 例程分析 .293.2.2 Bluetooth 模块 .313.2.3 文件读取以及存储模块 .384 程序的调试与结果 .414.1 虚拟机的搭建以及使用 .414.2 ADB 调试 .444.3 DEBUG 调试 .454.4 运行结果 .46总 结 .49参考文献 .51致 谢 .521 绪论1.1 关于 Android 系统的背景以及研究目的Android 一词的本义指“机器人” ,同时也是 Google 于 2007 年 11 月 5 日宣布的基于 Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android 一词最早出现于法国作家利尔亚当(Auguste Villiers de lIsle-Adam)在1886 年发表的科幻小说未来夏娃 (Lve future)中。他将外表像人的机器起名为 Android2。蓝牙协议 Bluetooth。蓝牙是一种短距离的无线通信技术,它最初提出的是用来取代电缆连线,也可以用于各种移动设备的互联,组建个人无线局域网 4,蓝牙无线通信技术的主要特点 5有:低成本、低功率;短标称的蓝牙无线通信距离,以节省电池能量;永外加的功率放大器扩展的无线通信距离;在全球可用并且无限制的2.4GHZ ISM(工业、科学、医疗)频段内。随着,人们对于即时通讯的需求越来越多样化,产生了各种各样不同用途的协议。即时通讯(Instant Messenger,简称 IM) ,是指能够即时发送和接收互联网消息等的业务。自 1998 年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。是一种终端连往即时通讯网络的服务。即时通讯不同于 e-mail 在于它的交谈是即时的。大部分的即时通讯服务提供了状态信息的特性显示联络人名单,联络人是否在在线与能否与联络人交谈 3。在这样的背景之下,发展 Android 系统上的即时通讯软件已经成为一个非常主流性的问题,如何实现,以及如何提供更加优质的服务将会是 Android 开发的一个非常重要的问题。1.2 国内外研究状况目前 Android 最新的版本是 4.2 JellyBean, 中文名是“果冻豆” ,该系统是Android 4.0.x Ice Cream Sandwich (冰激凌三明治 ) 的升级版, Android 5.0 的代号将是Key Lime Pie(酸橙派)。在今年的 2013 Google I/O 大会上,从 Google Play 到Map、 Game API,再到 Android Studio 开发工具, Android 在移动端的全面系统升级,这也让 Android 之前和 iOS 相对较弱的部分全面追上。Android 发行的版本:Android 在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta) ,发条机器人(Android 1.0) 。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于 Android 1.5 发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照 26 个字母数序:阿童木(AndroidBeta)发条机器人(Android 1.0),2008 年 9 月发布。纸杯蛋糕(Android 1.5)Cupcake,2009 年 4 月 30 日发布。甜甜圈(Android 1.6)Donut,2009 年 9 月 15 日发布。松饼(Android 2.0/2.1)clair,2009 年 10 月 26 日发布。冻酸奶(Android 2.2)Froyo,2010 年 5 月 20 日发布。姜饼(Android 2.3)Gingerbread ,2010 年 12 月 7 日发布。蜂巢(Android 3.0)Honeycomb ,2011 年 2 月 2 日发布。冰激凌三明治(Android 4.0)Ice Cream Sandwich ,2011 年 10 月 19 日在香港发布。果冻豆(Jelly Bean,Android4.1 和 Android 4.2) Jelly Bean,2012 年 6 月 28 日发布,Android 4.2 Jelly Bean:2012 年 10 月 30 日发布。对于基于 Android 系统的即时通讯软件,国内比较著名的软件有 QQ(Android版) 、微信。国外比较著名的有 MSN、LINE ME 等等。1.3 通过 GOOGLE Android SDK 以及 ECLIPSE 进行开发早期的 Android 应用程序开发中,通常通过在 Android SDK(Android 软件开发包)中使用 Java 作为编程语言来开发应用程序。开发者亦可以通过在 Android NDK( Android Native 开发包)中使用 C 语言或者 C+语言来作为编程语言开发应用程序。同时 Google 还推出了适合初学者编程使用的 Simple 语言,该语言类似微软公司的 Visual Basic 语言。此外, Google 还推出了 Google App Inventor 开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK) 。Eclipse 的插件机制是轻型软件组件化架构。在客户机平台上,Eclipse 使用插件来提供所有的附加功能,例如支持 Java 以外的其他语 言。 已有的分离的插件已经能够支持 C/C+(CDT) 、Perl、Ruby,Python、telnet 和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言 6。1.4 本论文研究的目的及意义早期的即时通讯是属于 Unix 用户的专利,随着个人电脑与互联网的普及,即时通讯成为人与人沟通的另一条管道。即时通讯在 2003 年后与万维网、电子邮件共同成为互联网使用的主流。2007 年之后,由于智能手机普遍流行起来。传统上电信运营商所建构SMS、 MMS 信息服务系统,逐渐被以网络架构的第三方服务商所瓜分移动设备的加值营收。而对于 Android 系统,这方面的发展有 5 年,相比起其他平台的发展已经短了很多,而对于这种新兴的移动设备系统,有更加多的信息可以利用,例如 GPS 信息、照片信息,手机联系人信息等等。这些开发能够使移动设备之间的通讯更加人性化、更加便利,有利于提高通讯效率。即时通讯除了能加强网络之间的信息沟通外,最主要的是可以将网站信息与聊天用户直接联紧在一起。通过网站信息向聊天用户群及时群发送,可以迅速吸引聊天用户群对网站的关注,从而加强网站的访问率与回头率;即时通信利用的是互联网线路,通过文字、语音、视频、文件的信息交流与互动,有效节省了沟通双方的时间与经济成本;即时通信系统不但成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台。1.5 本论文主要结构本文章主要分为 5 个部分:绪论、Android 系统的研究与设计、程序主要架构与模块、程序的调试、程序运行结果。1、绪论本章主要介绍 Android 系统、Bluetooth 的背景以及开发现状,以及本系统的设计意义。2、Android 系统的研究与设计本章主要介绍 Android 系统的框架与特征,介绍 Android 系统的运作方式与特征函数,以及蓝牙的术语定义以及 Android 中如何运用蓝牙。3、程序主要架构与模块本章主要介绍程序的需求分析,介绍系统的逻辑运行流程,介绍实例关键代码。4、程序的调试以及运行结果本章主要介绍 Eclipse 中如何调试及其过程,以及程序的运行结果。2 Android 系统的研究与设计2.1 Android 系统的功能特征1、应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。2、Dalvik 虚拟机器:在 Android 平台上所使用 Java 虚拟机,不是 Sim 公司的标准 Java 虚拟机,而是使用 Google 自主开发的代号为 Dalvik 的虚拟机,它在保证API 方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。 3、集成的浏览器:集成的浏览器是 Android 内建的浏览器,是以 WebKit 的浏览引擎为基础所开发成的。WedKit 是一个开源浏览器网页排版引擎,目前使用WebKit 引擎的浏览器主要有 :Safari,Midori,Epiphany 等。配合 Android 手机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。 4、优化的绘图能力:在程序里可以用到的绘图功能分为 2D 与 3D 两个方面。在2D 方面,Android 提供了一套特有的类库,而在 3D 方面则是使用 OpenGL ES1.0(openGL for Embedded systems)规范的类库。它们是一种非常快的图形引擎,并且支持硬件加速。 5、SQLite 数据库:SQLite 提供结构化的数据存取。SQLite 是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。它能够支持 Windows/Linux/Unix 等主流的操作系统,同时能够跟很多程序语言相结合,比如 PHP, Java 等,还有 ODBC 接口,同样比起 Mysql,PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有 250KB 但支持数据库大小至 2TB。它虽然很小巧,但是支持的 SQL 语句毫不逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite 也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。 6、多媒体的支持能力:主要用于播放媒体文件。这同时包括对音频 (如播放 MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放 URI 地址”(Note:URI 即是统一资源识别地址 )模式在网络上直接播放的流媒体。另外支持各种通用的静态图像格式,如 JPG、PNG 、GIF 等格式。 7、GSM 技术: Global System for Mobile Communications,即全球移动通讯系统,俗称“全球通” ,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM 技术是属于手机硬件方面的展现,也是在开发 Android 应用程序时可以突出的特点之一。 8、蓝牙:蓝牙是一种新型、开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSM Evolution),即增强型数据速率 GSM 演进技术。EDGE 是一种从 GSM 到 3G 的过渡技术,它主要是在 GSM 系统中采用了一种新的调制方法,即最先进的多时隙操作和 SPSK 调制技术。由于 8PSK 可将现有 GSM 网络采用的 GMSK 调制技术的信号空间从 2 扩展到 8,从而使每个符号所包含的信息是原来的 4 倍。Wi-Fi(Wireless Fidelity),即无线保真技术,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的是 2.4GHz 附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是 IEEE802.lla 和 IEEE802.11b。这些通讯能力也是属于手机硬件方面的展现,也是在开发 Android 应用程序时可以突出的特点之一。 9、GPS: Global Positioning System,即全球定位系统,它是一个由覆盖全球的24 颗卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以同时观测到 4 颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人。同样也是属于手机硬体方面的体现,也是在开发 Android 应用程序是可以突出的特点之一。2.2 Android 系统的编程环境的搭建所需开发环境:JDK 5 或者 JDK 6 (仅有 JRE 不够) 、Eclipse 3.5 (galileo)。下载用于在 Eclipse 开发 android 应用的 ADT 插件,在企业开发中,很多程序员使用 Eclipse IDE 作为应用的开发环境。为了使得 Android 应用的创建,运行和调试更加方便快捷。Android 的开发团队专门针对 Eclipse IDE 定制了一个插件:Android Development Tools(ADT)安装 Eclipse 插件 (ADT),启动 Eclipse,选择 Help Install New Software,在出现的对话框里,点击 Add 按钮,在对话框的 name 一栏输入“ADT” , 然后点击 Archive.,浏览和选择已经下载的 ADT 插件压缩文件。点击 OK.。返回可用软件的视图,会看到这个插件,然后选择 Developer Tools (会选中下面的“Android Developer Tools”和 “Android Editors”),点击 Next,最后重启 Eclipse。下载安装 Android SDK:Android SDK 包含了开发 Android 应用所依赖的 jar 文件、运行环境及相关工具。下载完 SDK 后,把.zip 文件解压到电脑上合适位置。启动 Eclipse,选择 window-preferences,在打开的视图左边点击 android,在右边的SDK Location 中选择 Android SDK 所在位置。在用户变量中新建 PATH 值为:Android SDK 中的 tools 绝对路径(本机为D:AndroidDevelopandroid-sdk-windows ools)。新建一个新的项目 7:通过 File - New - Project 菜单,建立新项目Android Project然后填写必要的参数, (注意这里我勾选的是 Google APIs,可以选喜欢的,但要创建相应的 AVD),相关参数的说明: Project Name: 包含这个项目的文件夹的名称。 Package Name: 包名,遵循 JAVA 规范,用包名来区分不同的类是很重要的,我用的是 helloworld.test。 Activity Name: 这是项目的主类名,这个类将会是 Android 的Activity 类的子类。一个 Activity 类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。 Application Name: 一个易读的标题在的应用程序上。 在选择栏 的 Use default location 选项,允许选择一个已存在的项目。 点击Finish 后,点击 Eclipse 的 Run 菜单选择 Run Configurations 选择“Android Application” ,点击在左上角(按钮像一张纸上有个“+”号)或者双击“Android Application”, 有个新的选项“New_configuration”(可以改为我们喜欢的名字)。 在右侧 Android 面板中点击 Browse,选择 HelloWorld2.3 Android 系统的架构2.3.1 Android 操作系统第一层:Linux 操作系统和驱动(Linux kernel):由 C 语言实现。Android 核心系统服务依赖于 Linux2.6 内核,包括:安全性、内存管理、进程管理、网络协议、驱动模型。Linux 内核也作为硬件和软件栈之间的抽象层。除了标准的 Linux 内核外,Android 还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi 驱动、蓝牙驱动、电源管理。第二层:本地框架和 Java 运行环境(LIBRARIES 和 ANDROID RUNTIME)本地框架是有 C/C+实现。包含 C/C+库,被 Android 系统中不同组件使用,它们通过Android 应用程序框架为开发者进行服务。系统 C 库:(libc)从 BSD 继承过来的标准的 C 系统函数库,专门是为基于嵌入式 Linux 的设备定制的库。多媒体库:基于PackerVideo 的 OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。Suface Manager:显示子系统管理器,并且为多个应用程序提供 2D 和 3D 图层的无缝融合。LibWebCore:一个最新的 Web 浏览器引擎,支持 Android 浏览器,以及一个可嵌入式的 Web 视图。SGL :Skia 图形库,底层的2D 图形引擎。3D libraries:基于 OpenGL ES1.0 API 的实现;该库可以使用硬件 3D 加速(如果可用) ,或者使用高度优化的 3D 软加速。FreeType :位图(bitmap)和矢量(vector)字体显示。Android 运行环境(ANDROID RUNTIME):提供了 Java 编程语言核心库的大多数功能,由 Dalvik Java 虚拟机和基础的 Java 类库组成。 Dalvik 是 Android 中使用的 Java虚拟机,每个 Android 应用程序都在自己的进程中运行,都拥有一个独立的 Dalvik虚拟机实例。Dalvik 被设计成一个可以同时高效运行多个虚拟机实例的虚拟系统。执行后缀名为.dex 的 Dalvik 可执行文件,该格式的文件针对小内存使用做出了优化。同时虚拟机是基于寄存器的,所有的类都是有 Java 编译器编译,然后通过 SDK 中的“dx”工具转化为.dex 格式由虚拟机执行。Dalvik 虚拟机依赖于 Linux 内核的一些功能,比如线程机制和底层内存管理机制。第三层:Android 应用框架(ANDROID FRAMEWORK): 在 Android 系统中,开发人员也可以完全访问核心应用程序所使用的 API 框架。包含的框架入上图(不在陈述)第四层:Android 应用程序(APPLICATIONS) Android 应用程序都是有 Java 语言编写的。用户开发的 Android 应用程序和 Android 的核心应用程序是同一层次的,它们都是基于 Android 的系统 API 构建的。图 2.1 Android 系统架构图2.3.2 Android 应用程序src/ java 原代码存放目录gen/ 自动生成目录gen 目录中存放所有由 Android 开发工具自动生成的文件。目录中最重要的就是 R.java 文件。 这个文件由 Android 开发工具自动产生的。Android 开发工具会自动根据 res 目录的 xml 界面文件、图标与常量,同步更新修改 R.java 文件。因为R.java 文件是由开发工具自动生成的,应避免手工修改 R.java。R.java 在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的 id,通过 R.java,应用可以很方便地找到对应资源。另外编绎器也会检查 R.java 列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。 8res/ 资源(Resource) 目录:在这个目录中可以存放应用使用到的各种资源,如 xml 界面文件,图片或数据。具体请看 ppt 下方备注栏。assets 资源目录:Android 除了提供/res 目录存放资源文件外,在 /assets 目录也可以存放资源文件,而且/assets 目录下的资源文件不会在 R.java 自动生成 ID,所以读取/assets 目录下的文件必须指定文件的路径,如:file:/android_asset/xxx.3gpAndroidManifest.xml 项目清单文件:这个文件列出了应用程序所提供的功能,以后开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS 服务等等),还需在该文件中声明使用权限。perties 项目环境信息,一般是不需要修改此文件。2.4 Android 程序开发2.4.1 Android 用户界面(UI)对于一个 Android 手机应用来说,一个好看有简介的界面,是相当重要的。技能提高使用者的体验,又能保证应用的搞笑执行。Android SDK 已经为用户提供了一套完善的界面设计功能,有丰富的组件供我们使用,如果还不能满足我们的界面需求,还可以对它们进行扩展。为了达到这样的目标,就要对 Android SDK 中提供的界面生成技术进行全面深入的学习,做到应用自如。Android 实现用户界面的基本知识,包括构建屏幕的基本组件,怎样使用 XML 定义屏幕并把它加载到代码中、以及需要为用户界面处理的各种任务。 9我们写任何一段程序,都是需要有 UI 的,因为程序最终是给用户去用的,即使写了一个工具,没有任何显示输入、输出,也还是需要暴露不要的方法来提供别人使用,在此情景下,这些方法似乎也可以看作是 UI。对于 Android 开发来说,用户界面的视线是比较重要的和复杂的一环,如果有 HTML 设计经验,或者说有Swing、Flash 等图形设计经验,那么理解 Android 的 UI 设计会容易得多,甚至会有似曾相识的感觉。图 2.2 用户界面的树形结构对于一个 Android 应用来说,android.app.Activity 类实例是一个最基本的功能单元。一个 Activity 实例可以做很多事情,但它本身无法显示在屏幕上,而是借助于视图组(ViewGroup)和视图(View),这两个才是 Android 平台上最基本的用户界面表达单元。2.4.2 Android 控制层开发Android 控制层包括:Activity、Intent & Intent Filter、Broadcast Receiver、Service、NotificationManager、AlarmManager。Activity 是 Android 最基本的应用程序组件。在应用程序中,一个 Activity 通常就是一个单独的屏幕,用于呈现数据和与用户进行交互,每个屏幕可以有 1 个或者多个组件布局。几乎所有的 Activity 都要和用户打交道,所以 Activity 类创建了一个窗口,开发人员可以通过 setContentView(View)方法吧 UI 防盗 Activity 创建的窗口中。尽管 Activity 经常被用来当作全屏窗口使用,但也可以通过其他方式来使用,比如作为浮动窗口(通过设置代 windowsFloating 标签的主体) ,或者嵌入到其他的Activity(通过 ActivityGroup)中。Activity 类是 Android 应用生命周期的重要部分,而且,Activity 的启动方式及 Activity 间的调度关系是 Android 平台应用模型的一个重要组成部分。在 Android 系统中,Activity 被一个 Activity 栈所管理,当一个新的 Activity 启动时,其被放置到栈顶,成为运行中的 Activity,前一个 Activity 则被保存在栈中,不再放到前台,知道新的 Activity 退出为止。我们可以通过回退操作回到以前打开过的 Activity,也可以选择性地移除一些没有必要保留在 Activity 栈中的 Activity。Broadcast Receiver 是一个专门用来接收广播通知消息,并做出相应处理的组件。很多广播是源自于系统本身的比如,通知时区改变、电池电量低、拍摄照片、来电、发短信或者用户改变了语言环境等。应用程序也可以进行广播比如说,通知其他应用程序下载完成并处于可用状态。Service:服务没有可视化的用户界面,而是一段时间内在后台运行。比如,一个服务可以在用户做其他事情的时候在后台播放背景音乐,从网络上获取或者计算一些数据提供给需要这个运算结果的 Activity 使用。每个服务都继承自 Service 基类。媒体播放器播放列表中的曲目是一个经典例子。播放器应用程序可能有 1 个或多个Activity 来给用户选择歌曲并进行播放。然而,音乐播放这个任务本身不应该为任何Activity 所处理,因为用户期望在做别的事情时,音乐仍在继续播放。为打到这个目的,媒体播放器 Activity 应该启用一个运行于后台的服务,系统在这个 Activity 不再可见时,仍维持音乐播放服务运行。用户可以连接(或者叫绑定)一个正在运行的服务(如果服务没有运行,则启动之) 。连接之后,可以通过服务器提供的借口与服务器进行通讯。对于音乐服务来说,这个借口可以允许用户暂停、回退、停止、以及重新开始播放等。如同 Activity 和其他组件一样,服务运行于应用程序进程的主线程内,所以不会对其他组件或用户界面有任何干扰。服务一般会派生一个新的线程来进行一些耗时的任务(比如音乐回放) 。Android 系统使用类 NotificationManager 来通知用户后台所发生的事情。实例必须使用方法 Context.getSystemService(NOTIFIVCATION_SERVICE)来获得,而不能直接对 NotificationManager 进行实例化。AlarmManager 经常结合 Service 来使用,用来显示后台 Service 的运行状态等。一个 Android 应用主要由 4 中组件组成:Activity、Service、BroadcastReceiver以及 ContentProvider,这四种组件是独立的,他们之间可以互相调用、协调工作,最终组成一个完整的 Android 应用。其中,Activity、Service、BroadcastReceiver 组件之间的通信,主要是由 Intent 来协助完成的。Intent 负责对应用中操作的动作、动作涉及数据及附加数据进行描述,Android 则根据此 Intent 的描述,找到对应的组件,将 Intent 传递给调用的组件,并完成组件的调用。 Intent 也可以通过广播的形式,来描述并广播某些已经发生的时间。因此,Intent 在这里起到一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。Android 控制层最重要的机制是 Intent。围绕着 Intent,可以协调Activity、Service、BroadcastReceiver 之间的通信,并可以使用 NotificationManager和 AlermManger 通知 U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论