高毅
【摘 要】隨著時代的發(fā)展,人們對于信息獲取的需求日益增強。相對電視、互聯(lián)網(wǎng)絡(luò)等方式,智能手機憑借其可以隨時隨地獲取和處理信息的優(yōu)勢,逐漸成為人們獲取信息的一種重要手段。在Google最開始推出Android的時候,Android是以移動設(shè)備的操作系統(tǒng)的身份存在的,然而隨著這幾年的發(fā)展,Android的定位已經(jīng)悄然起了變化?;贏ndroid上的開發(fā)層出不窮,基于該平臺來開發(fā)手機應(yīng)用管理軟件具有良好的市場背景,一個好的應(yīng)用管理工具將使用戶更容易地操作系統(tǒng)。本文主要描述基于Android平臺對手機的加密和防盜功能進行探究與實現(xiàn)。
【關(guān)鍵詞】Android;平臺;加密;防盜
0 引言
當今信息產(chǎn)業(yè)高速發(fā)展,移動通信技術(shù)作為信息社會的主要支撐技術(shù)之一也飛速發(fā)展著。手機也經(jīng)歷了從最初只提供簡單的通訊服務(wù)向更多擴展業(yè)務(wù)功能發(fā)展歷程。智能手機是一種在手機內(nèi)安裝了相應(yīng)開放式操作系統(tǒng)的手機,至2008年底就約有4.5億部。我們看到智能手機正朝著兩個不同的方向發(fā)展:Mac OS側(cè)重于應(yīng)用,而Windows Mobile和Symbian側(cè)重于智能手機任務(wù)和通訊,Android操作系統(tǒng)則兩者兼顧,魚與熊掌兼得。
1 系統(tǒng)相關(guān)技術(shù)概述
1.1 Android平臺的優(yōu)勢
Android平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動平臺。該平臺具有以下優(yōu)勢:
1.1.1 開放性手機平臺
Android是Google開發(fā)的基于Linux平臺的開源手機操作系統(tǒng)。Google通過與運營商、設(shè)備制造商、手機公司和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標準化、開放式的智能手機操作系統(tǒng),在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。
1.1.2 網(wǎng)絡(luò)集成性很高
Android內(nèi)部集成了大量的Google應(yīng)用,如Gmail、Reader、Map、Docs、Youtube等等,涵蓋了生活中各個方面的網(wǎng)絡(luò)應(yīng)用,對于長期使用網(wǎng)絡(luò)、信息依賴度比較高的人群而言很合適。
1.1.3 Android具備新特性
自從Google開發(fā)出Android后,許多人認為其技術(shù)可信度比其他操作系統(tǒng)略勝一籌,但這并不是用戶購買Android智能手機的唯一原因。人們認為Android是一種相對比較新的、又較為成熟的技術(shù),在達到巔峰之前還有很大的發(fā)展空間。
1.1.4 Android平臺在數(shù)量上逐漸主宰市場,該平臺的發(fā)展勢頭正穩(wěn)步增長。
1.1.5 Android在其他領(lǐng)域的拓展
Android不僅促進了手機產(chǎn)業(yè)的發(fā)展,它的全面計算服務(wù)和豐富的功能支持,已將應(yīng)用拓展到手機以外的其他領(lǐng)域。Android平臺的通用性可以適用于不同的屏幕、有線和無線設(shè)備。Android的系統(tǒng)和應(yīng)用程序開發(fā)人員將更多的涉足多媒體、移動互聯(lián)網(wǎng)設(shè)備、數(shù)字視頻和家庭娛樂設(shè)備、汽車、醫(yī)藥、網(wǎng)絡(luò)、監(jiān)測儀器和工業(yè)管理、機頂盒等新領(lǐng)域。
圖1 Android應(yīng)用的構(gòu)成和工作流程
1.2 Android主要組件
對于一個Android應(yīng)用程序來說,是由Activity、Intent Receiver、Service、Content Provider四部分組成,但并不是每一個Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時,需要在配置文件AndroidMainfest.xml中進行配置。這個配置文件是每個Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。Android應(yīng)用的構(gòu)成和工作流程如圖1所示:Activity之間通過Intent實現(xiàn)切換;Activity可以通過Content Provider獲取其他應(yīng)用程序的數(shù)據(jù);Activity通過Intent Receiver監(jiān)聽系統(tǒng)事件;Activity可以用Binder對Service進行綁定。
1.3 主要技術(shù)介紹
1.3.1 BroadcastReceiver
BroadcastReceiver用于接收并處理廣播通知。多數(shù)的廣播是系統(tǒng)發(fā)起的,如地域變換、電量不足、來電來信等。程序也可以播放一個廣播。程序可以有任意數(shù)量的 broadcast receivers來響應(yīng)重要的通知。BroadcastReceiver可以通過多種方式通知用戶:啟動activity、使用NotificationManager、開啟背景燈、振動設(shè)備、播放聲音等,最典型的是在狀態(tài)欄顯示一個圖標,這樣用戶就可以點擊打開通知內(nèi)容。Activity中有注冊一個廣播監(jiān)聽器的方法registerReceiver,只需要重寫一個繼承了BroadcastReceiver的類就可以了。
1.3.2 TelephonyManager
TelephonyManager用于獲取SIM卡信息。在SIM卡中并沒有保存用戶的手機號碼,區(qū)分每一張SIM是通過IMSI碼。IMSI碼是國際移動用戶識別碼(英文全稱:International Mobile SubscriberIdentification Number)是區(qū)別移動用戶的標志,儲存在SIM卡中,可用于區(qū)別移動用戶的有效信息。其總長度不超過15位,同樣使用0~9的數(shù)字。在運營商的數(shù)據(jù)庫中存在手機號碼和IMSI碼的映射,所以手機是通過發(fā)送IMSI碼到運營商的一端,獲得自己的手機號碼。
1.3.3 SharedPreferences
SharedPreferences是一種輕型的數(shù)據(jù)存儲方式,它的本質(zhì)是基于XML文件存儲key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/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ù)類型,無法進行條件查詢等。
1.3.4 Service
Service是Android中的服務(wù),它與Activity不同,它是不能與用戶交互的,不能自己啟動的,運行在后臺的程序,如果退出應(yīng)用時,Service進程并沒有結(jié)束,它仍然在后臺運行。比如當我們一個應(yīng)用的數(shù)據(jù)是通過網(wǎng)絡(luò)獲取的,不同時間(一段時間)的數(shù)據(jù)是不同的,這時候我們可以用Service在后臺定時更新,而不用每次打開應(yīng)用的時候再去獲取。Service的生命周期并不像Activity那么復(fù)雜,它只繼承了onCreate(),onStart(),onDestroy()三個方法,當我們第一次啟動Service時,先后調(diào)用了onCreate(),onStart()這兩個方法,當停止Service時,則執(zhí)行onDestroy()方法。這里需要注意的是,如果Service已經(jīng)啟動了,當我們再次啟動Service時,不會在執(zhí)行onCreate()方法,而是直接執(zhí)行onStart()方法。
2 系統(tǒng)設(shè)計
2.1 加密功能設(shè)計
加密功能由10個部分組成,圖2為該功能模塊的類圖,圖3為該功能模塊的流程圖。各個類的具體作用如下:
(1)LocusPassWordView:繼承View類,主要是用來繪制軌跡球界面、存儲用戶輸入的密碼、點擊重置時清空密碼。
(2)LoginActivity:繼承Activity類,成員變量為LocusPassWordView類,判斷是否已設(shè)置密碼,如果已經(jīng)設(shè)置密碼,則讓用戶輸入密碼;如果未設(shè)置密碼,則進入設(shè)置密碼界面。
(3)MainActivity:輸入密碼正確后進入該界面,提示是否重置密碼。
(4)Point:定義點的三種狀態(tài)(未選中、選中正確、選中錯誤),點的下標,初始狀態(tài)設(shè)置為0。
(5)SetPasswordActivity:繼承Activity類,重置密碼。
(6)BitmapUtil:縮放圖片,圖片圓角處理。
(7)MathUtil:計算兩點間的距離,計算直線的角度。
(8)RoundUtil:判斷點是否在圓內(nèi)。
(9)StringUtil:判斷密碼是否為空。
(10)ListenService:監(jiān)聽服務(wù),把加密的應(yīng)用程序存儲到隊列中,如果當前運行的應(yīng)用程序已加密,則彈出解鎖頁面,如果沒有加密,則直接進入該程序。
圖2 加密功能類圖
圖3 加密功能流程圖
2.2 防盜功能設(shè)計
防盜功能是在手機丟失時,開啟防盜功能的前提下,程序判斷SIM卡信息,如果檢測到已經(jīng)發(fā)生變化,則給指定安全號碼發(fā)送短信,幫助主人找回手機。首次進入該軟件,要先設(shè)置密碼,防止別人關(guān)閉該軟件。非首次進入時則直接輸入密碼,也可以重置密碼,圖4為該模塊的流程圖。
圖4 防盜功能流程圖
防盜功能模塊主要由兩個類組成:PhoneProtectActivity類和Receiver類,具體功能如下:
(1)phoneProtectActivity繼承Activity類,主要是實現(xiàn)界面按鈕的點擊事件及存儲輸入的信息。定義isFirst變量來判斷是否是首次進入該軟件,初始化為1,表示是首次進入,彈出設(shè)置密碼對話框,將輸入的用戶名和密碼存儲到“data.xml”文件中,isFirst狀態(tài)置為0,表示非首次進入。非首次進入該軟件時,彈出輸入密碼對話框,輸入用戶名和密碼后,驗證是否跟“data.xml”里面存儲的值一致,如果一致可以進入該軟件,不一致則提示錯誤。用戶也可以選擇重置密碼,如果輸入舊密碼和“data.xml”里面存儲的值一致且兩次輸入新密碼一致,則修改密碼成功,修改“data.xml”里面存儲的值,返回輸入密碼界面,輸入用戶名和新密碼后可以進入該軟件。定義isStart變量來判斷是否已開啟防盜功能,初始化為0,表示沒有開啟功能,輸入安全號碼后,點擊開啟防盜按鈕,則安全號碼輸入框不能編輯,開啟防盜按鈕變?yōu)殛P(guān)閉防盜。輸入的安全號碼存儲到“data.xml”文件中,isStart狀態(tài)置為1,表示已啟用,當前手機SIM卡的IMSI號碼存儲到“data.xml”文件中,代碼如下:(下轉(zhuǎn)第50頁)
(上接第14頁)(2)Receive類是一個廣播接收器,繼承BroadCastReceive類,獲取“Data.xml”中存儲的值,如果isStart狀態(tài)為已啟用且手機IMSI碼信息與當前不一致,則發(fā)送一條信息給安全號碼。
3 結(jié)束語
本文探討了基于Android的手機的加密防盜系統(tǒng)的設(shè)計和實現(xiàn)過程。首先介紹了當前背景、Android平臺的優(yōu)勢以及Android主要組件和系統(tǒng)用到的主要技術(shù),最后從整體上描述加密功能和防盜功能的設(shè)計。近年來由于Android平臺良好的開放性和便捷性等特點,采用Android平臺的智能手機越來越受到人們的青睞,Android平臺在智能手機領(lǐng)域中所扮演的角色也越來越重要。
【參考文獻】
[1]羅偉.基于Android平臺的即時通訊系統(tǒng)的研究與實現(xiàn)[D].湖南師范大學(xué),2009.
[2]公磊,周聰.基于Android的移動終端應(yīng)用程序開發(fā)與研究[J].計算機與現(xiàn)代化,2008(8):85.
[3]W.Frank Ableson, Charlie Collins, Robi Sen. Google Android揭秘[M].張波,高朝勤,楊越等,譯.北京:人民郵電出版社,2010:16.
[4]趙亮,張維.基于Android技術(shù)的界面設(shè)計與研究[J].電腦知識與技術(shù),2009,5(29):8183.
[5]張仕成.基于Google Android平臺的應(yīng)用程序開發(fā)與研究[J].電腦知識與技術(shù),2009,5(29):7959.
[6]吳宏森,宋順林.MVC架構(gòu)在工程項目管理系統(tǒng)中的應(yīng)用[J].微計算機信息,2006,22(22):256.
[責任編輯:湯靜]