基于Android系统的情景模式的设计与实现论文.doc_第1页
基于Android系统的情景模式的设计与实现论文.doc_第2页
基于Android系统的情景模式的设计与实现论文.doc_第3页
基于Android系统的情景模式的设计与实现论文.doc_第4页
基于Android系统的情景模式的设计与实现论文.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

移动平台开发(论文)题目名称:基于android系统的情景模式的设计与实现院系名称:计算机学院班 级:网络123班学 号:201200824314学生姓名:赵恒指导教师:赵慧杰 2014年12月20日24摘要近年来,随着现代工业及科学技术的迅速发展,人们对于信息的获取有着强烈的需求,智能手机作为一种非常重要的通讯工具,功能越来越强大,智能手机行业的发展也越来越受到各大制造厂商的关注。考虑到android广阔的市场,各大手机厂商都争相参与该系统的开发,并希望能将该系统应用到自己的手机产品上。移动平台开发课程给了我们一个开发android项目的机会,因此我选择开发一款android手机软件,即基于android系统的手机情景模式。本文首先对比分析了市场上多个智能手机平台,研究了智能手机的发展现状,接着分析了android系统的平台架构,剖析了android应用组件和activity生命周期,对android平台底层组件软件开发和应用层软件开发方法进行了深入研究,其中深入分析了intent,对intent进行了详细的讲解。在此基础上,开发设计实现了基于android系统的手机情景模式。关键字:android、智能手机、情景模式、activity、intent目 录摘要2目 录3第一章 绪论41.1手机操作系统简介41.2手机操作系统目前现状41.3手机操作系统发展趋势61.4android简介6第二章 android 的架构72.1android 架构72.2android 中的 intent92.1.1intent抽象描述的内容92.2.2android 解析 intent 的过程102.3eclipse介绍11第三章 需求分析133.1可行性分析133.2系统总体需求分析133.3开发运行环境13第四章 情景模式的设计思想144.1情景模式的设计特点144.2情景模式的设计144.3程序的流程14第五章 情景模式的具体实现165.1情景模式界面类165.2情景模式类185.3情景模式测试19第六章 总结21【参考文献与附录】22第一章 绪论1.1手机操作系统简介 手机的用户群日益庞大,在人民生活中手机起到愈加重要的作用。在2010年1月由一个网站所做的调查表明,中国手机用户数量将达到七点四亿多。全国的手机及其它具有手机功能的设备的用户群体,这个数量还在继续增长。这样一来,就有更多的手机厂商也都想抓住商机赢得更多用户,.所以也就涌现出许许多多的手机品牌和手机操作系统,我们大家所知道的有如:symbian, palmos,windows mobile, smartphone等等,这里对手机品牌不作介绍,对于手机的操作系统,这些系统中,每个系统也有许多版本,有的版本是智能的,有的版本非智能的,各有各的特色和优缺点,这里不对各个系统进行详细的评论。google公司推出了一套手机操作系统android,并宣布google要进军手机领域,宣称其手机系统是一个开放平台,所以就引来了许多的手机厂商的关注和极大的兴趣。由于android系统是基于标准的linux内核开发的一套嵌入式系统,也可以说android系统的核心部分(不包括上层应用程序部分)是linux系统,所以该论文在介绍android系统移植开发之前,也就会描述和介绍通用嵌入式linux系统移植的有关软件内容,对于涉及硬件方面不作过多的描述。1.2手机操作系统目前现状近来微电子技术的迅猛发展,处理器升级增长的速度也随之加快,嵌入式系统领域发生了翻天覆地的变化,特别是现在网络的普及,可以使嵌入式系统具备网络的功能,嵌入式与网络也就成为当今最热门的技术,从而使得嵌入式系统得以更广泛的应用,应用到了各个领域,但是在这众多的应用中,我们最有切身体会的就是手机的使用。接下来就针对常见的几款智能手机系统简单介绍一下:(1) windows mobile系列操作系统是微软在计算机的windows操作系统上变化而来的,因此,它们的操作界面与pc的操作系统非常相似,因此性能比较好,操作起来速度会比较快。但是,此系列手机也有一定的缺点,如因配置高、功能多而产生耗电量大、电池续航时间短、硬件采用成本高等缺点。(2) symbian操作系统提供了灵活的应用操作界面框架,不但使开发者得以快速掌握必要的技术,同时还使手机制造商能够推出不同界面的产品,但是这种系统类型的手机,它的输入方式包括键盘输入和手写笔输入,不同的输入方式和外观设计会对各款手机的主要用途产生很大的影响,每种输入方法对消费者也有一些要求,如要求熟悉拼音,写字等。(3) palmos是3com公司开发的一种32位的嵌入式操作系统,原本是一家生产掌上电脑及掌上电脑操作系统为主的公司,palm智能手机所用的palm操作系统又与palm掌上电脑所用的操作系统非常相似,与微软所推出操作系统要占有大量的系统资源和储存容量不同的是,它本身所占的内存极小,基于palm操作系统编写的应用程序所占的空间也很小,对于中国用户而言,它有一个不足之处是,它的操作系统起初在中国销售的产品仍然要使用中文外挂平台,有相当部分依然是以英文界面为主,在一定程度上影响了基于palm操作系统的产品大面积进入中国市场。(4) linux是一套免费使用和自由传播的操作系统。linux具有稳定、可靠、安全等优点,有强大的网络功能。由于linux具有源代码开放,这一特点非常重要。从应用开发的角度看,由于linux的源代码是开放的,有利于独立软件开发商(isv )开发出硬件利用效率高、功能更强大的应用软件,也方便行业用户开发自己的安全、可控认证系统,因为丰富的应用是智能手机的优越性体现和关键卖点所在。特别是当智能手机大量用作行业应用的移动终端时,linux在手机操作系统市场中也异军突起,成为一股不容忽视的力量。(5) iphone,相比于前面几个系统,apple的iphone系统的性能可能算是比较优越的,但是它在价格和语言本地化方面有一定的局限性,但是android也吸纳了它的一些优点,而且在此基础上还做了优化,这就是google的聪明和可以制胜之处。目前,琳琅满目的手机系统,有时也让消费者在选择手机时头痛,比如:有的手机外观还蛮赏心悦目的,但是使用时感觉手机系统和应用不是很理想;有的手机系统和应用系统很称心,但是外观傻傻的;有一些手机系统操作起来很复杂,好像是为一些专业人士设计似的等等;还有的是所谓的高端手机其实就是增加了几个吸引消费者眼球的卖点就把手机价格拉得很高;总的来说目前的手机市场不是很令人满意,所以希望能有某个手机软件能够一统手机的操作系统。1.3手机操作系统发展趋势据不完全统计,目前全球手机用户有30亿,2006年统计的中国手机用户有2.61亿;去年全球手机出货量约11亿部,其中中国约5.5亿部141。美国最著名的未来学家尼葛洛庞帝在1999年访华时曾经预言,在4至5年后嵌入式系统和互联网将是既pc之后的最伟大的发明。如今10年将要过去了,现实的发展验证了他的语言的正确性。现在嵌入式系统正处于高速的发展阶段,未来的几年,这种发展和竞争将是愈演愈烈。由于嵌入式系统己经渗透到许多领域,如工业控制、移动通信、gps、娱乐等,将来它会发挥更大的优势。 symbian, linux, windows mobile, palm是目前主要的手机嵌入式操作系统,而linux手机市场份额的上升,更多的源于linux开放平台的支持,也随着嵌入式系统时代的发展而发展,近期,随着3g时代的到来,也可能是由于底层的linux核心是一个开源平台,中国几大手机运营商如移动、电信、联通也在紧锣密鼓的筹备并与google公司合作而开发android系统,由于android的内核linux部分是开源的,所以在价格方面占据了很大的优势。看来使用android系统是将来手机系统的很大的趋势。1.4android简介android是一个开源的智能手机操作系统,android翻译成中文是机器人,机器人这个名词通常是指硬件部分,而android是操作系统,是软件部分。这个目前正热门的手机系统跟以往各大手机厂商闭门自修所研发的系统最大的区别在于它开放原始代码,让一些手机厂商或一般的开发爱好者也可以轻易的利用google公司所提供的sdk开发各式各样的应用软件。android是基于linux内核,由linux内核、linux运行库、用来运行代码的类似java虚拟机以及全套的移动电话应用程序组成的,和标准的linux开发流程一样,android系统平台开发的一个很重要的基础工作就是对其内核的编译和移植其中applications是android的应用软件部分,application framework是android的应用软件框架模型,android runtime是android系统的运行库,libraries是linux系统的标准库,linux kernel是linux系统的内核,也是android系统的内核。第二章 android 的架构android 是一个移动设备的软件框架。它包括一个操作系统,中间件和一些关键应用。android 是由 linux+java 构成的开源软件。2.1android 架构图2-1给出了 android 操作系统的大部分组件。图 2-1android 架构应用程序android 的配置搭载它的核心应用,包括 email 客户端,sms 程序,日历,地图,浏览器,contacts 以及其它一些应用。所有的应用都是用 java 语言编写的。应用程序框架开发人员具有和核心应用相同的框架 api 访问权限。应用程序的构建模式被设计成简单的可重用的组件。所有应用能够分享他的能力,所有应用都是如此(这是被框架强迫的安全约束)。这样允许用户在相同的机器上替换组件。一套用于支撑应用的服务和系统,包括:一套强大和可扩展的视图,用于构建应用,甚至内嵌的 web 浏览器。内容提供,用于应用间的数据提供和数据共享 。一个资源管理器, 提供非代码的资源支持,包括本地字符串,图像文件,和布局文件 。一个 notification 管理器, 用于应用程序在状态栏显示告警信息 。一个activity管理器,用于管理应用的生命周期,以及提供通用的导航辅助 。库android 包含一整套 c/c+ 库,用于构建 android 系统的大量不同的组件。这些能力通过 android 应用程序框架暴露给开发人员。部分核心库如下:系统 c 库,一个由 bsd 发起的标准 c 库实现,专门为基于 linux 的嵌入式设备作了调整。媒体库,基于 packetvideos opencore;该库支持回放和录制大量流行的音视频格式和静态图片,包括 mpeg4, h.264, mp3,aac,amr, jpg, 和 png。surface 管理,用于管理显示子系统和无缝合成不同应用的 2d 和 3d 图形层。libwebcore,先进的 web 浏览器引擎。被用来构建 android 浏览器和内嵌的 web 视图。sgl,底层的 2d 图形引擎。3d 库,一套 opengl es 1.0 apis 的实现;该库使用硬件加速(当硬件可用时)或者高度优化的 3d 软件光栅。freetype,用于点阵和矢量字体渲染。sqlite,能够被所有应用使用的强大的轻量级的关系数据库引擎。ssl,(secure sockets layer),中文名为 “ 安全套接层协议层 ” ,它是网景( netscape )公司提出的基于 web 应用的安全协议,当前版本为 3.0。ssl协议指定了一种在应用程序协议(如 http 、 telenet 、 nmtp 和 ftp 等)和 tcp/ip 协议之间提供数据安全性分层的机制,它为 tcp/ip 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。它已被广泛地用于 web浏览器与服务器之间的身份认证和加密数据传输。ssl 协议位于 tcp/ip 协议与各种应用层协议之间,为数据通讯提供安全支持。ssl 协议可分为两层: ssl记录协议(ssl record protocol):它建立在可靠的传输协议(如 tcp)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。ssl握手协议(ssl handshakeprotocol):它建立在 ssl 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。ssl 协议提供的服务主要有:一、认证用户和服务器,确保数据发送到正确的客户机和服务器;二、加密数据以防止数据中途被窃取;三、维护数据的完整性,确保数据在传输过程中不被改变。2.2android 中的 intent在一个 android 应用中,主要是由四种组件组成的,这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的 android 应用。在这些组件之间的通讯中,主要是由 intent 协助完成的。intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,android 则根据此 intent 的描述,负责找到对应的组件,将 intent 传递给调用的组件,并完成组件的调用。因此,intent 在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调 用者之间的解耦。2.1.1intent抽象描述的内容在 android 参考文档中,对 intent 的定义是执行某操作的一个抽象描述。首先,是要执行的动作(action)的一个简要描述。其次,是执行动作要操作的数据(data),android 中 采用指向数据的一个uri 来表示。另外,除了 action 和 data 这两个重要属性外,还有一些附加属性:category(类别),被执行动作的附加信息。type(数据类型),显式指定 intent 的数据类型(mime)。一般 intent 的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。component(组件),指定 intent 的的目标组件的类名称。通常 android 会根据 intent 中包含的其它属性的信息,比如 action、data/type、category 进行查找,最终找到一个与之匹配的目标组件。但是,如果 component 这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,intent 的其它所有属性都是可选的。extras(附加信息),是其它所有附加信息的集合。使用 extras 可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在 extras 里,传给电子邮件发送组件。总之,action、data/type、category 和 extras 一起形成了一种语言。这种语言使系统能够理解诸如“查看某联系人的详细信息”之类的短语。随着应用不断的加入到系统中,它们可以添加新的 action、 data/type、category 来扩展这种语言。应用也可以提供自己的 activity 来处理已经存在的这样的“短语”,从而改变这些“短语”的行为。2.2.2android 解析 intent 的过程在应用中,我们可以以两种形式来使用 intent:a、直接 intent:指定了 component 属性的 intent(调用 setcomponent(componentname)或者setclass(context, class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。b、间接 intent:没有指定 comonent 属性的 intent。这些 intent 需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此 intent 的组件。对于直接 intent,android 不需要去做解析,因为目标组件已经很明确,android 需要解析的是那些间接 intent,通过解析,将 intent 映射给可以处理此intent 的 activity、intentreceiver 或 service。intent 解析机制主要是通过查找已注册在 androidmanifest.xml 中的所有 intentfilter 及其中定义的 intent,最终找 到匹配的 intent。在这个解析过程中,android 是通过 intent 的 action、type、category这三个属性来进行判断的,判断方 法如下:如果 intent 指明定了 action,则目标组件的 intentfilter 的 action 列表中就必须包含有这个 action,否则不能匹配;如果 intent 没有提供 type,系统将从 data 中得到数据类型。和 action 一样,目标组件的数据类型列表中必须包含 intent 的数据类型,否则不能匹配。如果 intent 中的数据不是 content: 类型的 uri,而且 intent 也没有明确指定它的 type,将根据 intent 中数据的 scheme (比如 http: 或者 mailto: ) 进行匹配。同上,intent 的 scheme 必须出现在目标组件的 scheme 列表中。如果 intent 指定了一个或多个 category,这些类别必须全部出现在组建的类别列表中。比如 intent 中包含了两个类别:launcher_category 和alternative_category,解析得到的目标组件必须至少包含这两个类别。2.3eclipse介绍eclipse 是一个集成开发环境(integrated development environment)。其前身是 ibm 的 visual age for java(va4j)。eclipse 是可扩展的体系结构,可以集成不同软件开发供应商开发的产品,将他们开发的工具和组件加入到 eclipse 平台中。随 java 应用的广泛,各大主要软件供应商都参与到 eclipse 架构开发中,使得eclipse 插件数量与日增加。eclipse 平台的免费,架构的成熟,行业协会 eclipse基金会的支持,使得很多的 java 开发采用了 eclipse 架构。插件(plug-in)是遵循一定规范的应用程序结构编写出来的程序,也成为扩展,不同于组件。eclipse 正是一个精心设计的、可扩展的核心结构。通过插件的形式,将根据自己需要选择的扩展开发工具集成到 eclipse 平台核心。因此使得可以避免因过去不兼容工具带来的麻烦,降低开发出成本,大幅度提高工作效率。eclipse 本身作为一个开放源码的软件项目,它主要包含 3 个子项目:平台子项目,java 开发工具(jdt-java)子项目,插件开发环境(pde-plug-in)子项目。其中,java 开发工具 jdt 为开发人员提供大量的集成工具集,主要为 java应用程序提供编程接口(api)。eclipse 软件开发工具箱(sdk)是主要有 eclipse 本身的项目软件和其他一些开发源吗的第三方软件组成。次者,插件开发环境(jdt)则为插件开发和测试提供相应的环境,如:创建插件清单文件、定义扩展点等。图 2-2eclipse 体系结构图其他的 java 集成开发环境有 jbuilder、webspher studio、 netbeans。然而eclipse 以其强大的可扩展性和开放性脱颖而出,拥有为数众多的支持者,也被许多大的企业所青睐。图2-2很好的描述了eclipse体系结构图。第三章 需求分析3.1可行性分析1)技术可行性:本软件以eclipse作为开发环境,安装androidsdk,结合android语言中的activity、intent等类,实现相关的api。从技术可行性角度考虑技术完成成熟,因此本软件设计与实现是可行的。2)经济可行性:本软件开发成本极低,无须额外的人力资源、物力资源和财力资源。而且,本系统的经济效益会远大于开发成本,从经济可行性角度考虑是可行的。3)操作可行性:系统硬件为智能手机,手机操作系统为android, 而且编程环境eclipse为专业程序员使用工具,比较易于使用,可行。3.2系统总体需求分析根据用户的需求,本软件实现的功能就是设置手机的情景模式。在会议时,用户可以设置手机情景模式为振动。在工作时,用户可以设置手机情景模式为响铃。在睡觉时,用户可以设置手机情景模式为静音。此外,还有定时情景模式,用户可以对任何时间点设置情景模式。最重要的一点,用户也可以根据的自己的需要设置自定义情景模式。此外,本软件还要给用户“简洁、流畅、舒适”的使用环境。3.3开发运行环境开发此系统所需的基本软、硬件环境为:windowsxp 或 windows7或windows8;pentium100 及以上档次的 pc 及其兼容机;128m 以上内存措施;1g 以上可用硬盘空间;开发环境eclipse第四章 情景模式的设计思想4.1情景模式的设计特点本软件建立在android平台之上,有以下特点:1. 开源性android 操作系统核心是基于 linux kernel 的,它是典型的开源系统。2. 界面清楚,操作简单便捷本软件界面清晰明亮,操作简单便捷。4.2情景模式的设计详细的软件结构分析图如图4-1所示。情景模式普通情景模式定时情景模式自定义情景模式图4-1情景模式功能结构图4.3程序的流程软件的输入输出及模块间的调用情况用可以ipo图表示。如图4-2所示。开 始显示系统按钮键选择操作普通情景模式定时情景模式自定义情景模式返回图4-2 情景模式流程图第五章 情景模式的具体实现5.1情景模式界面类情景模式界面类ringprofile是该类是通过扩展基类activity得到的,是根据用户需求设定数据及其类型。部分代码如下:public void oncreate(bundle savedinstancestate)super.oncreate(savedinstancestate);setcontentview(r.layout.main);/取得tabhost对象mtabhost = gettabhost(); /* 为tabhost添加标签 */新建一个newtabspec(newtabspec)/设置其标签和图标(setindicator)/设置内容(setcontent) mtabhost.addtab(mtabhost.newtabspec(tab_test1) .setindicator(普通情景模式,getresources().getdrawable(r.drawable.icon) .setcontent(r.id.radiogroup01); mtabhost.addtab(mtabhost.newtabspec(tab_test2) .setindicator(定时情景模式,getresources().getdrawable(r.drawable.timeprofile) .setcontent(r.id.relativelayout01); mtabhost.addtab(mtabhost.newtabspec(tab_test3) .setindicator(自定义情景模式,getresources().getdrawable(r.drawable.addprofile) .setcontent(r.id.absolutelayout03); /设置tabhost的背景图片资源 mtabhost.setbackgroundresource(r.drawable.bg); /设置当前显示哪一个标签 mtabhost.setcurrenttab(0); mtab = 0; updateradiogroup(); /初始化,取得audiomanager audioma = (audiomanager)getsystemservice(context.audio_service); myimage = (imageview)findviewbyid(r.id.myimage); myprogress = (progressbar)findviewbyid(r.id.myprogress); downbutton = (imagebutton)findviewbyid(r.id.downbutton); upbutton = (imagebutton)findviewbyid(r.id.upbutton); normalbutton = (imagebutton)findviewbyid(r.id.normalbutton); mutebutton = (imagebutton)findviewbyid(r.id.mutebutton); vibratebutton = (imagebutton)findviewbyid(r.id.vibratebutton); /标签切换事件处理,setontabchangedlistener mtabhost.setontabchangedlistener(new ontabchangelistener() override public void ontabchanged(string tabid) if ( tabid.equals(tab_test1) ) mtab = 0; malarmmanager = (alarmmanager)getsystemservice(context.alarm_service); mtimepicker = (timepicker)findviewbyid(r.id.timepkr); mtimepicker.setis24hourview(true); updateradiogroup(); else if ( tabid.equals(tab_test2) ) mtab = 1; malarmmanager = (alarmmanager)getsystemservice(context.alarm_service); mtimepicker = (timepicker)findviewbyid(r.id.timepkr); mtimepicker.setis24hourview(true); updateradiogroup(); ); 5.2情景模式类情景模式类vibrate、silent、ring、ringandvibrate,类为情景模式的实现类。部分代码如下:/ 铃声和震动protected void ringandvibrate(audiomanager audio)audio.setringermode(audiomanager.ringer_mode_normal);audio.setvibratesetting(audiomanager.vibrate_type_ringer, audiomanager.vibrate_setting_on);audio.setvibratesetting(audiomanager.vibrate_type_notification, audiomanager.vibrate_setting_on);/ 铃声protected void ring(audiomanager audio)audio.setringermode(audiomanager.ringer_mode_normal);audio.setvibratesetting(audiomanager.vibrate_type_ringer, audiomanager.vibrate_setting_off);audio.setvibratesetting(audiomanager.vibrate_type_notification, audiomanager.vibrate_setting_off);/ 震动protected void vibrate(audiomanager audio)audio.setringermode(audiomanager.ringer_mode_vibrate);audio.setvibratesetting(audiomanager.vibrate_type_ringer, audiomanager.vibrate_setting_on);audio.setvibratesetting(audiomanager.vibrate_type_notification, audiomanager.vibrate_setting_on);/ 静音protected void silent(audiomanager audio)audio.

温馨提示

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

评论

0/150

提交评论