智能終端軟件設(shè)計(jì)及開(kāi)發(fā)課程報(bào)告(共30頁(yè))_第1頁(yè)
智能終端軟件設(shè)計(jì)及開(kāi)發(fā)課程報(bào)告(共30頁(yè))_第2頁(yè)
智能終端軟件設(shè)計(jì)及開(kāi)發(fā)課程報(bào)告(共30頁(yè))_第3頁(yè)
智能終端軟件設(shè)計(jì)及開(kāi)發(fā)課程報(bào)告(共30頁(yè))_第4頁(yè)
智能終端軟件設(shè)計(jì)及開(kāi)發(fā)課程報(bào)告(共30頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、昆明理工大學(xué)智能終端軟件設(shè)計(jì)及開(kāi)發(fā)課程報(bào)告題 目: android系統(tǒng)來(lái)電防火墻APP之編碼與 軟件測(cè)試模塊設(shè)計(jì)與實(shí)現(xiàn) 學(xué) 院: 信息工程與自動(dòng)化學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名: 李力 學(xué) 號(hào): 201010803116 指導(dǎo)教師: 游進(jìn)國(guó) 日 期: 2013年12月28日目錄一、摘要3二、緒論32.1 ANDROID的系統(tǒng)介紹32.2 ANDROID平臺(tái)與其它平臺(tái)的比較42.3 設(shè)計(jì)目標(biāo)42.4 來(lái)電防火墻設(shè)計(jì)原則42.5 來(lái)電防火墻功能42.6 本文所做的主要工作6三、系統(tǒng)分析與設(shè)計(jì)63.1系統(tǒng)功能分析63.2創(chuàng)建數(shù)據(jù)庫(kù)文件73.3系統(tǒng)界面設(shè)計(jì)實(shí)現(xiàn)83.3.1 可視化控件設(shè)置83

2、.3.2布局83.4 Eclipse環(huán)境搭建93.4.1 開(kāi)發(fā)環(huán)境搭建93.4.2 創(chuàng)建模擬器12四、程序界面與代碼實(shí)現(xiàn)134.1用戶界面134.2主程序模塊174.3 程序測(cè)試19五、結(jié)束語(yǔ)21一、摘要本設(shè)計(jì)是基于Android系統(tǒng)的智能手機(jī)來(lái)電防火墻,主要功能是過(guò)濾來(lái)電號(hào)碼。該系統(tǒng)包括來(lái)電攔截、攔截電話的添加和修改、攔截電話來(lái)電時(shí)的提示方式、攔截電話的回?fù)?。該?lái)電防火墻總體上分三大模塊:用戶界面UI設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)和來(lái)電后搜索數(shù)據(jù)庫(kù)拒接。用戶界面UI的設(shè)計(jì)主要有兩種方法,一種是在XML文件中靜態(tài)設(shè)置,另一種是在Java代碼中動(dòng)態(tài)設(shè)置,該設(shè)計(jì)主要用的是第一種方法。該設(shè)計(jì)的數(shù)據(jù)庫(kù)采用的是SQL

3、ite,SQLite是一款輕型的嵌入式數(shù)據(jù)庫(kù),資源占有率非常的低。程序的代碼主要是以Java為主,結(jié)合Android自己特有的類來(lái)完成整體的設(shè)計(jì)。本系統(tǒng)作為手機(jī)來(lái)電處理的主要功能之一,它的設(shè)計(jì)直接影響到手機(jī)的性能和友好性,另外,Android是一個(gè)開(kāi)放的操作系統(tǒng),它已被眾多的手機(jī)廠商采用。本手機(jī)來(lái)電防火墻主要是作為拒接電話設(shè)計(jì)的。通過(guò)黑名單的新增、修改和刪除,來(lái)對(duì)手機(jī)來(lái)電進(jìn)行管理。如果來(lái)電號(hào)碼不在黑名單中,則按照手機(jī)默認(rèn)的情景模式響應(yīng);如果來(lái)電號(hào)碼在黑名單中,則直接掛斷該電話,并且彈出一個(gè)對(duì)話框提示用戶:來(lái)電在黑名單中,已拒接!二、緒論2.1 ANDROID的系統(tǒng)介紹Android系統(tǒng)是Goo

