面向android手机的人脸识别系统的研发.docx
- 文档编号:112718
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:28
- 大小:46.93KB
面向android手机的人脸识别系统的研发.docx
《面向android手机的人脸识别系统的研发.docx》由会员分享,可在线阅读,更多相关《面向android手机的人脸识别系统的研发.docx(28页珍藏版)》请在冰点文库上搜索。
面向android手机的人脸识别系统的研发
本科毕业设计(论文)
面向android手机的人脸识别系统的研发
学院计算机学院
专业计算机科学与技术
年级班别2009年1班
学号
学生姓名
指导教师
2020年11月
摘要
随着信息技术的飞速成长和成熟,现代信息技术已经渗入到人们日常生活的方方面面。
人们无论是工作、生活、休闲娱乐,都会与各种信息媒介发生打交道,而接触的同时,也会产生个人隐私信息泄漏的隐患。
由于互联网应用而产生的隐私泄露已经屡见不鲜,邮箱、游戏帐号等信息会由于网络环境的开放而产生被盗取的危险,人们已经时刻警惕并采取了类似安装电脑杀毒软件、防火墙等的方式加以保护。
此外,十几年来发展至今的移动通讯工具——手机,已经由起初的简单通讯设备,逐渐演变为集合越来越多的个人应用并可移动获取资讯的新的个人信息中心。
开放式手机平台的普及标志着智能手机时代已经来临,就中国而言,2008年末3G牌照的正式发放,更使得手机终端各种新应用服务势如春笋,而由于手机作为新一代个人信息中心,关于手机产生的“隐私”和“信息安全”的关注度也随之提升。
作为个人的信息移动终端,手机的私密性更强,用户在手机上的私人信息与自身利益更加相关。
手机的通讯录,通话记录,短信这些信息都已成为了您重要的私密信息。
近期以来,随着各种手机信息安全事件及隐私泄漏事件的频频出现,手机防偷窥和防信息泄露的越来越收到人们的关注。
关键词:
智能手机,个人信息安全,加密解密
Abstract
Withtherapiddevelopmentofinformationtechnologyandbecomemoreandmoremature,moderninformationtechnologyhaspenetratedintoeveryaspectofpeople'sdailylives.Whetherpeoplework,life,entertainment,theycannotdealwithallkindsofinformationwithoutmediaoccurs.whenpeopleclosetothemediaoccurs,italsobadtopeoplebecauseofthehiddendangerfromprivacyinformation.
MoreandmoreprivacyhasbeenhappenbecauseoftheIntent,Themailbox,gameaccountinformationsuchasthenetworkenvironmentofopeninguphasbecomeeasytostolenrisk.Peoplehavetobevigilantandtoadoptasimilarinstallationofcomputerantivirussoftware,firewalltoprotecttheirprivacy.Inaddition,sincethedevelopmentoftenyears,themobilecommunicationtool--mobilephone,thisSimplecommunicationequipmenthasbecomenewPersonalinformationcentercollectionandmobileaccesstoinformation,open-endedmobilephoneplatformpenetrationmarkstheeraofintelligentmobilephonehascome.AsfarasChinaisconcerned,theformalissuanceof3Glicensesissuancebytheendof2008,somoreandmorevariousnewapplicationservicehasbeenproduced,asthemobilephoneasanewgenerationofpersonalinformationcenter,attentiononmobilephoneproduces"privacy"and"informationsecurity"willincrease.
Keywords:
keyword1,keyword2,keyword3
1绪论
1.1研究目的和意义
在信息社会,信息安全关乎着每一位信息相关者的切身利益。
随着3G网络的大规模建造及其业务的逐步应用,宽带移动通信呈现高速发展态势。
移动通信在运行中存在两大安全隐患:
一是一旦手机失窃或丢失,存入手机内的信息资源会随之丢失,并可能产生一系列负面影响;二是手机的短信、通讯录等信息传输常遭到非法读取,机主正当通讯权益遭受威胁。
伴随着手机应用业务的发展,信息安全需求越来越显得重要。
移动设备信息安全,是当前应用领域前沿热点问题。
尽管国内外对此有比较广泛的研究,但是还不够深入,还没有真正有效的市场产品。
本项目将研发一种基于人脸识别系统android手机安全软件,旨在解决上述信息安全问题。
该安全软件融合人脸生物特征值技术和对私人信息加解密技术,以人脸特征标识符和随机字符为密钥,建立信息加密体系,实现加密密钥的防盗换,并以此实现手机安全认证和短信、通讯录等信息隐匿传输。
为此,我们将致力于手机人脸图像捕获、人脸检测、人脸识别算法,手机加密算法,等关键问题的研究,以期实现突破,建立有效的对手机信息及数字内容安全算法及软件,以及合理的处理与响应速度。
项目所研发的新型手机信息及数字内容安全软件,将在相关手机操作系统和开发软件环境下作试验。
1.2国内外技术发展现状与趋势
中国报告大厅《2012年中国手机市场研究预测报告》研究表明,2010年全球手机销量上升32%达到1.6亿部。
智能手机销量较去年同期增长72%至297万台,基于Android平台的设备,其销售增加了近十倍至67亿美元。
《2012年中国手机市场研究预测报告》研究表明,中国移动终端市场2010年第4季度国内手机销售总量达6759.8万部(不计黑手机和水货手机),环比增长5%。
本季度3G手机销量突破了1500万大关,环比增长24.5%。
截止2010年12月,CDMA手机已占中国手机市场销量的25.7%,其中,名列国内CDMA手机市场2010年度销量前两位的企业分别是三星和华为。
就手机中应用的生物识别技术而言,目前有提到的只有指纹、声音、人脸识别三种种方法。
2011年美国摩托罗拉公司推出了带指纹识别3G手机ME960;而三星的上代旗舰手机的文件系统底层里面,发现了“SecSettings.apk”文件和指纹识别相关图片,苹果也在去年夏天收购了安全技术公司AuthenTec,更和仿生安全系统公司Microlatch达成交易。
但是现在我们还没见到苹果手机有相关的技术成果,不过也表明苹果公司也在致力于研发指纹识别方面的技术。
声音识别技术在手机中的应用早在五年前已经开始研制,并在目前的多款手机中应用[2]。
2011年10月19日,谷歌和三星在香港召开新闻发布会,正式发布代号为“冰激凌三明治”的谷歌新一代Android4.0系统以及三星GALAXYNexus智能手机。
谷歌新一代Android4.0系统拥有全新设计的UI,界面简化,运行速度能力提升。
系统内置全新的壁纸,在使用手机上的触摸按钮时会出现发光效果,并且增加了语音输入、人脸识别、照片编辑、流量监测、AndroidBeam功能。
而在最新的报道里面,谷歌还准备在谷歌眼镜里面添加人脸识别功能,但Glass产品总监SteveLee之前曾对纽约时报讲述过,除非有隐私保护政策,否则不会加入人脸识别功能。
而和android手机一样操作系统的平板电脑,谷歌公司推出了一项新的功能,当用户通过Android平板电脑观看电影并按下暂停键时,可以自动在屏幕上提供电影演员和音乐的背景信息。
而完成机主识别过程,同时利用生物特征值和数字水印对手机内的数字内容、短信、个人名片簿等重要信息加密或隐藏,有效提升了个人信息的安全性。
这项应用现在也有很多三方应用在android市场出现。
1.2.1题目研究方法
Android的安全设计包括以下两个原则:
在默认情况下,在android平台下运行的应该程序没有权限执行对其他应用程序,操作系统有害的操作。
这些操作包括读写用户的隐私数据(如联系方式或短信)等。
(2)Android应用程序的进程是运行在一个安全的“沙箱”环境中。
它不能干扰其他应用程序,除非它明确声明权限。
这些权限请求能够被不同方式的操作所处理,特别的要基于证书和用户的提示被自动允许或禁止。
而且权限请求在应用程序中被声明为静态,所以在此之后在安装的时候系统会预先知道。
基于android的安全设计原则,我们无法对手机的隐私数据直接操作,而谷歌的android手机系统的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,只要取得root权限,就可以对手机的一切信息进行操作,但是有利有弊,root权限对手机的安全造成了很大的影响,而谷歌在设计android系统的时候为了提供为用户一个良好的平台也提供了一个私人信息同步的模块,为了此模块,android设计了数据存取与共享机制ContentProvider为应用程序提供一些访问方法,使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专着于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据[12]。
但是此共享机制必须得到相应的权限,而且用户在安装此类软件的时候会提示用户。
所以加密解密此模块就是建立在ContentProvider这种共享机制上面。
通过间接的方式对手机拥有者的个人隐私信息进行读取,加密解密。
2相关技术
2.1Android系统
Android一词的本义指“机器人”同时也是Google。
于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
它采用软件堆层(SoftwareStack,又名软件叠层)的架构,主要分为三部分。
底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机VirtualMachine,由C++开发。
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分,不存在任何以往阻碍移动产业创新的专有权障碍。
Google通过与软、硬件开发商、设备制造商、电信运营商等其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统[1]。
对于设备制造商来说,Android是一个免费的平台。
对硬体开发厂商来说,Android是个开放的平台。
只要厂商有能力,可以在这个平台上自由加入特有的装置或功能,不受手机作业系统厂商的限制。
对于手持装置的开发者来说,Android是个先进的平台。
平台上的应用程式可相容于各种型号的Android手机,免去为各种不同手机机型开发的困扰。
Android平台支援各种先进的网络、绘图、3D处理能力,可以用来提供更好的使用者体验。
Android它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。
这使得越来越多的人关注这个操作系统。
关键应用程序:
Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历、网页浏览器等,而更多有特色的Android应用程序还有待于广大开发者共同参与开发[3]。
Java程序运行环境:
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
Linux内核:
Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层。
Android应用程序以各种组件(API)为基础,API是Android软件平台的重要组成部分,也是开发Android应用的关键所在[4]。
当前活动程序Activity:
作为最常用的应用程序组件,几乎所有Activity都会通过创建UI窗口与用户进行交流。
Activity具有生命周期,它包含运行、暂停、停止等几个状态,状态间的转换可通过调用onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestory()等方法来实现。
要开启新的activity,可以调用startActivity(Intent),或调用startSubActivity(Intent,int),后者通常和onActivityResult(int,int,String,Bundle)联合使用,以从一个activity获取某结果并返回给打开它的activity[5]。
事件Intent:
Intent抽象描述了想要执行的某种操作,它与startActivity一起使用可以开启新的activity,与startService一起使用可以开启后台服务。
Intent最重要的作用还是加载activity,它是不同activity间的桥梁。
Intent也可以被认为是一种概括操作行为的数据结构,它主要包括action(动作)和data(数据)两部分,此外它还具有一些附加属性如category(intent种类)、type(数据类型)等。
常用的Intent方法有intent()(构造intent)、addcategory()(添加intent类型)、getAction()(获取intent动作)、getData()(获取intent数据)等[6]。
数据存取与共享机制ContentProvider:
ContentProvider为应用程序提供一些访问方法,包括:
Query(Uri,String[],String,String[],String,String,String)(数据信息的查询),insert(Uri,Contentvalues)(在Contentprovider中添加新数据),updata(Uri,Contentvalues,String,String[])(更新Conntprovider中的数据),delect(Uri,String,String[])(删除数据),Gettype(Uri)(获取数据类型)。
其中,Uri标明了ContentProvider存储的数据类型,在执行访问方法时都需依据Uri作为路径标识来确定要访问哪个ContentProvider。
后台服务Service:
Service是运行在后台的应用程序组件,不直接与用户交互。
当前活动程序可以使用Context.StartService()开启一项后台服务,还可以通过Context.bindService()与后台服务通信[7]。
Android的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图2-1。
通过编译基于框架的应用程序可以降低开发负荷。
应用软件原则上是在DalvikVM上运行的。
图2-1Android架构图
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。
Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。
这是被优化过的最小内存依赖的格式。
Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。
Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制,和内存管理机制等。
2.2Android应用的构成和工作机制
对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。
在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。
这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等[8]。
2.2.1Activity
Activity是构成应用程序中最重要的构造块,在Android应用程序中,几乎都是通过Activity来与用户进行交互,所以Activity主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用setContentView(View)方法来显示你自己的用户界面[9]。
活动(Activity)在系统中以活动栈的形式进行管理。
当一个新的活动启动后,被放到了栈顶,成为了运行活动,而新活动之前的活动在活动栈里总位于新活动之下,直到新的活动退出才重新回到前台。
从图2-2可以看出,Activity有三个关键的循环:
(1)活动的整个生命期:
从首次调用onCreate(Bundle)开始,到最终调用onDestroyO结束。
在onCreate()中进行所有初始化,在onDestroyO时进行清理工作,释放资源。
(2)活动的可见生命期:
从调用onStart()开始,到onStop()被调用为止。
在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。
在这两个方法调用之间,可以维护活动显示给用户的资源。
onStart()和onStop()方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。
(3)活动的后台生命期:
从调用onResume()开始,到onPause()被调用为止。
这段时间内活动处于其它所有活动之前,并与用户进行交互。
一个活动可以不断在resumed状态和paused状态之间变换。
Android使用了Intent类来实现活动之间的切换工作。
Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。
根据Intent的描述,负责找到对应的组件,将Intent传递给调用的组件并完成组件的调用。
因此,Intent起着一种媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
在应用中,我们可以以两种形式来使用Intent:
直接Intent,指定了component属性的Intent,通过指定具体的组件类,通知应用启动对应的组件。
间接Intent,没有指定component属性的Intent,则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此Intent的组件[10]。
图2-2Activity状态变换路径图
2.2.2IntentReceiver
IntentReceiver是用于对外部事件的响应,当外部事件发生时,会使用NotificationManager通知用户。
当一个IntentReceiver被触发时,系统会在需要的时候启动对应的应用程序。
如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。
各种应用还可以通过使用Context.BroadcastIntent()将它们的IntentReceiver广播给其它的应用程序,实现应用之间的通讯[11]。
2.2.3Service
Service是提供连续信息的应用程序。
它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台,直到用户停止该服务或服务运行结束。
本系统客户端扩展功能就是采用Service来进行设计和开发的。
2.2.4ContentProvider
ContentProvider应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。
当应用程序需要使用存储设备中的数据时,可以使用ContentProvider来完成。
使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专着于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据。
2.3开发语言—java语言简介
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和(即JavaSE,JavaEE,JavaME)的总称。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显着优势和广阔前景。
2.3Android开发工具及平台搭建
Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。
只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的JavaSDK(其中包括JRE:
JavaRuntimeEnvironment)。
此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的AndroidSDK。
同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。
简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。
(1)JavaSDK
(2)Eclipse
(3)AndroidSDK
(4)ADT
Android开发平台搭建步骤:
“Add”“Workwith”下拉菜单中选择刚才输入的网址。
过一会就会出现一个DeveloperTools选项,勾上以后点击Next以后Eclipse会自动网上查找Android开发工具插件,然后要到AndroidDDMS和AndroidDevelopmentTools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。
(3)重启后选择Eclipse菜单中的Windows->Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。
(4)在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。
2.4SQLite数据库
SQLite是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。
它是D.RichardHipp建立的公有领域项目。
不像常见的客户-服务器范例,SQLite不是个与之通信的独立进程,而是连接到程序中成为它的一个主要部分。
所以主要的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 android 手机 识别 系统 研发