Android手機(jī)加密防盜系統(tǒng)設(shè)計方法

相對于電視、互聯(lián)網(wǎng)絡(luò)等方式而言,智能手機(jī)憑借其可以隨時隨地獲取和處理信息的優(yōu)勢,逐漸成為人們獲取信息的一種重要手段。特別是隨著Android系統(tǒng)的推出,其手機(jī)應(yīng)用也變得相當(dāng)?shù)膹V泛,但其安全性也引起了我們的廣泛關(guān)注,為此,我們提出了一種基于Android的手機(jī)加密防盜系統(tǒng)。

一、Android系統(tǒng)相關(guān)技術(shù)概述

1、Android平臺的優(yōu)勢

Android平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動平臺。該平臺具有以下優(yōu)勢:

1)開放性手機(jī)平臺

Android是Google開發(fā)的基于Linux平臺的開源手機(jī)操作系統(tǒng)。Google通過與運營商、設(shè)備制造商、手機(jī)公司和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系.希望借助建立標(biāo)準(zhǔn)化、開放式的智能手機(jī)操作系統(tǒng),在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。

2)網(wǎng)絡(luò)集成性很高

Android內(nèi)部集成了大量的Google應(yīng)用,如Gmail、Reader、Map、Docs、Youtube等等,涵蓋了生活中各個方而的網(wǎng)絡(luò)應(yīng)用,對于長期往用網(wǎng)絡(luò)、信息依賴度比較高的人群而言很合適。

3)Android具備新特性

自從Google開發(fā)出Android后,許多人認(rèn)為其技術(shù)可信度比其他操作系統(tǒng)略勝一籌。但這并不是用戶購買Android智能手機(jī)的唯一原因,人們普遍認(rèn)為Android是一種相對比較新的、又較為成熟的技術(shù),在達(dá)到巔峰之前還有很大的發(fā)展空間。

4) Android平臺在數(shù)量上逐漸主宰市場

該平臺的發(fā)展勢頭正穩(wěn)步增長。

5)Android在其他領(lǐng)域的拓展

Android不僅促進(jìn)了手機(jī)產(chǎn)業(yè)的發(fā)展,它的全面計算服務(wù)和強(qiáng)大的功能支持,已將應(yīng)用拓展到手機(jī)以外的其他領(lǐng)域。Android平臺的通用性可以適用于不同的屏幕、有線和無線設(shè)備。Android的系統(tǒng)和應(yīng)用程序開發(fā)人員將更多的涉足多媒體、移動互聯(lián)網(wǎng)設(shè)備、數(shù)字視頻和家庭娛樂設(shè)備、汽車、醫(yī)藥、網(wǎng)絡(luò)、監(jiān)測儀器和工業(yè)管理、機(jī)頂盒等新領(lǐng)域。

2、Android主要組件

對于一個Android應(yīng)用程序來說,是由Activity、Intent Receiver、Service、Content Provider四部分組成,但并不是每一個Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時。需要在配置文件AndroidMainfest.xml中進(jìn)行配置。這個配置文件是每個Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條梢等。Android應(yīng)用的構(gòu)成和工作流程如圖1所示:Activity之間通用Intent實現(xiàn)切換;Activity可以通過Content Provider獲取其他應(yīng)用程序的數(shù)據(jù);Activrty通過Intent Receiver監(jiān)聽系統(tǒng)事件;Activity可以用Binder對Service進(jìn)行綁定。

Android手機(jī)加密防盜系統(tǒng)設(shè)計方法

3、主要技術(shù)介紹

1)BroadcastReceiver

Broadca stReceiver用于接收并處理廣播通知。多數(shù)的廣播是系統(tǒng)發(fā)起的,如地域變換、電量不足、來電來信等。程序也可以播放一個廣播。程序可以有任意數(shù)量的broadcast receivers來響應(yīng)重要的通知。Broadca stReceiver可以通過多種方式通知用戶:啟動activity、使用NotificationManager、開啟背景燈、振動設(shè)備、播放聲音等,最典型的是在狀態(tài)欄顯示一個圖標(biāo),這樣用戶就可以點擊打開通知內(nèi)容。Activity中有注冊一個廣播監(jiān)聽器的方法registerReceiver,只需要重寫一個繼承了Broadca st Receiver的類就可以了。

2)TelephonyManager

TelephonyManager用于獲取SIM卡信息。在SIM卡中并沒有保存用戶的手機(jī)號碼,區(qū)分每一張SIM是通過IMSI碼。IMSI碼是國際移動用戶識別碼是區(qū)別移動用戶的標(biāo)志。儲存在SIM卡中,可用于區(qū)別移動用戶的有效信息。其總長度不超過15位,同樣使用O-9的數(shù)字。在運營商的數(shù)據(jù)庫中存在手機(jī)號碼和IMSI碼的映射,所以手機(jī)是通過發(fā)送IMSI碼到運營商的一端,獲得自己的手機(jī)號碼。

3)SharedPreferences
.
SharedPreferences是一種輕型的數(shù)據(jù)存儲方式,它的本質(zhì)是基于XML文件存儲key-value鍵值對數(shù)據(jù)。通常用來存儲一些簡單的配置信息。其存儲位置在/dataUdata,<包名>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改。存儲修改是通過Editor對象實現(xiàn)。SharedPreferences對象與SQLite數(shù)據(jù)庫相比,失去了創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其只能存儲boolean,int,float,long和String五種簡單的數(shù)據(jù)類型,無法進(jìn)行條件查詢等。