4、gle公司推出的一款開(kāi)放平臺(tái),Android以linux2.6為內(nèi)核,系統(tǒng)穩(wěn)定安全,應(yīng)用程序使用Java語(yǔ)言來(lái)開(kāi)發(fā),縮短了軟件開(kāi)發(fā)周期,現(xiàn)在已經(jīng)被許多的手機(jī)廠商采用。Android是一個(gè)真正意義上的開(kāi)放性移動(dòng)設(shè)備綜合平臺(tái),它包括操作系統(tǒng)、用戶界面、中間件和一些關(guān)鍵的平臺(tái)應(yīng)用,擁有移動(dòng)電話工作所需的全部軟件。Android最大特點(diǎn)在于它是一個(gè)開(kāi)放的體系結(jié)構(gòu),具有非常好的開(kāi)發(fā)和調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn),Android里面具有非常豐富的圖形系統(tǒng),提供對(duì)多媒體功能的支持和非常強(qiáng)大的瀏覽器。Android的主要特點(diǎn)體現(xiàn)在以下幾點(diǎn)2:(1)應(yīng)用程序架構(gòu):在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備多種不同的基

5、礎(chǔ)組件,在開(kāi)發(fā)應(yīng)用程序時(shí),就可以直接調(diào)用這些組件來(lái)使用,可以節(jié)省開(kāi)發(fā)應(yīng)用程序的心力及時(shí)間。(2)Dalvik虛擬機(jī)器:在Android平臺(tái)上所使用的Java虛擬機(jī),不是Sun公司的標(biāo)準(zhǔn)Java虛擬機(jī),而是使用Google自主開(kāi)發(fā)的代號(hào)為Dalvik的虛擬機(jī),它在保證API方面的兼容性的同時(shí),針對(duì)移動(dòng)手機(jī)進(jìn)行了大幅度優(yōu)化,占用資源更小,運(yùn)行效率更高。(3)集成的瀏覽器:集成的瀏覽器是Android內(nèi)建的瀏覽器,是以WebKit的瀏覽引擎為基礎(chǔ)所開(kāi)發(fā)的。WebKit是一個(gè)開(kāi)源瀏覽器網(wǎng)頁(yè)排版引擎。配合Android手機(jī)的功能,可以在瀏覽網(wǎng)頁(yè)時(shí),達(dá)到更好的效果。(4)優(yōu)化的繪圖能力:在程序里可以用到的

6、繪圖功能分為2D和3D兩個(gè)方面。在2D方面,Android提供了一套特有的類庫(kù)(SGL);而在3D方面則是使用OpenGLES1.0(OpenGL for Embedded Systems)規(guī)范的類庫(kù)。它們是一種非常快的圖形引擎,并且支持硬件加速。(5)SQLite數(shù)據(jù)庫(kù):SQLite提供結(jié)構(gòu)化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫(kù),它的實(shí)際目標(biāo)是嵌入式,目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用的資源很低。它能夠支持Windows、linux、Unix等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如PHP,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來(lái)講,它

7、的處理速度比它們都快。它無(wú)需安裝和管理配置,它是一個(gè)存儲(chǔ)在單一磁盤(pán)文件中的完整數(shù)據(jù)庫(kù),占有空間只有250KB,但支持?jǐn)?shù)據(jù)大小最高達(dá)2TB。雖然很小巧,但是支持的SQL語(yǔ)句毫不遜色于其它開(kāi)源數(shù)據(jù)庫(kù)。同時(shí)它還支持事務(wù)功能和并發(fā)處理等等。SQLite也是一套開(kāi)放性的關(guān)聯(lián)式資料庫(kù)。其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。(6)多媒體的支持能力:主要用于播放媒體文件。這同時(shí)包括對(duì)音頻和視頻的支持,并支持“播放URI地址(即統(tǒng)一資源識(shí)別地址)”模式在網(wǎng)絡(luò)上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:JPG、PNG、GIF等格式。(7)GSM技術(shù):Global System for

