?

Android系統下人機交互解鎖屏功能的應用研究

2016-09-08 09:23賀建英袁小艷唐青松
電子設計工程 2016年13期
關鍵詞:調用視圖應用程序

賀建英,袁小艷,唐青松

(四川文理學院 計算機學院,四川 達州 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—),女,四川簡陽人,碩士,講師。研究方向:軟件技術,數據挖掘,物聯網。

猜你喜歡
調用視圖應用程序
核電項目物項調用管理的應用研究
刪除Win10中自帶的應用程序
谷歌禁止加密貨幣應用程序
5.3 視圖與投影
視圖
Y—20重型運輸機多視圖
SA2型76毫米車載高炮多視圖
基于系統調用的惡意軟件檢測技術研究
利用RFC技術實現SAP系統接口通信
三星電子將開設應用程序下載商店
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合