Android系统下人机交互解锁屏功能的应用研究
2016-09-08贺建英袁小艳唐青松
贺建英,袁小艳,唐青松
(四川文理学院 计算机学院,四川 达州 635000)
Android系统下人机交互解锁屏功能的应用研究
贺建英,袁小艳,唐青松
(四川文理学院计算机学院,四川 达州 635000)
针对智能终端设备解锁的实际应用,通过随机生成英文单词为解锁密码的方式,改变传统的解锁模式。利用SQLite数据库对数据进行存储,采用Java语言,使用MVC的设计模式,设计出一套人性化的人机交互解锁屏的平台,并利用SQLite的二分查找法快速生成解锁的密码单词,减少检索数据的时间。实验表明,本设计能有效的实现人机交互并完成解锁功能。
SQLite数据库;人机交互;MVC;二分查找;解屏
在信息化建设进程的不断推进过程中,移动智能手持设备已经成为人们获取网络信息的主要手段之一。移动智能终端设备的出现,改变了人们的生活方式,如使用终端设备进行网络购物,游戏娱乐,分享感受,发布照片等等。由于智能设备的输入大部分采用电容式触摸屏技术,为防止用户将设备贴身出现误操作等一系列异常情况的出现,因此,在移动智能终端系统中设计实现解锁屏功能十分必要。通过对众多解锁屏软件的分析,当前该功能主要通过预设定一串数字字符串作为密码,在解屏的时候,用户点击数字键或者滑动等所输入的符号来与原字符串进行匹配,该方式存在的弊端主要体现在人机交互性差,主要表现在密码值的唯一性,因此,文中基于Android操作系统,设计实现随机产生英语单词作为密码的方式实现密码值的多样化,以表现在解锁方面的交互性能。
1 应用技术简介
1.1Android平台
Android平台的开源特性得到了很多厂商的支持,是目前手持设备终端应用广泛的操作系统,根据众多文献资料和系统源程序的分析,可以得出,Android系统基于Linux内核扩展,形成数据应用及系统服务、应用程序框架服务和人机交互应用程序等系统架构方式,如图1所示[1]。程序人员根据用户的需求,在系统构架的基础上,可以设计和开发各种基于Android平台的应用程序。
图1 Android系统架构图
1.2SQLite数据库
数据库为应用程序提供数据支持,在计算机应用程序中应用广泛。众多的数据库系统管理软件中,关系数据库SQLite基于其嵌入式设计目标,具有的微小轻型、占用资源少等特性,同时,该数据库支持关系数据库中的增删改查、建立索引该、创建视图等几乎所有的功能,并且可以和多种计算机语言相结合,如Java,C#等高级语言[2]。
由于在Android系统应用程序往往需要有数据的支持,SQLite数据库占用资源少的特性,因此在Android系统通常使用它为应用程序的提供数据支持,如在众多Android浏览器应用软件中,使用SQLite数据库存储用户的历史浏览记录、用户对地址的收藏等操作。
1.3解锁屏原理
当Android系统启动后,系统将使用类PhoneWindowManager来管理Android系统中将要初始化的KeyGuardViewMediator类,然后调用该类的SystemReady()方法调用锁屏的流程,当时间延迟符合所设置的条件的时候,将调用KeyGuardViewMediator类的onSystemReady()方法开始锁屏操作,并且在锁屏操作之前判断是否有第三方锁屏应用的文件,如果没有则调用showLocked()函数,让handler发送显示锁屏信息或延时处理,handler接收消息,直接调用handleShow()方法,从而实现系统的锁屏操作。
2 总体设计
2.1构架设计
遵从Android系统应用的结构,应用程序框架采用MVC (Model-View-Controller)模式[3],实现模型与视图层之间的代码分离,增强应用程序的可扩展性和易维护性能,如图2所示。
图2 应用程序三层构架设计图
1)视图表现层。视图层主要使用XML文件保存操作界面的样式,使之与Android应用程序的资源文件路径(RES/ LAYOUT)一致,以XML文件形式体现,并且在该文件中设置好布局样式(Layout)。用户在操作的过程中,若要修改布局中的内容,或者更改控件的相关属性,可以通过程序调用Android API提供的getViewById()方法进行设置,如此可以增强逻辑结构,将视图层与数据事务等操作的分离。
2)业务逻辑层。该层为整个应用程序的核心,首先通过Service监听用户的操作状态,然后判断是否启动程序,如是否调用android.intent.action.SCREEN_ON来激活屏幕等操作。调用随机抽取数据库中的记录以生成相关问题,等待用户的响应,最后为处理相关信息调用相关事务,因此,该层为信息处理中心与用户交互的中间层。
3)数据持久层。为给解屏增强交互性,需要不断地从数据库中抽取相关信息呈现给用户,让用户经过思考后给出相应的答案,以输入的方式来验证答案的正确性,因此,数据持久层的设计非常重要。在应用程序中,采取关系对象映射技术,将关系数据库中对应的记录转换成面向对象编程语言中的对象,如此为开发人员提供对象的方式实现对数据的访问、操作SQLite数据库中的数据。
2.2整体流程设计
根据Android系统设计的解锁屏技术原理[4],系统将使用类PhoneWindowManager来管理Android系统中的KeyGuardViewMediator类,以此为切入点,调用该类的SystemReady()方法调用锁屏的流程,当时间延迟符合所设置的条件的时候,将调用KeyGuardViewMediator类的onSystemReady()方法开始锁屏操作,并且在锁屏操作之前判断是否有第三方锁屏应用的文件,如果没有则调用showLocked()函数,让handler发送显示锁屏信息或延时处理,handler接收消息,直接调用handleShow()方法,从而实现系统的锁屏操作。如图3所示。
图3 应用程序整体功能构架
2.3数据库设计
应用程序中数据库主要保存英语词汇,在解锁屏幕的时候,随机抽取某一个单词的各中文含义,提供输入界面让用户对其单词进行拼写,从而达到人机交互的目的。因此数据库中需要设计保存英文词汇的数据表,为扩充词汇量,设计词汇更新日志表记录当前词汇量状况,以便及时通过网络向词汇表中补充单词,关系结构可表示为表1和表2所示。
3 关键技术的实现
3.1加载数据
建立与数据库的连接:
db=(new DatabaseHelper(getContext()).getWritableDatabase();
表1 词汇表的结构
表2 词汇更新日志表结构
关闭数据库连接:db.close();
3.2屏蔽原解锁界面
在用户点击按钮触发界面点亮,应用程序监听到该事件的触发后,启动PemoLickService服务,调用keyguardManage()方法,禁用设备原来的锁屏活动界面(StudyPemoPatternActivity),以展示应用程序自定义屏幕解锁界面[5]。
private BroadcastReceiver mScreenOffReceivernumberok=new roadcastReceiver(){
public void onTheReceive(Context context,Intent intent){
String doaction=intent.getAction();
if(doaction.equals("android.intent.action.SCREEN_OFF")|| doaction.equals("android.intent.action.SCREEN_ON")
){mKeyguardManager=(KeyguardManager)context. getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock=mKeyguardManager.newKeyguardLock ("phone_lock");mKeyguardLock.disableKeyguard();
startActivity(LockIntent);
}}};
3.3启用自定义解锁界面
启用自定义解锁界面的关键代码为[6]:
public void dialogwindow(String dig_title,String tip,final int id){LayoutInflater newfactory=layoutInflater.from(this);
finalViewDialogViewShow=newfactory.inflate(R.layout. layout_phone_dialog,null);
TextView textViewshow=(TextView)dialogViewshow. findViewById(R.id.layout_phone_lock_dialog_tip);textViewshow.setText(tip);textViewshow.setTextColor(Color. WHITE);
AlertDialog digaction=new AlertDialog.Builder(this). setTitle(digaction_title).setView(DialogViewshow). setPositiveButton("确定",new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog,int which){
Intent intent=null;if(id==0){(new InitData(mContext). initApp();intent=new Intent(mContext,LockService.class);}else{intent=new Intent(mContext,PemoLockService.class);}new topElseService(mContext);startService(intent);dialog.cancel();
}).setNegativeButton("取 消 ",newDialogInterface. OnClickListener(){@Override
public void onClick(DialogInterface dialog,int which){dialog.cancel();}}).create();digaction.show();}
3.4交互式处理的实现
交互式处理的关键代码为:
public void unlockThead(){threadunlock=new Thread(){public void run(){
while(sharedPreferences.getBoolean("flag",true)&& haredPreferences.getString("answer","").equals(anwser){try {sleep(1000);}catch(InterruptedException e){}String tempString =edit_one.getText().toString().trim();
if(tempString.length() >=anwser.trim().length()){InputMethodManagerInputMethodManager;mInputMethodManagerview=(InputMethodManager)mContext. getSystemService(Context.INPUT_METHOD_SERVICE);
mInputMethodManager.hideSoftInputFromWindow (GamePatternIdiomsActivity.this.getCurrentFocus(). getWindowToken(),inputMethodManager. HIDE_NOT_ALWAYS);Message message=new Message();
message.what=tempString.equals(anwser.trim()|| tempString==anwser.trim()?true:fasle;mHandler. sendMessage(message);if(message.what==1){editor.putBoolean ("flag",false);editor.commit();}}}if(thread.interrupted(){thread. interrupt();}}};}
4 程序运行及实验测试
经过测试,该应用程序能正常执行。如图4所示。
图4 程序运行效果图
在测试过程中,本应用程序的关键在于提取SQLite数据库中数据的耗时情况,其统计记录如图5所示。
实验结果分析,由于程序中使用单个数据表,在执行查询时,使用随机查询方式[7]:select*from vocabulary order by RANDOM()limit 1
图5 读取SQLite数据库中数据的耗时
以上SQL语句的执行中,根据数据表主键ID递增的顺序,由SQLite的两种检索数据方式中的二分查找可以快速抽取出数据,因此在检索中消耗时间相差较小。
5 结束语
该应用程序以帮助在校学生群体的用户记忆英文单词为目的,对Android系统锁屏功能进行了改进,设计实现了依据英文单词的含义,对英文单词填空的交互式屏幕解锁功能,实验测试表明,本方案可以对传统解锁模式中密码单一性向多样化扩展,具有一定的实用价值。以此推广,可以为其他的用户群体服务为目的而设计相应的解锁程序,由此,对应用程序的功能拓展、资源占有、SQLite查询优化等问题还可以作进一步的研究。
[1]冯玉平,王曙光.基于Android的手机定位软件[J].计算机与现代化,2015(2):11-13.
[2]林培杰,朱安南,程树英.Android数据库SQLite性能优化[J].计算机系统应用,2014(12):193-196.
[3]郑行双.基于MVC的Android与Web双模式教学平台的设计与实现[D].大连:大连理工大学,2013.
[4]王艳敏,李永忠,吕少伟.Android平台下文件透明加密技术的研究与实现[J].计算机技术与发展,2014(8):137-140.
[5]张庆阳,杨阳,程久军,等.基于手机动态密码的计算机使用权限管理机制[J].信息网络安全,2014(8):46-51.
[6]石艳敏.一种高效的计算机联锁软件测试方法[J].铁路计算机应用,2013(12):50-54.
[7]沈美,于翔.基于SQLite数据库的安卓日程管理系统的设计与开发[J].电子技术与软件工程,2014(12):216-217.
The application research on the human computer interaction screen unlocking function under Android
HE Jian-ying,YUAN Xiao-yan,TANG Qing-song
(College of Computer,Sichuan University of Arts and Science,Dazhou 635000,China)
This design will change the traditional unlocking pattern by forming English word randomly as password in the view of the practical application of the unlocking of intelligent terminal equipment.It is a set of humanized platform of screen unlocking of human computer interaction in JAVA by storing data in SQLite database,which can save time on searching data in the use of the binary search of SQLite to generate password quickly.It has been proved by experiment that this design can realize the interaction between human and computer and fulfil the unlocking function effectively.
SQLite database;human computer interaction;MVC;binary chop;unlock
TN602
A
1674-6236(2016)13-0004-03
2015-07-13稿件编号:201507085
四川省教育厅项目(15ZB0324)
贺建英(1979—),女,四川简阳人,硕士,讲师。研究方向:软件技术,数据挖掘,物联网。