8、Mobile Communication,即全球移動(dòng)通信系統(tǒng),是第二代移動(dòng)通信技術(shù),其開(kāi)發(fā)目的是讓全球各地可以使用一個(gè)移動(dòng)電話網(wǎng)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球。GSM技術(shù)是屬于手機(jī)硬件方面的發(fā)展,也是在開(kāi)發(fā)Android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。(8)藍(lán)牙、EDGE、3G和Wi-Fi:藍(lán)牙是一種新型、開(kāi)放、低成本、短距離的無(wú)線連接技術(shù),可取代短距離的電纜,實(shí)現(xiàn)話音和數(shù)據(jù)的無(wú)線傳輸。EDGE是一種從GSM到3G的過(guò)渡技術(shù),它主要是在GSM系統(tǒng)中采用了一種新的調(diào)制解調(diào)方法,即最先進(jìn)的多時(shí)隙操作和SPSK調(diào)制技術(shù)。Wi-Fi(Wireless Fidelity),即無(wú)線保真技術(shù),與藍(lán)牙技術(shù)

9、一樣,同屬于在辦公室和家庭中使用的短距離無(wú)線技術(shù)。該技術(shù)使用的是2.4GHz附近的頻段,該頻段目前尚屬無(wú)須許可的無(wú)線頻段。其目前可使用的標(biāo)準(zhǔn)有兩個(gè),分別是IEEE802.11a和IEEE802.nb。這些通訊能力也是屬于手機(jī)硬件方面的發(fā)展,也是在開(kāi)發(fā)Android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。(9)豐富的開(kāi)發(fā)環(huán)境:Android SDK提供了相當(dāng)完善的程序開(kāi)發(fā)環(huán)境,其開(kāi)發(fā)環(huán)境包括設(shè)備模擬器、調(diào)試工具、內(nèi)存和性能檢測(cè)等方面的評(píng)估功能,另外也提供可用于Eclipse IDE的開(kāi)發(fā)插件界面。2.2 ANDROID平臺(tái)與其它平臺(tái)的比較首先看一下Symbian,它存在著以下的致命不足:Symbian的主

10、導(dǎo)者為諾基亞、索尼愛(ài)立信等傳統(tǒng)的手機(jī)廠商,因此雖然Symbian非常成熟,但是基本上還帶有濃厚的保守色彩,應(yīng)用軟件與我們?nèi)粘5腜C軟件有較大的理念差異。再者Symbian與互聯(lián)網(wǎng)的結(jié)合給人感覺(jué)仍不夠緊密,互聯(lián)網(wǎng)應(yīng)用更多只是作為陪襯存在。Android平臺(tái)與此相反,移動(dòng)互聯(lián)網(wǎng)是它最重要的應(yīng)用,無(wú)論系統(tǒng)內(nèi)核、應(yīng)用軟件還是硬件設(shè)計(jì),幾乎都是圍繞著快捷的移動(dòng)互聯(lián)網(wǎng)應(yīng)用所展開(kāi)的,同時(shí)Android與PC平臺(tái)存在先天的基因聯(lián)系,可以很好的實(shí)現(xiàn)與PC設(shè)備的信息互享,更容易獲得用戶的廣泛認(rèn)可。與Android擁有相同屬性的還有微軟的Windows Mobile,然而臃腫的Windows平臺(tái)飽受垢病,真正喜歡它

11、的用戶并不多。至于iPhone,它只是蘋(píng)果公司的封閉平臺(tái),用戶無(wú)法在iPhone中自行安裝應(yīng)用程序。所有的東西都應(yīng)該蘋(píng)果自己設(shè)計(jì)制造,從而確保利潤(rùn)不被第三方分享。蘋(píng)果自己為iPhone開(kāi)發(fā)了嵌入式系統(tǒng)以及完整的應(yīng)用,但它干脆都不宣揚(yáng)iPhone的軟件設(shè)計(jì),而是將iPhone作為一個(gè)包含軟硬件賣(mài)點(diǎn)的手機(jī)產(chǎn)品出售。同樣,蘋(píng)果式的奢華與時(shí)尚讓iPhone大獲成功,以至于成為手機(jī)市場(chǎng)的風(fēng)向標(biāo)。與蘋(píng)果相反,Android則是走完全開(kāi)放的道路,這種模式的巨大優(yōu)點(diǎn)在PC軟件領(lǐng)域已為業(yè)界所公認(rèn)。自由軟件高度活躍,錯(cuò)誤可以被快速修改,新的應(yīng)用和新的創(chuàng)意可以不斷出現(xiàn)。自由的屬性讓Android的錯(cuò)誤可以快速的修正

