【正文】
android:orientation=vertical //在布局文件中放進文本框并定義相關(guān)屬性TextView///嵌套絕對布局的水平布局 LinearLayout android:orientation=horizontal TextView/ EditTex/ /LinearLayout //嵌套相對布局北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )20151617 RelativeLayout /RelativeLayout? 文件:Android 中設(shè)立了一個統(tǒng)一管理文件,這個文件可以理解為 Android 的一個注冊表文件,在這個文件中,我們可以聲明我們自己定義的權(quán)限。任何一個 Activity 類都是需要注冊的,所以本應(yīng)用的 主要代碼如下:12345678910111213141516171819202122232425262728293031323334//注冊接受開機廣播權(quán)限usespermission android:name= ///注冊發(fā)送短信權(quán)限 usespermission android:name= ///注冊獲取具體地址權(quán)限usespermission android:name= ///請求 Activity 顯示 application android:icon=drawable/dun android:label=string/fangdao activity android:name=.Main android:label=string/fangdao android:clearTaskOnLaunch=true //通過 intentfilter 設(shè)置首顯 Activityintentfilteraction android:name= /category android:name= //intentfilter/activity/application//注冊廣播接受類receiver android:name=.BootCompleteReceiverintentfilter android:priority=2147483647action android:name=/action/intentfilter/receiver//注冊服務(wù)類 service android:name=.GPS/service service android:name=.SmsService/service 北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )21 ListActivityListActivity 直接繼承于 Activity,是手機基本應(yīng)用中最常用的一類應(yīng)用程序。我們通過設(shè)置一個 onListItemClick 函數(shù),來得到用戶正選擇了哪一列的信息,并做后續(xù)處理。因為ListActivity 類已經(jīng)默認(rèn)綁定了一個 ListView(列表視圖)界面組件。圖 ListView 示意圖在本軟件中,UI 主層和 UI 功能體驗層的列表視圖就是通過直接繼承 ListActivity這個類得到的。在 list 中的每一個數(shù)據(jù)都是一個 HashMap。我們只需要給 Value 對應(yīng)的 Key 賦值就可以把我們要顯示的數(shù)據(jù)裝進 List 中了。 //定位手機private static final int xiaohui = 1。 //鎖定手機private static final int baojing = 3。 //換卡短信通知//這里我們需要在 layout 文件中設(shè)置兩個布局文件,一個用于主框架,另一個是為//list 單獨建立的,專門擺放 list 中的控件,下面這句代碼就是主框架 setContentView()。北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )23151617181920212223242526272829303132333435363738394041424344//分別生成對象,以 map1 為例,后面 4 組方法相同 HashMapString,Object map1 = new HashMapString, Object()。 (jianjie, 獲取手機當(dāng)前位置,便于您找回)。 //將 Map 加入 list,這樣數(shù)據(jù)就存放在列表當(dāng)中啦 (map1)。 setListAdapter(listAdapter)。Intent intent = new Intent()。//“防盜功能體驗”界面if(position == dingwei) {(,)。}else if()……}北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )24t i y a nt i y a n l i s tt i y a n l i s tv a l u e _ 1v a l u e _ 2v a l u e _ 3v a l u e _ 1v a l u e _ 2v a l u e _ 3v a l u e _ 1v a l u e _ 2v a l u e _ 3…k e y _ 1k e y _ 2k e y _ 3圖 ListActivity 中 layout 框架? 文件:圖 展示了在 ListActivity 中兩個 layout 的布局框架,以下為代碼分析:? 文件:123456789101112131415161718LinearLayout ! 體驗列表 ListView //這里注意ListView的id一定為list,這是android系統(tǒng)中默認(rèn)的id,不能自擬。 android:scrollbars=vertical //LinearLayout? 文件:,以方便控件的擺放RelativeLayout // ImageView為圖片View,是用于添加圖片的控件 ImageView///一下是兩個文本信息,就是實際列表中要顯示的值TextView/TextView//RelativeLayout北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )25 PreferenceActivity在 Android 中有一個 Preference 類,用于手機的屬性設(shè)置。不過雖然做法沒錯,但是會比較繁瑣,因為每個設(shè)置選項都要建立與其對應(yīng)的 Preference。繼承 PreferenceActivity 的 UI 設(shè)置界面的 java 文件無需過多的編程代碼,因為在 PreferenceActivity 上做的任何設(shè)置,系統(tǒng)都會自動以鍵值對的方式儲存到數(shù)據(jù)庫里,當(dāng)我們需要這些數(shù)據(jù)的時候,便可以直接從數(shù)據(jù)庫里調(diào)用。PreferenceActivity 的布局文件有些特殊,需要在 res 文件夾下新建一個 xml 文件夾用于單獨存放此類控件和布局屬性,如圖 所示。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)用如圖 所示。 DialogDialog 是 android 開發(fā)過程中最常用到的組件之一,它包括以下幾種類型:1. 警告對話框:Alertialog 2. 進度對話框:ProgressDialog 3. 日期選擇對話框:DatePickerDialog 北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )264. 時間選擇對話框:TimePickerDialog 5. 自定義對話框:從 Dialog 繼承 Dialog 的創(chuàng)建方式有兩種:一是直接 new 一個 Dialog 對象,然后調(diào)用 Dialog 對象的 show 和 dismiss 方法來控制對話框的顯示和隱藏。區(qū)別在于通過第二種方式創(chuàng)建的對話框會繼承 Activity 的屬性,比如獲得Activity 的 menu 事件等。其程序流程圖如圖 所示。 View view = (, null)。(輸入密碼)。showputPWDialog = ()。//監(jiān)聽確定按鈕(new OnClickListener() {//信息核對提示if(().equals()) {else if(().equals(savedPassword)) {else{}//監(jiān)聽退出按鈕(new OnClickListener() {//完全退出程序public void onClick(View v) {().exit()。到此為止把我們的軟件安裝到手機上就可以進行所有界面的切換了。對于任何一個軟件來說,無論它有什么樣的 UI,人們最終想要獲得的還是軟件的功能。 廣播機制服務(wù)之前已經(jīng)介紹了 Android 系統(tǒng)中廣播機制的概念,這里就主要說明在本軟件中所用到的 3 種廣播——開機完成廣播、服務(wù)狀態(tài)廣播和短信接收廣播。當(dāng)用戶開機完成時,系統(tǒng)就會向接收開機完成廣播的應(yīng)用軟件發(fā)送開機完成廣播,告訴他們已完成開機動作,此時軟件就可以在接收此指令后做出自己需要的動作,例如開機運行的軟件就都需要接收開機完成廣播。短信接收廣播是當(dāng)手機接收到短信時 Android 系統(tǒng)向應(yīng)用程序發(fā)送的一種廣播。例如手機收到短信時會產(chǎn)生音樂和振動等狀態(tài),這就是由短息模塊在接收到系統(tǒng)短信接收廣播后作出的動作。在 Android 中光有接收的類還不行,要想讓系統(tǒng)把廣播發(fā)送到你的應(yīng)用程序還必須在 文件中進行權(quán)限注冊,讓系統(tǒng)知道你需要接收廣播并給你開放ROOT 允許你使用才行。當(dāng)系統(tǒng)收到短信后會向需要接收廣播的應(yīng)用發(fā)送短信廣播,本應(yīng)用接收廣播后就可根據(jù)短信內(nèi)容做出相應(yīng)的動作了。創(chuàng)建 S M S R e c e i v e dB r o a d c a s t R e c e i v e r 類繼承B r o a d c a s t R e c e i v e r 類覆寫 o n R e c e i v e方法判斷防盜保護是否已開啟得到數(shù)據(jù)庫數(shù)據(jù)N判斷是否為安全手機號碼判斷是否為定位指令NY判斷是否為鎖屏指令N判斷是否為報警指令判斷是否為銷毀數(shù)據(jù)指令NN獲取地址并向安全手機發(fā)送執(zhí)行手機鎖屏程序執(zhí)行手機發(fā)報警音程序備份并銷毀原有數(shù)據(jù)YYYY圖 SMS 服務(wù)流程圖短信接收后臺服務(wù)關(guān)鍵代碼解析如下:1234567891011121314151617//創(chuàng)建SMSReceivedBroadcastReceiver類繼承BroadcastReceiver類實現(xiàn)接收短信廣播public class SMSReceivedBroadcastReceiver extends BroadcastReceiver {//覆寫父類onReceive方法執(zhí)行動作public void onReceive(Context context, Intent intent) {// 檢測防盜保護是否開啟if(isprotect) {//通過msgs[i].getDisplayOriginatingAddress()方法得到來源短信電話號碼//對比是否為安全手機號if(().equals(+86 + safenumber)){}else if(().equals(12520 + safenumber)){}else if(().equals(safenumber)) {}// if((dingwei + password)) {}// else if((suoding + password)){}// else if((baojing + password)){}北 京 工 業(yè) 大 學(xué) 畢 業(yè) 設(shè) 計 ( 論 文 )29181920// else if((xiaohui + password)){}} 換卡短信通知本應(yīng)用在開機完成后首先接收系統(tǒng)發(fā)出的開機完成廣播,這時軟件就會在后臺開始檢測 SIM 卡的 IMSI 碼信息,如果此信息與原保存的 IMSI 碼不一致,則說明手機處于非