高毅
【摘 要】随着时代的发展,人们对于信息获取的需求日益增强。相对电视、互联网络等方式,智能手机凭借其可以随时随地获取和处理信息的优势,逐渐成为人们获取信息的一种重要手段。在Google最开始推出Android的时候,Android是以移动设备的操作系统的身份存在的,然而随着这几年的发展,Android的定位已经悄然起了变化。基于Android上的开发层出不穷,基于该平台来开发手机应用管理软件具有良好的市场背景,一个好的应用管理工具将使用户更容易地操作系统。本文主要描述基于Android平台对手机的加密和防盗功能进行探究与实现。
【关键词】Android;平台;加密;防盗
0 引言
当今信息产业高速发展,移动通信技术作为信息社会的主要支撑技术之一也飞速发展着。手机也经历了从最初只提供简单的通讯服务向更多扩展业务功能发展历程。智能手机是一种在手机内安装了相应开放式操作系统的手机,至2008年底就约有4.5亿部。我们看到智能手机正朝着两个不同的方向发展:Mac OS侧重于应用,而Windows Mobile和Symbian侧重于智能手机任务和通讯,Android操作系统则两者兼顾,鱼与熊掌兼得。
1 系统相关技术概述
1.1 Android平台的优势
Android平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动平台。该平台具有以下优势:
1.1.1 开放性手机平台
Android是Google开发的基于Linux平台的开源手机操作系统。Google通过与运营商、设备制造商、手机公司和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的智能手机操作系统,在移动产业内形成一个开放式的生态系统。
1.1.2 网络集成性很高
Android内部集成了大量的Google应用,如Gmail、Reader、Map、Docs、Youtube等等,涵盖了生活中各个方面的网络应用,对于长期使用网络、信息依赖度比较高的人群而言很合适。
1.1.3 Android具备新特性
自从Google开发出Android后,许多人认为其技术可信度比其他操作系统略胜一筹,但这并不是用户购买Android智能手机的唯一原因。人们认为Android是一种相对比较新的、又较为成熟的技术,在达到巅峰之前还有很大的发展空间。
1.1.4 Android平台在数量上逐渐主宰市场,该平台的发展势头正稳步增长。
1.1.5 Android在其他领域的拓展
Android不仅促进了手机产业的发展,它的全面计算服务和丰富的功能支持,已将应用拓展到手機以外的其他领域。Android平台的通用性可以适用于不同的屏幕、有线和无线设备。Android的系统和应用程序开发人员将更多的涉足多媒体、移动互联网设备、数字视频和家庭娱乐设备、汽车、医药、网络、监测仪器和工业管理、机顶盒等新领域。
图1 Android应用的构成和工作流程
1.2 Android主要组件
对于一个Android应用程序来说,是由Activity、Intent Receiver、Service、Content Provider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Android应用的构成和工作流程如图1所示:Activity之间通过Intent实现切换;Activity可以通过Content Provider获取其他应用程序的数据;Activity通过Intent Receiver监听系统事件;Activity可以用Binder对Service进行绑定。
1.3 主要技术介绍
1.3.1 BroadcastReceiver
BroadcastReceiver用于接收并处理广播通知。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来响应重要的通知。BroadcastReceiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最典型的是在状态栏显示一个图标,这样用户就可以点击打开通知内容。Activity中有注册一个广播监听器的方法registerReceiver,只需要重写一个继承了BroadcastReceiver的类就可以了。
1.3.2 TelephonyManager
TelephonyManager用于获取SIM卡信息。在SIM卡中并没有保存用户的手机号码,区分每一张SIM是通过IMSI码。IMSI码是国际移动用户识别码(英文全称:International Mobile SubscriberIdentification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用0~9的数字。在运营商的数据库中存在手机号码和IMSI码的映射,所以手机是通过发送IMSI码到运营商的一端,获得自己的手机号码。
1.3.3 SharedPreferences
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。SharedPreferences对象与SQLite数据库相比,免去了创建数据库、创建表、写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其只能存储boolean,int,float,long和String五种简单的数据类型,无法进行条件查询等。
1.3.4 Service
Service是Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果退出应用时,Service进程并没有结束,它仍然在后台运行。比如当我们一个应用的数据是通过网络获取的,不同时间(一段时间)的数据是不同的,这时候我们可以用Service在后台定时更新,而不用每次打开应用的时候再去获取。Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法。这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。
2 系统设计
2.1 加密功能设计
加密功能由10个部分组成,图2为该功能模块的类图,图3为该功能模块的流程图。各个类的具体作用如下:
(1)LocusPassWordView:继承View类,主要是用来绘制轨迹球界面、存储用户输入的密码、点击重置时清空密码。
(2)LoginActivity:继承Activity类,成员变量为LocusPassWordView类,判断是否已设置密码,如果已经设置密码,则让用户输入密码;如果未设置密码,则进入设置密码界面。
(3)MainActivity:输入密码正确后进入该界面,提示是否重置密码。
(4)Point:定义点的三种状态(未选中、选中正确、选中错误),点的下标,初始状态设置为0。
(5)SetPasswordActivity:继承Activity类,重置密码。
(6)BitmapUtil:缩放图片,图片圆角处理。
(7)MathUtil:计算两点间的距离,计算直线的角度。
(8)RoundUtil:判断点是否在圆内。
(9)StringUtil:判断密码是否为空。
(10)ListenService:监听服务,把加密的应用程序存储到队列中,如果当前运行的应用程序已加密,则弹出解锁页面,如果没有加密,则直接进入该程序。
图2 加密功能类图
图3 加密功能流程图
2.2 防盗功能设计
防盗功能是在手机丢失时,开启防盗功能的前提下,程序判断SIM卡信息,如果检测到已經发生变化,则给指定安全号码发送短信,帮助主人找回手机。首次进入该软件,要先设置密码,防止别人关闭该软件。非首次进入时则直接输入密码,也可以重置密码,图4为该模块的流程图。
图4 防盗功能流程图
防盗功能模块主要由两个类组成:PhoneProtectActivity类和Receiver类,具体功能如下:
(1)phoneProtectActivity继承Activity类,主要是实现界面按钮的点击事件及存储输入的信息。定义isFirst变量来判断是否是首次进入该软件,初始化为1,表示是首次进入,弹出设置密码对话框,将输入的用户名和密码存储到“data.xml”文件中,isFirst状态置为0,表示非首次进入。非首次进入该软件时,弹出输入密码对话框,输入用户名和密码后,验证是否跟“data.xml”里面存储的值一致,如果一致可以进入该软件,不一致则提示错误。用户也可以选择重置密码,如果输入旧密码和“data.xml”里面存储的值一致且两次输入新密码一致,则修改密码成功,修改“data.xml”里面存储的值,返回输入密码界面,输入用户名和新密码后可以进入该软件。定义isStart变量来判断是否已开启防盗功能,初始化为0,表示没有开启功能,输入安全号码后,点击开启防盗按钮,则安全号码输入框不能编辑,开启防盗按钮变为关闭防盗。输入的安全号码存储到“data.xml”文件中,isStart状态置为1,表示已启用,当前手机SIM卡的IMSI号码存储到“data.xml”文件中,代码如下:(下转第50页)
(上接第14页)(2)Receive类是一个广播接收器,继承BroadCastReceive类,获取“Data.xml”中存储的值,如果isStart状态为已启用且手机IMSI码信息与当前不一致,则发送一条信息给安全号码。
3 结束语
本文探讨了基于Android的手机的加密防盗系统的设计和实现过程。首先介绍了当前背景、Android平台的优势以及Android主要组件和系统用到的主要技术,最后从整体上描述加密功能和防盗功能的设计。近年来由于Android平台良好的开放性和便捷性等特点,采用Android平台的智能手机越来越受到人们的青睐,Android平台在智能手机领域中所扮演的角色也越来越重要。
【参考文献】
[1]罗伟.基于Android平台的即时通讯系统的研究与实现[D].湖南师范大学,2009.
[2]公磊,周聪.基于Android的移动终端应用程序开发与研究[J].计算机与现代化,2008(8):85.
[3]W.Frank Ableson, Charlie Collins, Robi Sen. Google Android揭秘[M].张波,高朝勤,杨越等,译.北京:人民邮电出版社,2010:16.
[4]赵亮,张维.基于Android技术的界面设计与研究[J].电脑知识与技术,2009,5(29):8183.
[5]张仕成.基于Google Android平台的应用程序开发与研究[J].电脑知识与技术,2009,5(29):7959.
[6]吴宏森,宋顺林.MVC架构在工程项目管理系统中的应用[J].微计算机信息,2006,22(22):256.
[责任编辑:汤静]