12、,從而提高系統(tǒng)的可靠性與安全性。Android平臺(tái)的另外一個(gè)優(yōu)勢(shì)是標(biāo)準(zhǔn)化和跨平臺(tái)。作為開(kāi)發(fā)平臺(tái),可以為任何手機(jī)廠商自由選擇一廠商對(duì)代碼做出修改,那么修改的結(jié)果必須迅速返回,確保系統(tǒng)的統(tǒng)一性。其次,Android的應(yīng)用都基于Java開(kāi)發(fā),Java具有一次編寫(xiě)、到處運(yùn)行的跨平臺(tái)屬性,換句話說(shuō),開(kāi)發(fā)者只要編寫(xiě)一遍程序,就能夠?qū)崿F(xiàn)在所有Android設(shè)備中運(yùn)行,真正做到了硬件無(wú)關(guān)性,這顯然大幅度降低了開(kāi)發(fā)者的負(fù)擔(dān)。再者,Android提供標(biāo)準(zhǔn)化的API和SDK開(kāi)發(fā)包,手機(jī)廠商可以根據(jù)需要自行開(kāi)發(fā)或收納已有的程序,從而打造出富有特色的Android平臺(tái)。這對(duì)手機(jī)廠商來(lái)說(shuō),它可以完全不管軟件技術(shù)之內(nèi)的問(wèn)題

13、,快速整合出適合自己的一套平臺(tái),然后將精力集中在硬件設(shè)計(jì)上面,可以在短時(shí)間內(nèi)快速推出新品,對(duì)開(kāi)發(fā)者來(lái)說(shuō),標(biāo)準(zhǔn)化的Android絕對(duì)是令人愉快的選擇。Android和操作系統(tǒng)進(jìn)行了緊密地整合,從而可以方便地使用操作系統(tǒng)的功能。并且從圖形應(yīng)用界面的開(kāi)發(fā)上來(lái)看,Android可以使用配置文件來(lái)描述圖形控件的布局,用Java代碼編寫(xiě)實(shí)際響應(yīng)代碼,比用AWT/Swing編寫(xiě)圖形應(yīng)用程序要方便得多。當(dāng)然由于Android已經(jīng)提供了大量現(xiàn)成的應(yīng)用API和應(yīng)用工具,使得常規(guī)智能手機(jī)功能的開(kāi)發(fā)變得非常容易和簡(jiǎn)單。2.3.設(shè)計(jì)目標(biāo)本手機(jī)來(lái)電防火墻是以拒接電話為主要的設(shè)計(jì)目標(biāo),通過(guò)黑名單的新增、修改和刪除,對(duì)手機(jī)來(lái)

14、電進(jìn)行管理。如果來(lái)電號(hào)碼不在黑名單中,則按照手機(jī)默認(rèn)的情景模式響應(yīng);如果來(lái)電號(hào)碼在黑名單中,則直接掛斷該電話,并且彈出一個(gè)對(duì)話框提示用戶:來(lái)電在黑名單中,已拒接。2.4 來(lái)電防火墻設(shè)計(jì)原則本系統(tǒng)在設(shè)計(jì)的時(shí)候要考慮的因素主要遵循以下幾條原則:(1)目的明確。一個(gè)好的程序必須有明確合理的、適用的目的。本程序的主要目的是實(shí)現(xiàn)對(duì)號(hào)碼的屏蔽。(2)功能實(shí)用。一個(gè)軟件所提供的功能應(yīng)該是切合實(shí)際需求的。本程序?qū)崿F(xiàn)的是在黑名單中的號(hào)碼來(lái)電后,直接將其掛掉,有很好的實(shí)用價(jià)值。 (3)界面簡(jiǎn)單。軟件界面設(shè)計(jì)簡(jiǎn)潔,美觀,人性化,滿足用戶的基本要求。 2.5 來(lái)電防火墻功能該來(lái)電防火墻總體上分三大模塊:用戶界面UI設(shè)

