【文章內(nèi)容簡介】
求量進行排布,這樣的布局可是 UI 實現(xiàn)整齊、清晰、功能突出等效果,屬于理想的 UI 設計。 UI 功能體驗層UI 功能體驗層如圖 所示,此 UI 界面同樣繼承優(yōu)良設計布局方案將本應用所有功能統(tǒng)一以列表形式列出,最前端圖標代表著此條選項所要實現(xiàn)的功能,然后每個選項的功能說明以大字功能名加小子簡要說明的形式整齊的展現(xiàn)在界面上,讓用戶對選項功能一目了然。北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )9圖 UI 功能體驗層當用戶點擊進入 UI 功能體驗層的每個選項后,就會看到每個功能實現(xiàn)的具體說明,而且在每個可以單機實驗的功能里都加進了功能體驗按鈕,可以讓用戶體驗本功能的真實效果。其效果圖見附錄一。 UI 指令查看層在 UI 指令查看層,總結(jié)羅列了開啟每個防盜功能的防盜指令,用戶可以在這里方便快捷的得到所需防盜指令,如圖 所示。圖 UI 指令查看層北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )10 UI 信息設置層UI 的設置層是 UI 非常重要的一個視圖層,此層要以最方便,最簡約,最快捷為核心排版設計,而且要盡量覆蓋本軟件的所有功能設置?;谝陨弦c,首先總結(jié)本防盜軟件的設置功能如表 2。表格 2 設置功能所需功能 功能目的 功能體現(xiàn)形式設置此功能鍵的意義防盜開關(guān) 方便控制防盜功能的開啟與關(guān)閉開關(guān)按鈕 可以方便用戶對防盜應用軟件的控制,無需卸載就能關(guān)閉防盜換卡鎖定開關(guān)避免因用戶自己換卡執(zhí)行錯誤指令開關(guān)按鈕 在避免發(fā)送錯誤指令的同時,用戶也可通過此開關(guān)對鎖定功能進行單獨體驗換卡短信通知開關(guān)避免因用戶自己換卡執(zhí)行錯誤指令開關(guān)按鈕 在避免發(fā)送錯誤指令的同時,用戶也可通過此開關(guān)對換卡短信通知功能進行單獨體驗防盜密碼重置用于修改安全密碼 加密形式 方便用戶在首次初始化后改變防盜安全密碼安全手機號重置用于修改安全手機號碼顯示預置號碼方便用戶在首次初始化后改變防盜安全手機按照表格 2 中的功能需求,我在設置 UI 里建立了與之相應的 5 個控件,以方便用戶對軟件的應用控制。最終設計出圖 的效果來實現(xiàn)功能。圖 UI 設置層北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )11 Function 設計我們在 UI 的設計中了解到一款軟件擁有一個美觀的 UI 是多么重要,那我們該如何實現(xiàn)這種華麗的顯示呢?這就需要又一個很好的后臺設計既功能設計。 應用初始化初始化界面是讓用戶設置信息用的,所以首先我要告訴用戶需要設置的信息都有哪些,介紹完后還要在相應的位置給出用于填寫信息的控件。這里我們用 Android 中最常用的 TextView 和 EditText 兩個布局控件滿足需求。并且在 EditText 里加入 hint 屬性顯示相關(guān)提示信息。對于密碼的設置,我們都希望處于不可見狀態(tài)以保證我們個人信息的安全,我用 password 屬性來控制輸入時的顯示狀態(tài)。在整個 UI 的最下面我還放置了兩個按鈕,方便用戶的進一步應用和退出,此功能將用 Button 控件實現(xiàn)。 功能選擇功能選擇的 UI 主要分為兩部分,可以從上到下分為兩段,在布局控件中用LinearLayout 實現(xiàn),并設置排版屬性為垂直布局。上半部為一個圖片,下面則需要一個 List 控件完成效果,整個 UI 的程序?qū)⒂美^承 ListActivity 類來描述已達到選項羅列的效果 [7]。圖 為 Android 的文件管理。在 Android 中所有資源文件要統(tǒng)一管理并放到 res文件夾中,并把每個資源都加上各自的 ID,以方便調(diào)用。所有的調(diào)用 ID 則會放到 gen文件夾下的 文件中進行統(tǒng)一遍歷,我們所要的資源便可從這里索取。例如我們的宇宙圖片。圖 文件管理北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )12 功能體驗功能體驗 UI 分為兩層呈現(xiàn)。外面一層同樣用一個繼承 ListActivity 的類來實現(xiàn),在 list 空間里排布好每個圖標和文字的位置,這里要用到 ImageView 控件添加圖片。內(nèi)層則是一個介紹體驗層,這層的總體排布用 LinearLayout 的垂直分布就可以完成。添加 Button 按鈕實現(xiàn)用戶體驗功能。 功能查看這個界面完全是文字的排布,同樣用 ListActivity 加以 LinearLayout 垂直型布局就可以完成。 功能設置功能設置 UI 為用戶可操控界面,所以要使用繼承 PreferenceActivity 的類來完成相應的功能,此類是 Android 專門用來做 UI 設置界面用的,所以這個類中方法的應用也相對方便,但其布局文件與眾不同,需要在 res 文件中新建個 XML 文件進行單獨管理。其布局空間類型主要分為 3 大類 AppWidget Provider、PreferenceScreen 和Searchable,其中最常用的是 PreferenceScreen,在這里又包含CheckBoxPreference、EditTextRreference、ListPreference、Preference、RreferenceCategory、PreferenceScreen 和 RingtonePreference7 個控件 [8]。我們的 UI 設置界面就用 PreferenceScreen 來完成。 Service 設計手機防盜應用軟件在實際應用過程中一定是常駐后臺的軟件,所以不管用戶是否打開軟件,只要是開啟了防盜功能,那此軟件就會一直在后臺運行,出于這樣的考慮,我們就必須引進一個強大的后臺支持,那就是 Service 既后臺服務。 數(shù)據(jù)庫存儲服務在 Android 系統(tǒng)中,用于保存數(shù)據(jù)有 3 種方式:SQLite、SharedPreferences 和File。SQLite 是一種嵌入式系統(tǒng)中很常見的數(shù)據(jù)庫,而且所有的數(shù)據(jù)都儲存在一個文件中,便于遷移。SQLite 有見解的 SQL 訪問界面、相當快的速度,而且僅占用相對其他數(shù)據(jù)庫少量的內(nèi)存空間。在 Android 平臺上,SQLite 庫可以用來存儲應用程序中使用到的數(shù)據(jù),還可以通過定義 Content Provider 等方式,來讓其他應用程序也可以取用其中的數(shù)據(jù) [9]。SharedPreferences 是以鍵值對來存儲應用程序的配置信息的一種方式,它只能存北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )13儲基本數(shù)據(jù)類型。一個程序的配置文件僅可以在本應用程序中使用,或者說只能在同一個包內(nèi)使用,不能在不同的包之間使用。實際上 sharedPreferences 是采用了 XML格式將數(shù)據(jù)存儲到設備中,在 DDMS 中的 File Explorer 中的/data/data//shares_prefs 下。File 是一種文件存儲方式也是一種較常用的方法,在 Android 中讀取/寫入文件的方法,與 Java 中實現(xiàn) I/O 的程序是完全一樣的,提供了 openFileInput()和openFileOutput()方法來讀取設備上的文件。具體問題具體分心,根據(jù)我們的需要與要求,本程序最終選定用SharedPreferences 來存儲我們的數(shù)據(jù)。我們將用戶設置的安全密碼、安全手機號、防盜功能開關(guān)狀態(tài)、SIM 卡的 IMSI 碼等信息以鍵值對的形式存入其中進行保存。一個Value 對應一個 Key 值,如圖 所示,Key 值便是我們所保存的數(shù)據(jù)信息,這樣的保存方式既快捷又準確。用戶信息名 1用戶信息值O n e用戶信息名 2用戶信息值T w o用戶信息名 3用戶信息值T h r e eV a l u e K e y圖 數(shù)據(jù)庫存儲方式 監(jiān)聽按鈕事件服務監(jiān)聽器是 Android 設計的一種監(jiān)聽模式,當用戶執(zhí)行了某些動作時,需要系統(tǒng)對這些動作做出相應的反應,那么這時就需要監(jiān)聽器來捕獲這些來自用戶的信息,將其傳遞給系統(tǒng)再做處理。在我們的軟件中將會運用大量的監(jiān)聽器,其中包括監(jiān)聽用戶點擊按鈕事件、監(jiān)聽開機廣播事件、監(jiān)聽短信廣播事件等。監(jiān)聽按鈕事件,是將每個按鈕綁定上一個監(jiān)聽器,用()方法來實現(xiàn),當觸發(fā)相應的監(jiān)聽器后我們就可以執(zhí)行我們想要的操作了。 開機啟動和短信廣播服務防盜應用開啟后會在第一時間對手機的 SIM 卡進行檢查,判斷時候更換。那么這種監(jiān)聽開機需要另一項 Android 機制的支持來完成——廣播機制。在 Android 里面有各種各樣的廣播,比如電池的使用狀態(tài),電話的接收和短信的北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )14接收都會產(chǎn)生一個廣播。圖 就是一張廣播的運行機制原理圖。B r o a d c a s tR e v e i c e r AB r o a d c a s tR e v e i c e r CB r o a d c a s tR e v e i c e r BB r o a d c a s tR e v e i c e r DA n d r o i d事件 2事件 1A n d r o i d 廣播事件圖 Android 廣播機制各種廣播在 Android 系統(tǒng)中運行,當系統(tǒng)/應用程序運行時便會向 Android 注冊各種廣播,Android 接收到廣播會便會判斷哪種廣播需要哪種事件,然后向不同需要事件的應用程序注冊事件,不同的廣播可能處理不同的事件也可能處理相同的廣播事件,這時就需要 Android 系統(tǒng)為我們做篩選。本軟件就利用開機廣播和短信接收廣播來判斷手機狀態(tài)和控制手機。 GPS 服務對于 GPS 我想大家現(xiàn)在都很了解,至少不會陌生,一般情況下每個裝載 GPS 的設備都會由 3 顆衛(wèi)星進行定位,在需要時可將設備所在的位置信息發(fā)送到 GPS 上,例如返回的經(jīng)緯度,有了這些位置信息我們便可進行需要的操作 [10]。在本應用中將會運用 Android 手機的 GPS 定位系統(tǒng),為我們獲取手機的當前位置,便于用戶找回丟失的手機 私人數(shù)據(jù)的管理當用戶的手機丟失后恐怕最擔心的就是自己私人信息的外露,出于此考慮,本軟件將通過繼承 IntentService 的類,對用戶的通訊錄、媒體圖片進行備份并向安全手機發(fā)送,同時將原有數(shù)據(jù)刪除,以防止不法分子的非法企圖。北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )154 手機防盜應用方案的實施按照手機防盜應用技術(shù)的設計理念,我將從 UI 入手,在做完界面的基礎上組合、銜接并加入相應的功能,最后通過 Service 實現(xiàn)后臺監(jiān)聽、儲存、處理等功能。在實現(xiàn)這些功能之前我們需要先搭建 Android 開發(fā)環(huán)境,其具體操作流程見附表二。 UI 的實現(xiàn)在 Android 系統(tǒng)中,UI 的構(gòu)建主要都由 Activity 類來完成。為了開發(fā)方便,Android 又構(gòu)造了多個繼承 Activity 類的子類。其中在我們的軟件里用到了ListActivity 和 PreferenceActivity 兩個子類和 Activity 本身。 Activity 要使用 Activity 以及其子類首先要知道 Activity 的生命周期,只有知道其生命周期的順序才能控制好界面的顯示。圖 為 Google 官方給出的 Activity 生命周期流程圖。北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )16圖 Activity 生命周期在本軟件中有 8 個 UI 直接通過繼承 Activity 類構(gòu)成,他們的應用方法大同小異,我就拿其中最復雜的初始化界面來介紹。初始化界面的整體設計流程圖如圖 所示。北 京 工 業(yè) 大 學 畢 業(yè) 設 計 ( 論 文 )17創(chuàng)建 F i r s t 類覆寫 o n C r e a t e 方法聲明并得到 B u t t o n控件為每個B u t t o n 綁定監(jiān)聽器用戶點擊按鈕事件s e tC o nt e nt V ie w 顯示界面等待用戶點擊事件NYL a y o u t提供控件判斷密碼是否不為空提示輸入狀態(tài)錯誤判斷密碼是否合法判斷手機號是否合法判斷手機號是否不為空判斷兩次密碼是否一致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 文件:首先新建一個繼承 Activity 的類 FirstPublic class First extends Activity{}在此類里面對 UI 界面進行編輯以下為關(guān)鍵代碼:1234567//覆寫 onCreate 方法public void onCreate(Bundle savedInstanceState) {//繪制 UI 界面 setContentView()。//用 findViewById 的方法聲明并得到 Button 控件Button bt_sure = (Button)findViewById()。//用 setOnClickListen