相对于电视、互联网络等方式而言,智能手机凭借其可以随时随地获取和处理信息的优势,逐渐成为人们获取信息的一种重要手段。特别是随着Android系统的推出,其手机应用也变得相当的广泛,但其安全性也引起了我们的广泛关注,为此,我们提出了一种基于Android的手机加密防盗系统。
一、Android系统相关技术概述
1、Android平台的优势
Android平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动平台。该平台具有以下优势:
1)开放性手机平台
Android是Google开发的基于Linux平台的开源手机操作系统。Google通过与运营商、设备制造商、手机公司和其他有关各方结成深层次的合作伙伴关系.希望借助建立标准化、开放式的智能手机操作系统,在移动产业内形成一个开放式的生态系统。
2)网络集成性很高
Android内部集成了大量的Google应用,如Gmail、Reader、Map、Docs、Youtube等等,涵盖了生活中各个方而的网络应用,对于长期往用网络、信息依赖度比较高的人群而言很合适。
3)Android具备新特性
自从Google开发出Android后,许多人认为其技术可信度比其他操作系统略胜一筹。但这并不是用户购买Android智能手机的唯一原因,人们普遍认为Android是一种相对比较新的、又较为成熟的技术,在达到巅峰之前还有很大的发展空间。
4) Android平台在数量上逐渐主宰市场
该平台的发展势头正稳步增长。
5)Android在其他领域的拓展
Android不仅促进了手机产业的发展,它的全面计算服务和强大的功能支持,已将应用拓展到手机以外的其他领域。Android平台的通用性可以适用于不同的屏幕、有线和无线设备。Android的系统和应用程序开发人员将更多的涉足多媒体、移动互联网设备、数字视频和家庭娱乐设备、汽车、医药、网络、监测仪器和工业管理、机顶盒等新领域。
2、Android主要组件
对于一个Android应用程序来说,是由Activity、Intent Receiver、Service、Content Provider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。在应用程序中使用时。需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条梢等。Android应用的构成和工作流程如图1所示:Activity之间通用Intent实现切换;Activity可以通过Content Provider获取其他应用程序的数据;Activrty通过Intent Receiver监听系统事件;Activity可以用Binder对Service进行绑定。
3、主要技术介绍
1)BroadcastReceiver
Broadca stReceiver用于接收并处理广播通知。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的broadcast receivers来响应重要的通知。Broadca stReceiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最典型的是在状态栏显示一个图标,这样用户就可以点击打开通知内容。Activity中有注册一个广播监听器的方法registerReceiver,只需要重写一个继承了Broadca st Receiver的类就可以了。
2)TelephonyManager
TelephonyManager用于获取SIM卡信息。在SIM卡中并没有保存用户的手机号码,区分每一张SIM是通过IMSI码。IMSI码是国际移动用户识别码是区别移动用户的标志。储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用O-9的数字。在运营商的数据库中存在手机号码和IMSI码的映射,所以手机是通过发送IMSI码到运营商的一端,获得自己的手机号码。
3)SharedPreferences
.
SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据。通常用来存储一些简单的配置信息。其存储位置在/dataUdata,<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改。存储修改是通过Editor对象实现。SharedPreferences对象与SQLite数据库相比,失去了创建数据库、创建表、写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其只能存储boolean,int,float,long和String五种简单的数据类型,无法进行条件查询等。
4)Service
Service是Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果退出应用时,Service进程并没有结束。它仍然在后台运行。比如当我们一个应用的数据是通过网络获取的,不同时间(一段时间)的数据是不同的,这时候我们可以用Service在后台定时更新。而不用每次打开应用的时候再去获取。SeIvice的生命周期并不像Activity那么复杂,它只继承了onCreate().onStart().onDestroy()三个方法,当我们第一次启动ServiCE时,先后调用了onCreate0.onStart()这两个方法,当停止Service时,则执行onDestroy0方法。这里需要注意的是.如果Servce已经启动了,当我们再次启动Service时,不会在执行onCreate0方法,而是直接执行onStart()方法。
二、Android手机加密防盗系统设计
1、加密功能设计
加密功能由10个部分组成,图2为该功能模块的类图,图3为该功能模块的流程图。各个类的具体作用如下:
(1)LocusPassWordView:继承View类,主要是用来绘制轨迹球界面、存储用户输入的密码、点击重置时清空密码。
(2)LoginActivity:继承Activity类,成员变量为LocusPassWordView类,判断是否已设置密码,如果已经设置密码,则让用户输入密码:如果未设置密码,则进入设置密码界面。
(3)MainActivity:输入密码正确后进入该界面,提示是否重置密码。
(4)Point:定义点的三种状态(未选中、选中正确、选中错误),点的下标,初始状态设置为O。
(5)SetPasswordActivity:继承Activity类,重置密码。
(6)BitmapUtil:缩放图片,图片圆角处理。
(7)MathUtil:计算两点间的距离,计算直线的角度。
(8)RoundUtil:判断点是否在圆内。
(9)String Util:判断密码是否为空。
(10)ListenService:监听服务,把加密的应用程序存储到队列中,如果当前运行的应用程序已加密,则弹出解锁页面,如果没有加密,则直接进入该程序。
2、防盗功能设计
防盗功能是在手机丢失时.开启防盗功能的前提下.程序判断SIM卡信息,如果检测到已经发生变化,则给指定安全号码发送短信帮助主人找回手机。首次进入该软件,要先设置密码.防止别人关闭该软件。非首次进入时则直接输入密码,也可以重置密码,图4为该模块的流程图。
防盗功能模块主要由两个类组成:PhoneProtectActivity类和Receiver类.具体功能如下:
(1)phone ProtectActivity继承Activity类,主要是实现界面按钮的点击事件及存储输入的信息。定义isFirst变量来判断是否是首次进入该软件。初始化为1,表示是首次进入,弹出设置密码对话框。将输入的用户名和密码存储到“dataxml”文件中,isFirst状态置为0,表示非首次划入。非首次进入该软件时,弹出输入密码对话框,输入用户名和密码后,验证是否跟“data.xml”里而存储的值一致,如果一致可以进入该软件,才一致则提示错误。用户也可以选择重置密码,如果输入旧密码和“dEtaxml”里而存储的值一致且两次输入新密码一致,则修改密码成功,修改“dataxml”里而存储的值,返回输入密码界面,输入用户名和新密码后可以进入该软件。定义isStart变量来判断是否已开启防盗功能,初始化为0,表示没有开启功能,输入安全号码后,点击开启防盗按钮,则安全号码输入框不能编辑,开启防盗按钮变为关闭防盗。输入的安全号码存储到“data.xmr文件中,isStart状态置为1。.表示已启用,当前手机SIM卡的IMSI号码存储到“dataxml”文件中,代码如下:
(2)Receive类是一个广播接收器,继承BroadCastReceive类,获取“Data.xml”中存储的值,如果isStart状态为已启用且手机IMSI码信息与当前不一致,则发送一条信息给安全号码。
小知识之IMSI码
是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。