基于Android系统的情景模式的设计与实现Word文件下载.docx
《基于Android系统的情景模式的设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Android系统的情景模式的设计与实现Word文件下载.docx(22页珍藏版)》请在冰点文库上搜索。
第一章绪论
1.1手机操作系统简介
手机的用户群日益庞大,在人民生活中手机起到愈加重要的作用。
在2010年1月由一个网站所做的调查表明,中国手机用户数量将达到七点四亿多。
全国的手机及其它具有手机功能的设备的用户群体,这个数量还在继续增长。
这样一来,就有更多的手机厂商也都想抓住商机赢得更多用户,.所以也就涌现出许许多多的手机品牌和手机操作系统,我们大家所知道的有如:
Symbian,PalmOS,WindowsMobile,Smartphone等等,这里对手机品牌不作介绍,对于手机的操作系统,这些系统中,每个系统也有许多版本,有的版本是智能的,有的版本非智能的,各有各的特色和优缺点,这里不对各个系统进行详细的评论。
Google公司推出了一套手机操作系统Android,并宣布Google要进军手机领域,宣称其手机系统是一个开放平台,所以就引来了许多的手机厂商的关注和极大的兴趣。
由于Android系统是基于标准的Linux内核开发的一套嵌入式系统,也可以说Android系统的核心部分(不包括上层应用程序部分)是Linux系统,所以该论文在介绍Android系统移植开发之前,也就会描述和介绍通用嵌入式Linux系统移植的有关软件内容,对于涉及硬件方面不作过多的描述。
1.2手机操作系统目前现状
近来微电子技术的迅猛发展,处理器升级增长的速度也随之加快,嵌入式系统领域发生了翻天覆地的变化,特别是现在网络的普及,可以使嵌入式系统具备网络的功能,嵌入式与网络也就成为当今最热门的技术,从而使得嵌入式系统得以更广泛的应用,应用到了各个领域,但是在这众多的应用中,我们最有切身体会的就是手机的使用。
接下来就针对常见的几款智能手机系统简单介绍一下:
(1)WindowsMobile系列操作系统是微软在计算机的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,WindowsMobile,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的应用软件部分,ApplicationFramework是Android的应用软件框架模型,AndroidRuntime是Android系统的运行库,Libraries是Linux系统的标准库,LinuxKernel是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的嵌入式设备作了调整。
媒体库,基于PacketVideo'
sOpenCORE;
该库支持回放和录制大量流行的音视频格式和静态图片,包括MPEG4,H.264,MP3,AAC,AMR,JPG,和PNG。
⑷Surface管理,用于管理显示子系统和无缝合成不同应用的2D和3D图形层。
⑸LibWebCore,先进的web浏览器引擎。
被用来构建Android浏览器和内嵌的web视图。
⑹SGL,底层的2D图形引擎。
⑺3D库,一套OpenGLES1.0APIs的实现;
该库使用硬件加速(当硬件可用时)或者高度优化的3D软件光栅。
⑻FreeType,用于点阵和矢量字体渲染。
⑼SQLite,能够被所有应用使用的强大的轻量级的关系数据库引擎。
SSL,(SecureSocketsLayer),中文名为“安全套接层协议层”,它是网景(Netscape)公司提出的基于WEB应用的安全协议,当前版本为3.0。
SSL协议指定了一种在应用程序协议(如HTTP、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。
它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
SSL协议可分为两层:
SSL记录协议(SSLRecordProtocol):
它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSLHandshakeProtocol):
它建立在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是一个集成开发环境(IntegratedDevelopmentEnvironment)。
其前身是IBM的VisualAgeforJava(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、WebSpherStudio、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操作系统核心是基于LinuxKernel的,它是典型的开源系统。
2.界面清楚,操作简单便捷
本软件界面清晰明亮,操作简单便捷。
4.2情景模式的设计
详细的软件结构分析图如图4-1所示。
图4-1情景模式功能结构图
4.3程序的流程
软件的输入输出及模块间的调用情况用可以IPO图表示。
如图4-2所示。
图4-2情景模式流程图
第五章情景模式的具体实现
5.1情景模式界面类
情景模式界面类RingProfile是该类是通过扩展基类Activity得到的,是根据用户需求设定数据及其类型。
部分代码如下:
publicvoidonCreate(BundlesavedInstanceState)
{
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));
tab_test2"
定时情景模式"
getResources().getDrawable(R.drawable.timeprofile))
.setContent(R.id.RelativeLayout01));
tab_test3"
自定义情景模式"
getResources().getDrawable(R.drawable.addprofile))
.setContent(R.id.AbsoluteLayout03));
//设置TabHost的背景图片资源
mTabHost.setBackgroundResource(R.drawable.bg);
//设置当前显示哪一个标签
mTabHost.setCurrentTab(0);
mTab=0;
updateRadioGroup();
//初始化,取得AudioManager
audi