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