15、計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)和主程序模塊。用戶界面UI的設(shè)計(jì)主要有兩種方法,一種是在XML文件中靜態(tài)設(shè)置,另一種是在Java代碼中動(dòng)態(tài)設(shè)置,該設(shè)計(jì)主要用的是第一種方法。該設(shè)計(jì)的數(shù)據(jù)庫(kù)采用的是SQLite,SQLite是一款輕型的嵌入式數(shù)據(jù)庫(kù),資源占有率非常的低。程序的代碼主要是以Java為主,結(jié)合Android自己特有的類來(lái)完成整體的設(shè)計(jì)。2.6 本文所做的主要工作本來(lái)電防火墻界面設(shè)計(jì)主要采用的是靜態(tài)的XML文件設(shè)置,后臺(tái)數(shù)據(jù)庫(kù)是用的SQLite,通過(guò)用戶UI與數(shù)據(jù)庫(kù)連接將前后臺(tái)連接起來(lái),本文主要做了以下工作:第一章緒論對(duì)Android平臺(tái)進(jìn)行簡(jiǎn)單介紹,描述了Android的發(fā)展、前景和優(yōu)勢(shì),總體對(duì)Andr

16、oid的認(rèn)識(shí)。第二章主要介紹在本次程序開(kāi)發(fā)中所使用的兩種技術(shù)XML、SQLite本為今后的程序設(shè)計(jì)工作做好鋪墊。第三章對(duì)數(shù)據(jù)庫(kù)和程序的設(shè)計(jì)進(jìn)行了介紹。第四章對(duì)程序的各個(gè)模塊進(jìn)行詳細(xì)介紹,并且對(duì)設(shè)計(jì)的調(diào)試和測(cè)試以及設(shè)計(jì)過(guò)程中出現(xiàn)的問(wèn)題進(jìn)行了介紹。結(jié)束語(yǔ)是對(duì)這一段時(shí)間的設(shè)計(jì)進(jìn)行總結(jié),總結(jié)一下自己的經(jīng)驗(yàn)和教訓(xùn)。三、系統(tǒng)分析與設(shè)計(jì)本來(lái)電防火墻在Eclipse下編譯完成,并使用XML腳本語(yǔ)言結(jié)合Java代碼編寫(xiě)整體程序,前臺(tái)界面設(shè)計(jì)采用的是XML靜態(tài)文件,并且在代碼中有相應(yīng)的動(dòng)態(tài)設(shè)置,后臺(tái)數(shù)據(jù)庫(kù)采用了SQLite,并通過(guò)一系列的設(shè)計(jì)使來(lái)電防火墻逐步趨于完善。3.1系統(tǒng)功能分析本來(lái)電防火墻主要包括三個(gè)模塊

17、:用戶界面UI、數(shù)據(jù)庫(kù)模塊和主程序模塊。本手機(jī)來(lái)電防火墻主要是作為拒接電話設(shè)計(jì)的。通過(guò)黑名單的新增、修改和刪除,來(lái)對(duì)手機(jī)來(lái)電進(jìn)行管理。如果來(lái)電號(hào)碼不在黑名單中,則按照手機(jī)默認(rèn)的情景模式響應(yīng);如果來(lái)電號(hào)碼在黑名單中,則直接掛斷該電話,并且彈出一個(gè)對(duì)話框提示用戶:來(lái)電在黑名單中,已拒接。本手機(jī)來(lái)電防火墻的三個(gè)模塊如下圖3-1所示:來(lái)電防火墻號(hào)碼防騷擾數(shù)據(jù)接入用戶界面騷擾攔截分析號(hào)碼退出界面黑名單界面動(dòng)態(tài)主界面圖3-1 來(lái)電防火墻系統(tǒng)結(jié)構(gòu)圖本手機(jī)來(lái)電防火墻開(kāi)發(fā)的時(shí)候,我首先繪制的是所有用戶界面UI的整體框架圖,如3-2所示:黑名單新增幫助文本黑名單幫助退出修改刪除確定退出?確定取消圖3-2 整體框架