4)Service

Service是Android中的服務(wù),它與Activity不同,它是不能與用戶交互的,不能自己啟動的,運行在后臺的程序,如果退出應(yīng)用時,Service進(jìn)程并沒有結(jié)束。它仍然在后臺運行。比如當(dāng)我們一個應(yīng)用的數(shù)據(jù)是通過網(wǎng)絡(luò)獲取的,不同時間(一段時間)的數(shù)據(jù)是不同的,這時候我們可以用Service在后臺定時更新。而不用每次打開應(yīng)用的時候再去獲取。SeIvice的生命周期并不像Activity那么復(fù)雜,它只繼承了onCreate().onStart().onDestroy()三個方法,當(dāng)我們第一次啟動ServiCE時,先后調(diào)用了onCreate0.onStart()這兩個方法,當(dāng)停止Service時,則執(zhí)行onDestroy0方法。這里需要注意的是.如果Servce已經(jīng)啟動了,當(dāng)我們再次啟動Service時,不會在執(zhí)行onCreate0方法,而是直接執(zhí)行onStart()方法。

二、Android手機(jī)加密防盜系統(tǒng)設(shè)計

1、加密功能設(shè)計

加密功能由10個部分組成,圖2為該功能模塊的類圖,圖3為該功能模塊的流程圖。各個類的具體作用如下:

(1)LocusPassWordView:繼承View類,主要是用來繪制軌跡球界面、存儲用戶輸入的密碼、點擊重置時清空密碼。

(2)LoginActivity:繼承Activity類,成員變量為LocusPassWordView類,判斷是否已設(shè)置密碼,如果已經(jīng)設(shè)置密碼,則讓用戶輸入密碼:如果未設(shè)置密碼,則進(jìn)入設(shè)置密碼界面。

(3)MainActivity:輸入密碼正確后進(jìn)入該界面,提示是否重置密碼。

(4)Point:定義點的三種狀態(tài)(未選中、選中正確、選中錯誤),點的下標(biāo),初始狀態(tài)設(shè)置為O。

(5)SetPasswordActivity:繼承Activity類,重置密碼。

(6)BitmapUtil:縮放圖片,圖片圓角處理。

(7)MathUtil:計算兩點間的距離,計算直線的角度。

(8)RoundUtil:判斷點是否在圓內(nèi)。

(9)String Util:判斷密碼是否為空。

(10)ListenService:監(jiān)聽服務(wù),把加密的應(yīng)用程序存儲到隊列中,如果當(dāng)前運行的應(yīng)用程序已加密,則彈出解鎖頁面,如果沒有加密,則直接進(jìn)入該程序。

Android手機(jī)加密防盜系統(tǒng)設(shè)計方法

2、防盜功能設(shè)計

防盜功能是在手機(jī)丟失時.開啟防盜功能的前提下.程序判斷SIM卡信息,如果檢測到已經(jīng)發(fā)生變化,則給指定安全號碼發(fā)送短信幫助主人找回手機(jī)。首次進(jìn)入該軟件,要先設(shè)置密碼.防止別人關(guān)閉該軟件。非首次進(jìn)入時則直接輸入密碼,也可以重置密碼,圖4為該模塊的流程圖。

Android手機(jī)加密防盜系統(tǒng)設(shè)計方法

防盜功能模塊主要由兩個類組成:PhoneProtectActivity類和Receiver類.具體功能如下:

(1)phone ProtectActivity繼承Activity類,主要是實現(xiàn)界面按鈕的點擊事件及存儲輸入的信息。定義isFirst變量來判斷是否是首次進(jìn)入該軟件。初始化為1,表示是首次進(jìn)入,彈出設(shè)置密碼對話框。將輸入的用戶名和密碼存儲到“dataxml”文件中,isFirst狀態(tài)置為0,表示非首次劃入。非首次進(jìn)入該軟件時,彈出輸入密碼對話框,輸入用戶名和密碼后,驗證是否跟“data.xml”里而存儲的值一致,如果一致可以進(jìn)入該軟件,才一致則提示錯誤。用戶也可以選擇重置密碼,如果輸入舊密碼和“dEtaxml”里而存儲的值一致且兩次輸入新密碼一致,則修改密碼成功,修改“dataxml”里而存儲的值,返回輸入密碼界面,輸入用戶名和新密碼后可以進(jìn)入該軟件。定義isStart變量來判斷是否已開啟防盜功能,初始化為0,表示沒有開啟功能,輸入安全號碼后,點擊開啟防盜按鈕,則安全號碼輸入框不能編輯,開啟防盜按鈕變?yōu)殛P(guān)閉防盜。輸入的安全號碼存儲到“data.xmr文件中,isStart狀態(tài)置為1。.表示已啟用,當(dāng)前手機(jī)SIM卡的IMSI號碼存儲到“dataxml”文件中,代碼如下:

Android手機(jī)加密防盜系統(tǒng)設(shè)計方法

(2)Receive類是一個廣播接收器,繼承BroadCastReceive類,獲取“Data.xml”中存儲的值,如果isStart狀態(tài)為已啟用且手機(jī)IMSI碼信息與當(dāng)前不一致,則發(fā)送一條信息給安全號碼。

小知識之IMSI碼

是區(qū)別移動用戶的標(biāo)志,儲存在SIM卡中,可用于區(qū)別移動用戶的有效信息。