【正文】
g T i t l es u m m a r yE d i t T e x tP r e f e r e n c et i t l ek e yP o s i t i v eB u t t o n T e x tN e g a t i v eB u t t o n T e x tt i t l ek e yP o s i t i v eB u t t o n T e x tN e g a t i v eB u t t o n T e x t 圖 文件屬性構(gòu)架 其代碼就是對屬性進(jìn)行 相應(yīng) 配置即可 如 android:password=true等,這里就不做詳細(xì)介紹了,具體代碼請看附錄二。 因此當(dāng)我們在界面上做設(shè)置的時(shí)候自然就會(huì)想到 Activity+Preference 的組合,前者用于界面的構(gòu)造,后者用于設(shè)置數(shù)據(jù)的存放。 //覆寫 onListItemClick()方法獲得用戶點(diǎn)擊事件 Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Autogenerated method stub (l, v, position, id)。 //建立一個(gè) HashMap放進(jìn) ArrayList中 ArrayListHashMapString,Object list =new ArrayListHashMapString,Object()。 HashMap 就是一種 Map,在 Map 中數(shù)據(jù)都是以鍵值對的方式存在的,這樣,我們的數(shù)據(jù)最終在 List 中的存儲(chǔ)方式就是以鍵值對的形式存在的。ListActivity 用來在屏幕中顯示一個(gè)列表,當(dāng)點(diǎn)擊 其 中的 某一列時(shí),可以觸發(fā)一些操作。 //提交改動(dòng)到數(shù)據(jù)庫并保存 ()。圖 為 Google 官方給出的 Activity 生命周期流程圖。 GPS 服務(wù) 對于 GPS 我想大家現(xiàn)在都很了解,至少不會(huì)陌生,一般情況下每個(gè)裝載 GPS 的設(shè)備都會(huì)由 3顆衛(wèi)星進(jìn)行定位,在需要時(shí)可將設(shè)備所在的位置信息發(fā)送到 GPS 上,例如返回的經(jīng)緯度,有了這些位置信息我們便可進(jìn)行 需要的操作 [10]。 在我們的軟件中將會(huì)運(yùn)用大量的監(jiān)聽器,其中包括監(jiān)聽用戶點(diǎn)擊按鈕事件、監(jiān)聽開機(jī)廣播事件、監(jiān)聽短信廣播事件等。 SharedPreferences 是以鍵值對來存儲(chǔ)應(yīng)用程序的配置信息的一種 方式,它只能存儲(chǔ)基本數(shù)據(jù)類型。 功能設(shè)置 功能設(shè)置 UI 為用戶可操控界面,所以要使用繼承 PreferenceActivity 的類來完成相應(yīng)的功能,此類是 Android 專門用來 做 UI 設(shè)置界面用的,所以這個(gè)類中方法的應(yīng)用也相對方便,但其布局文件與眾不同,需要在 res文件中新建個(gè) XML文件進(jìn)行單獨(dú)管理。 在 Android 中所有資源文件要統(tǒng)一管理并放到 res文件夾中,并把每個(gè)資源都加上各自的 ID,以方便調(diào)用。 應(yīng)用初始化 初始化界面是讓用戶設(shè)置信息用的,所以首先我要告訴用戶需要設(shè) 置的信息都有哪些,介紹完后還要在相應(yīng)的位置給出用于填寫信息的控件。 9 圖 UI功能體驗(yàn)層 當(dāng)用戶點(diǎn)擊進(jìn)入 UI功能體驗(yàn)層的每個(gè)選項(xiàng)后,就會(huì)看到每個(gè)功能實(shí)現(xiàn)的具體說明,而且在每個(gè)可以單機(jī)實(shí)驗(yàn)的功能里 都 加進(jìn)了功能體驗(yàn)按鈕,可以讓用戶體驗(yàn)本功能 的 真實(shí)效果。 UI 窗口層為本應(yīng)用軟件的最頂層,此層的 UI 設(shè)計(jì)好壞決定了用戶對本軟 件的第一印象,所以要想得到用戶的肯定, 這層的設(shè)計(jì)一定要做好。 用 戶 開 啟應(yīng) 用 軟 件用 戶 信 息確 認(rèn)用 戶 設(shè) 置初 始 化判 斷 是 否 是 第一 次Y NU I 主 層U I 功 能查 看 層U I 功 能查 看 層U I 功 能查 看 層 圖 UI總流程圖 UI 窗口 層 UI 窗口層分為兩個(gè)界面,一個(gè)是初次開啟應(yīng)用時(shí) 進(jìn)入的設(shè)置初始化界面,另一個(gè)則 7 是 用戶在 非第一次開啟應(yīng)用時(shí)彈出的用戶 身份 驗(yàn)證 窗口。從字面上看是用戶與界面 2個(gè)組成部分,但實(shí)際上還包括用戶與界面之間的交互關(guān)系。 綜合以上軟件優(yōu)點(diǎn)便是此軟件將要實(shí)現(xiàn)并達(dá)到的目標(biāo)。 Android Beta( 阿童木 ) 2021 年 9 月發(fā)布的 Android 第一版 , 后來由于涉及 到版權(quán)問題, Goolge 將其命名規(guī)則變更為用甜點(diǎn)作為它們系統(tǒng)版本的代號(hào)的命名方法。對此,我通過 觀看 Mars老師的 Java4Android視頻 和 對 Java相關(guān)書籍的精讀與練習(xí), 強(qiáng)化了自己對 Java語言的掌握, 使我對 Java 的運(yùn)用能力有了很大的提高,并為編寫與設(shè)計(jì) Android 應(yīng)用奠定了良好地基礎(chǔ)。 因此,本課題的任務(wù) 是 設(shè)計(jì)一款 基于 Android 平臺(tái)開發(fā)的一款手機(jī)防盜軟件。用戶購買新手機(jī)后,還可申請將原來手機(jī)中的全部信息轉(zhuǎn)移至新手機(jī)內(nèi)。 國內(nèi)外研究現(xiàn)狀 國內(nèi)研究狀況 毋庸置疑手機(jī)防盜應(yīng)用肯定歸屬于手機(jī)安全類軟件,對于安全軟件的開發(fā)與研究又是殺毒軟件公司首要考慮的功能之一,所以國內(nèi)的很多殺毒軟件公司在自己的產(chǎn)品中都涉及了防盜功能。并且眾多手機(jī)制造商,如三星、摩托羅拉、 HTC、 LG 和小米 等,還有許多半導(dǎo)體公司,如英特爾、德州儀器、 NVIDIA 和高通等,參與 Android 手機(jī)設(shè)計(jì)。 關(guān)于手機(jī)我 們 能想到很多 人們 擔(dān)心的話題。 與之帶來最讓人煩心的是私人數(shù)據(jù)的丟失及帶來的不安全隱患 。最后將設(shè)計(jì)完成的軟件進(jìn)行測試,其所有功能都完美實(shí)現(xiàn),真正起到了手機(jī)防盜追蹤的作用。其 實(shí)不論你的手機(jī)值不值錢,丟東西的事情本身就會(huì)讓人頭疼。每一個(gè) Android 應(yīng)用程序均運(yùn)行在不同的進(jìn)程中, 每個(gè) 進(jìn)程 都 對應(yīng)一個(gè) Dalvik 虛擬機(jī)的實(shí)例。 當(dāng) 用戶在手機(jī)中安裝這款軟件后,每月只需支付 10 英鎊(約合 18美元)即可享受防盜服務(wù)。 美國的 蘋果 公司,在其 官網(wǎng) 上 向所有用戶提供了一項(xiàng)云端技術(shù)服務(wù),只要蘋果手機(jī)或者蘋果的其他移動(dòng)設(shè)備,都可以享受到手機(jī)衛(wèi)星定位功能。 4 2 手機(jī)防盜應(yīng)用 開發(fā) 的 基礎(chǔ) Java 基礎(chǔ) Java 由 Sun(Stanford University Network)公司 于 1995 年 5月為增強(qiáng)互聯(lián)網(wǎng)的交互性而設(shè)計(jì)。 Android 操作系統(tǒng)最初主要支持手機(jī), 2021 年 Google 收購 了 剛剛成立 22 個(gè)月的Android 公司 ,也正是有了在 Google 這樣巨頭公司下發(fā)展的機(jī)會(huì)才使得 Android 系統(tǒng)迅猛發(fā)展。于是我選擇了目前市場應(yīng)用最為廣泛的金山手機(jī)衛(wèi)士、 360 手機(jī)衛(wèi)士 和 手機(jī)管家其中的手機(jī)防盜部分作為參考。好的 UI設(shè)計(jì)不僅是讓軟件變得有個(gè)性有品味,還要讓 軟件的操作變得舒適、簡單、自由 ,充分體現(xiàn)軟件的定位和特點(diǎn)。其實(shí) 軟件界面設(shè)計(jì) 就像工業(yè)產(chǎn)品中的 工業(yè)造型設(shè)計(jì) 一樣,是產(chǎn)品的重要賣點(diǎn)。防盜安全密碼將用于 驗(yàn)證應(yīng)用本軟件用戶的身份,在非第一次開啟此防盜軟件時(shí)將需要用戶輸入防盜安全密碼。 UI 主層 UI 主層是個(gè)選擇界面 如圖 ,本層為用戶提供 3 種主要操作,分別為 防盜功能體驗(yàn) 、 防盜指令查看 、 防盜信息設(shè)置 。 圖 UI指令查看層 10 UI 信息 設(shè)置層 UI 的 設(shè)置層是 UI 非常重要的一 個(gè) 視圖 層 ,此層要以最方便,最簡約,最快捷為核心排版設(shè)計(jì) ,而且要盡量覆蓋本軟件的所有功能設(shè)置。對于密碼的設(shè)置,我們都希望處于不可見狀態(tài)以保證我們個(gè)人信息的安全,我用 password 屬性來控制輸入時(shí)的顯示狀態(tài)。 圖 文件管理 12 功能體驗(yàn) 功能體驗(yàn) UI 分為兩層呈現(xiàn) 。 Service 設(shè)計(jì) 手機(jī)防盜應(yīng)用軟件在實(shí)際應(yīng)用過程中一定是常駐后臺(tái)的軟件,所以不管用戶是否打開軟件,只要是開啟了防盜功能,那此軟件就會(huì)一直在后臺(tái)運(yùn)行,出于這樣的考慮,我們就必須引進(jìn)一個(gè)強(qiáng)大的后臺(tái)支持,那就是 Service 既后臺(tái)服務(wù)。 File 是一種文件存儲(chǔ)方式也是 一種較常用的方法,在 Android 中讀取 /寫入文件的方法,與 Java 中實(shí)現(xiàn) I/O 的程序是完全一樣的,提供了 openFileInput()和openFileOutput()方法來讀取 設(shè)備上的文件。那么這種監(jiān)聽開機(jī)需要另一項(xiàng) Android 機(jī)制的支持來完成 —— 廣播機(jī)制。 在實(shí)現(xiàn)這些功能之前我們需要先 搭建 Android 開發(fā) 環(huán)境 ,其具體操作流程見附表二。 創(chuàng) 建 F i r s t 類覆 寫 o n C r e a t e 方 法聲 明 并 得到 B u t t o n控 件為 每 個(gè)B u t t o n 綁定 監(jiān) 聽 器用戶點(diǎn)擊按鈕事件setContentView顯示界面等 待 用 戶 點(diǎn) 擊事 件NYL a y o u t提 供 控件判 斷 密 碼 是 否不 為 空提示輸入狀態(tài)錯(cuò)誤判 斷 密 碼 是 否合 法判 斷 手 機(jī) 號(hào) 是否 合 法判 斷 手 機(jī) 號(hào) 是否 不 為 空判 斷 兩 次 密 碼是 否 一 致YYYYNNNNNe d i t o r . c o m m i t ( )提 交 數(shù) 據(jù) 庫s t a r t A c t i v i t y 到M a i n 圖 初始化 UI 流程圖 ? .java 文件 : 首先新建一個(gè)繼承 Activity 的類 First Public class First extends Activity{} 在此類里面對 UI 界面 進(jìn)行編輯 以下為關(guān)鍵代碼: 1 2 3 4 //覆寫 onCreate方法 public void onCreate(Bundle savedInstanceState) { //繪制 UI界面 setContentView()。 //開啟要跳轉(zhuǎn)的 UI (intent)。因?yàn)?ListActivity類已經(jīng)默認(rèn)綁定了一個(gè) ListView(列表視圖)界面組件。 //定位手機(jī) private static final int xiaohui = 1。 (jianjie, 獲取手機(jī)當(dāng)前位置,便于您找回 )。 //“防盜功能體驗(yàn)”界面 if(position == dingwei) { (,)。 繼承 PreferenceActivity 的 UI 設(shè)置界面的 java 文件無需過多的編程代碼,因?yàn)樵?PreferenceActivity 上做的 任何 設(shè)置 , 系統(tǒng) 都 會(huì)自動(dòng)以鍵值對的方式儲(chǔ)存到數(shù)據(jù)庫里 ,當(dāng)我們需要這些數(shù)據(jù)的時(shí)候,便可以直接從數(shù)據(jù)庫里調(diào)用。 區(qū)別在于通過第二種方式創(chuàng)建的對話框會(huì)繼承 Activity 的屬性,比如獲得Activity 的 menu 事件等。 showputPWDialog = ()。 廣播 機(jī)制 服務(wù) 之前已經(jīng)介紹了 Android 系統(tǒng)中廣播機(jī)制的概念,這里就主要說明在本軟件中所用到的 3種 廣播 —— 開機(jī)完成廣播、服務(wù)狀態(tài)廣播和短信 接收 廣播。在 Android 中光有接 收 的 類 還 不 行 , 要 想 讓 系 統(tǒng) 把 廣 播 發(fā) 送 到 你 的 應(yīng) 用 程 序 還 必 須 在 文件中進(jìn)行權(quán)限注冊,讓系統(tǒng)知道你需要接收廣播并給你開放ROOT 允許你使用才行。 短信接收廣播是當(dāng)手機(jī)接收到短信時(shí) Android 系統(tǒng)向應(yīng)用程序發(fā)送的一種廣播。到此為止把我們的軟件安裝到手機(jī)上就可以進(jìn)行 所有界面的切換 了。 View view = (, null)。 25 P r e f e r e n c e S c r e e nC h e c k B o x P r e f e r e n c es h e z h i . x m lE d i t T e x t P r e f e r e n c e C h e c k B o x P r e f e r e n c eE d i t T e x t P r e f e r e n c e C h e c k B o x P r e f e r e n c e 圖 文件構(gòu)架 控件屬性在本軟件中的應(yīng)用如圖 所示。 android:scrollbars=vertical / /LinearLayout ? : 在 RelativeLayout,以方便控件的擺放 RelativeLayout // ImageView為圖片 View,是用于添加圖片的控件 ImageView/ //一下是兩個(gè)文本信息,就是實(shí)際列表中要顯示的值 TextView/ TextView/ /Relati