18、圖3.2創(chuàng)建數(shù)據(jù)庫(kù)文件本程序中,后臺(tái)數(shù)據(jù)庫(kù)用的SQLite數(shù)據(jù)庫(kù),只用到了黑名單這一個(gè)表格。黑名單主要是用來(lái)保存拒接號(hào)碼的。包括編號(hào)、號(hào)碼簡(jiǎn)介兩個(gè)字段。其中_id(編號(hào))設(shè)定為主鍵,number(號(hào)碼)是必要字段,編碼是自動(dòng)獲取,從1開(kāi)始以整數(shù)上升。黑名單表結(jié)構(gòu)如表3-1所示:表3-1 用戶注冊(cè)表字段數(shù)據(jù)類型長(zhǎng)度允許空_id整型1否number整型4否3.3系統(tǒng)界面設(shè)計(jì)實(shí)現(xiàn)本程序的用戶界面設(shè)計(jì)采用的是XML文件,涉及到主界面,黑名單界面等實(shí)現(xiàn)。3.3.1 可視化控件設(shè)置可視化控件4是直接與用戶交互的對(duì)象。Android除了支持自定義控件以外,自身也提供了非常豐富的各種可視化控件。這些控件大都已

19、經(jīng)完整地實(shí)現(xiàn)其功能,所以一般情況下開(kāi)發(fā)人員只需要設(shè)置它們的屬性,就可以定義一個(gè)可交互的用戶界面控件了。設(shè)置控件屬性的方法有兩種:一種是在XML文件中靜態(tài)設(shè)置,另一種則是在Java代碼中動(dòng)態(tài)設(shè)置。要?jiǎng)?chuàng)建用戶界面,首先我們必須了解的是View類。View類是可視化控件的基類,它主要提供了控件繪制和事件處理的方法。而可視化控件,是指重新實(shí)現(xiàn)了View的繪制和事件處理方法并且最終與用戶交互對(duì)象,如文本顯示、按鈕等。ViewGroup類也是繼承自View類,其最大的特點(diǎn)是可以有子控件。子控件是View類的對(duì)象,當(dāng)然也可以是ViewGroup類的對(duì)象,即ViewGroup可以嵌套。實(shí)際上,這是采用了設(shè)計(jì)模

20、式中的Composite模式,系統(tǒng)把對(duì)象以樹(shù)形結(jié)構(gòu)組織起來(lái),從而達(dá)到了“部分整體”的層次結(jié)構(gòu),使得客戶端對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。在Android中除了想Listview這種需要有子控件的控件類繼承自ViewGroup以外,還有Layout類也同樣繼承自ViewGroup。需要說(shuō)明的是,布局默認(rèn)情況下并不直接顯示給用戶,其主要功能在于控制子控件在屏幕上擺放的位置。所以通??梢?jiàn)的Android程序都是可視化控件和布局組成的。3.3.2布局當(dāng)我們手握著一些已經(jīng)被設(shè)置好了的控件的時(shí)候,就該思考怎樣按照你的設(shè)計(jì)把他們放在Android設(shè)備的屏幕上了。Layout就是負(fù)責(zé)管理控件在屏幕的位置

21、的類。Android SDK 已經(jīng)內(nèi)置了幾種簡(jiǎn)單的布局2模型,通過(guò)這幾種布局模型的組合、嵌套并設(shè)置子控件的布局參數(shù),我們完全可以構(gòu)建出各種復(fù)雜的用戶界面。1. 線性布局6線性布局應(yīng)該是應(yīng)用程序中最常用的布局方式,他提供了控件水平或者垂直排列的模型,同時(shí)我們可通過(guò)設(shè)置子控件的weight布局參數(shù)控制各個(gè)控件在布局中的相對(duì)大小。2. 表格布局表格布局模型以行列的形式管理子控件,每一行為一個(gè)TableRow的對(duì)象,也可為一個(gè)View的對(duì)象。TableRow可添加子控件,每添加一個(gè)子控件為一列。3. 相對(duì)布局相對(duì)布局的子控件會(huì)根據(jù)它們所設(shè)置的參照控件和參數(shù)進(jìn)行相對(duì)布局。參照控件可以是父控件,也可以是其

22、他子控件,但被參照的控件必須要在參照它的控件之前定義。4. 單幀布局單幀布局最簡(jiǎn)單的布局模型,在這種布局下每個(gè)添加的子控件都被放在布局的左上角,并覆蓋在前一個(gè)控件的上層。5. 坐標(biāo)布局坐標(biāo)布局的子控件需要制定相對(duì)于此坐標(biāo)布局的橫、縱坐標(biāo)值,否則將會(huì)像FrameLayout那樣被排在左上角。手機(jī)應(yīng)用需要適用于不同的屏幕大小,而這樣布局模型不能自適應(yīng)屏幕尺寸大小,所以應(yīng)用的相當(dāng)少。3.4 Eclipse環(huán)境搭建數(shù)據(jù)庫(kù)的連接方式主要有兩種:ODBC連接和OLE DB連接。3.4.1 開(kāi)發(fā)環(huán)境搭建1. 開(kāi)始Eclipse3,然后選擇 Help > Software Updates > Fi

23、nd and Install,如圖3-3圖3-3 Find and Install2. 對(duì)話框出現(xiàn)后,選擇 Search for new features to install 點(diǎn)擊 Next。如圖3-4圖3-4 Search for new features to install3. 點(diǎn)擊New Remote Site。如圖3-5圖3-5 New Remote Site4. 在對(duì)話框中,輸入遠(yuǎn)程站點(diǎn)的名字,輸入站點(diǎn)如下:https:/dl- 點(diǎn)擊Ok5. 你可以看到新的站點(diǎn)添加到搜索列表中(并檢查),點(diǎn)擊Finish。6. 在下面的搜索結(jié)果對(duì)話框,選擇復(fù)選框 Android Plugin &

24、gt; Developer Tools。 它將會(huì)檢查特性: "Android Developer Tools"和"Android Editors"。 Android 編輯器的特性是可選的,但我們推薦安裝它,如果你選擇安裝,需要前面提到的WST插件,點(diǎn)擊 Next。如圖3-6:圖3-6 搜索結(jié)果對(duì)話框7. 閱讀許可協(xié)議,然后選擇接受許可協(xié)議,點(diǎn)擊 Next。8. 點(diǎn)擊 Finish。9. ADT插件沒(méi)有簽名,你可以點(diǎn)擊“Install All“來(lái)安裝所有東西。10. 重啟 Eclipse。3.4.2 創(chuàng)建模擬器1打開(kāi)EclipsewindowsAndroi

25、d SDK and AVD Manager4。如圖3-7:圖3-7 創(chuàng)建模擬器從 “Android SDK and AVD Manager”窗口的左側(cè)選擇 “Virtual Devices”。1)選擇 “New”。2)輸入一個(gè)AVD 名稱。3)選擇一個(gè) Target。4)輸入模擬的 SD Card 的容量大小。5)選擇一個(gè)外觀皮膚 Skin。1. 讓模擬器外觀大小像 G1,MyTouch 3G,Hero,等手機(jī)設(shè)備。保留默認(rèn)的skin設(shè)置值。2. 模擬 Motorola Droid。選擇 WVGA 854。3. 模擬其他的設(shè)備。選擇列表內(nèi)其他的選項(xiàng)。6)然后 “Create AVD”。四、程序

26、界面與代碼實(shí)現(xiàn)4.1用戶界面(1)該模塊主要是各個(gè)用戶界面的。程序主界面如4-1所示:圖4-1主程序界面該界面通過(guò)mian.xml文件來(lái)靜態(tài)的實(shí)現(xiàn),mian.xml代碼如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height=&qu

27、ot;fill_parent" android:gravity="center" ><Buttonandroid:id="+id/button1_id" android:layout_width="280dip" android:layout_height="wrap_content" android:text="string/button1" android:gravity="center" /> <Buttonandroid:id=&qu

28、ot;+id/button3_id" android:layout_width="280dip" android:layout_height="wrap_content" android:text="string/button3" android:gravity="center" /> <Buttonandroid:id="+id/button4_id" android:layout_width="280dip" android:layout_heigh

29、t="wrap_content" android:text="string/button4" android:gravity="center"/></LinearLayout>(2)點(diǎn)擊黑名單后,會(huì)打開(kāi)黑名單界面 黑名單界面如圖4-2所示:圖4-2 黑名單界面該界面主要相關(guān)java代碼如下:public class blacklist extends Activity private blackToDoDB myToDoDB; private Cursor myCursor; private ListView myL

30、istView; private EditText myEditText; private int _id; String pnumber; protected final static int MENU_ADD = Menu.FIRST; protected final static int MENU_EDIT = Menu.FIRST + 1; protected final static int MENU_DELETE = Menu.FIRST + 2; Override myListView = (ListView) this.findViewById(R.id.myListView)

31、; myEditText = (EditText) this.findViewById(R.id.myEditText); myToDoDB = new blackToDoDB(this); /* 取得DataBase里的數(shù)據(jù) */ myCursor = myToDoDB.select(); int ccount=myCursor.getCount(); pnumber=new Stringccount; for(int i=0;i<ccount;i+) myCursor.moveToPosition(i); pnumberi=myCursor.getString(1); /* new

32、SimpleCursorAdapter并將myCursor傳入, 顯示數(shù)據(jù)的字段為todo_text */ SimpleCursorAdapter adapter = new SimpleCursorAdapter (this, R.layout.list, myCursor, new String blackToDoDB.FIELD_TEXT , new int R.id.listTextView1 ); myListView.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener() Override public

33、 void onItemSelected (AdapterView<?> arg0, View arg1, int arg2, long arg3) /* getSelectedItem所取得的是SQLiteCursor */ SQLiteCursor sc = (SQLiteCursor) arg0.getSelectedItem(); _id = sc.getInt(0); myEditText.setText(sc.getString(1); Override public void onNothingSelected(AdapterView<?> arg0) )

34、; private void addTodo() if (myEditText.getText().toString().equals("") return ;if( judge(myEditText.getText().toString(),pnumber) Toast.makeText(getApplicationContext(), "該號(hào)碼已經(jīng)存在!" , Toast.LENGTH_SHORT).show(); /* 添加數(shù)據(jù)到數(shù)據(jù)庫(kù) */ else myToDoDB.insert(myEditText.getText().toString();

35、 /* 重新查詢 */ myCursor.requery(); /* 重新整理myListView */ myListView.invalidateViews(); myEditText.setText(""); _id = 0; private void deleteTodo() if (_id = 0) return; new AlertDialog.Builder(blacklist.this) /*彈出窗口的最上頭文字*/ .setTitle(R.string.deltiltei) /*設(shè)置彈出窗口的圖式*/ / .setIcon(R.drawable.hot) /

36、*設(shè)置彈出窗口的信息*/ .setMessage(R.string.del_msg) .setPositiveButton(R.string.close_ok, new DialogInterface.OnClickListener() public void onClick (DialogInterface dialoginterface, int i) /* 刪除數(shù)據(jù) */ myToDoDB.delete(_id); myCursor.requery(); myListView.invalidateViews(); myEditText.setText(""); _id

37、 = 0; ).setNegativeButton(R.string.close_no, new DialogInterface.OnClickListener() /*設(shè)置跳出窗口的返回事件*/ public void onClick(DialogInterface dialoginterface, int i) ).show(); 4.2主程序模塊主程序模塊包括了各個(gè)界面的切換操作,來(lái)電后把來(lái)電號(hào)碼與黑名單中的數(shù)據(jù)進(jìn)行比較、判斷的代碼。攔截后的記錄界面如圖4-6所示圖4-6 攔截后的記錄界面來(lái)電后,手機(jī)自動(dòng)判斷來(lái)電號(hào)碼是否在數(shù)據(jù)庫(kù)中,如果存在則掛斷電話。主要代碼如下:public void

38、 onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /Intent intent=new Intent(this,Firewall1.class); /sendBroadcast(intent); /使用數(shù)據(jù)庫(kù) blackToDoDB resolver = new blackToDoDB(this); Cursor cur=resolver.select(); int ccount=cur.getCount(); pnumber=new S

39、tringccount; for(int i=0;i<ccount;i+) cur.moveToPosition(i); pnumberi=cur.getString(1); if (audioManager != null) /*設(shè)置手機(jī)為待機(jī)時(shí),響鈴為正常*/ audioManager.setRingerMode(AudioManager. RINGER_MODE_NORMAL); audioManager.getStreamVolume( AudioManager.STREAM_RING); catch(Exception e) / mTextView01.setText(e.toString(); e.printStackTrace(); break; /*取得手機(jī)狀態(tài)是通話中*/ case TelephonyManager.CALL_STATE_OFFHOOK: / mTextView01.setText(R.string.str_CALL_STATE_OFF

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論