版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
中英文對照外文翻譯(文檔含英文原文和中文翻譯)1什么是Android1.1主要技巧和思想● 歷史的嵌入式器件編程● 開放手機(jī)聯(lián)盟的解釋● 第一眼看到Android的主屏幕可以這么說,暫時,傳統(tǒng)的桌面應(yīng)用程序開發(fā)者已經(jīng)被慣壞了。這個不是說桌面應(yīng)用程序開發(fā)比其他形式的開發(fā)很簡單??傊鳛閭鹘y(tǒng)桌面的應(yīng)用程序開發(fā)者,凡是我們能想象到的各種應(yīng)用程序,我們就一定有能力創(chuàng)造。包括我自己,因為我也是從做桌面程序開始的。一方面已經(jīng)使得桌面程序更容易理解就是我們已經(jīng)有能力去跟桌面操作系統(tǒng)相互作用,因此,任何底部的硬件很自由的相互作用。這種類型獨(dú)立自主的程序編制,然而,對于很小的開發(fā)者團(tuán)體來說是不敢冒險的去搞手機(jī)發(fā)展這樣渾濁的技術(shù)的。注解:我提到兩種不同的開發(fā)商在此討論:傳統(tǒng)的桌面應(yīng)用程序開發(fā),他們能在任何語言環(huán)境下工作,而且最終的產(chǎn)品和程序是用來運(yùn)行“桌面”操作系統(tǒng)的;還有Android程序開發(fā)者,那些開發(fā)Android平臺開發(fā)工具的JAVA程序開發(fā)人員。這不是說跟其他人比起來誰好誰壞。其實,區(qū)別目的僅僅在于想說明并比較Android桌面操作系統(tǒng)環(huán)境的開發(fā)風(fēng)格,工具。1.2嵌入式器件編程的簡要?dú)v史有很長一段時間,手機(jī)的開發(fā)者由大的著名嵌入式的開發(fā)團(tuán)隊中的少數(shù)人組成,作為嵌入式設(shè)備的開發(fā)者。相對于桌面開發(fā)或者后續(xù)的網(wǎng)絡(luò)開發(fā),被視作更少“魅力”,而且嵌入式設(shè)備的開發(fā)通常因為硬件和操作系統(tǒng)而處于劣勢。因為嵌入式設(shè)備的制造商們太小氣,他們要保護(hù)他們硬件方面的秘密,所以他們給開發(fā)者們非常有限的庫去運(yùn)行當(dāng)他們嘗試去讓一些特定的設(shè)備去相互作用。嵌入設(shè)備與桌面系統(tǒng)顯著不同的一部分是嵌入設(shè)備是個有特色的“芯片上的電腦”。例如:考慮你的標(biāo)準(zhǔn)電話遙控。這個并不是一個非常強(qiáng)大并且復(fù)雜性的技術(shù)。當(dāng)任何的按鈕被按下去,一個芯片解釋一個信號以一種方式已經(jīng)被編程進(jìn)了這個設(shè)備。這個允許設(shè)備知道什么是從輸入設(shè)備(鍵盤)來的需要。并且如何的響應(yīng)這些命令(比如,打開電視機(jī))。這個是一個簡單的嵌入式設(shè)備的編程??傊?,不管你相不相信,像這樣的簡單設(shè)備絕對的和早期的手機(jī)設(shè)備開發(fā)的根源有著緊密的聯(lián)系。大多數(shù)的嵌入式設(shè)備運(yùn)行(有些仍然還在運(yùn)行)在私有的操作系統(tǒng)。原因是選擇創(chuàng)建一個私有的操作系統(tǒng)而不是用任何消費(fèi)系統(tǒng)是產(chǎn)品的需要。簡單的設(shè)備不需要非常健全和優(yōu)化的操作系統(tǒng)。作為一個產(chǎn)品的演化,更多復(fù)雜的嵌入式設(shè)備,如早期的PDA,家庭安全系統(tǒng)和GPS等。5年前某種程度上都轉(zhuǎn)移標(biāo)準(zhǔn)的操作系統(tǒng)平臺上。小的操作系統(tǒng)如Linux,甚至一個微軟版本的嵌入式平臺,已經(jīng)在嵌入設(shè)備上變得普遍了。設(shè)備改革的這段時間里,手機(jī)從其他嵌入式設(shè)備中分支出去。走上了自己的軌道,這個分支是顯而易見的當(dāng)你去調(diào)查他們的體系結(jié)構(gòu)。在他們最初開始的時候,手機(jī)作為一個外圍設(shè)備并且運(yùn)行私有軟件,而這些軟件被制造商們所擁有和控制,而且?guī)缀蹩梢员徽J(rèn)為是一個“關(guān)閉”的系統(tǒng)。習(xí)慣使用私有操作系統(tǒng)主要是制造商自己開發(fā)硬件,或者至少定義了開發(fā)的目的只是用來運(yùn)行手機(jī)。最終的結(jié)果就是使開放成為不可能?,F(xiàn)有的軟件包或者解決方案會可靠的和他們的硬件交互。而且,制造商想要保護(hù)他們硬件的商業(yè)秘密。以防允許進(jìn)入而發(fā)現(xiàn)設(shè)備軟件的水準(zhǔn)。所以風(fēng)尚就是,而且大多數(shù)仍然是使用完全私有并且關(guān)閉的軟件來運(yùn)行他們的設(shè)備。任何人想為手機(jī)開發(fā)程序必須需要詳盡的私有環(huán)境來運(yùn)行軟件的知識。而解決方案就是直接從制造商那里購買昂貴的開發(fā)工具。這就孤立了很多的“自制軟件”的開發(fā)者。注解:一個關(guān)于自制軟件開發(fā)的文化包含了手機(jī)程序的開發(fā)?!白灾栖浖笔侵搁_發(fā)者通常不是工作在手機(jī)開發(fā)公司內(nèi),通常利用自己的時間在他們的設(shè)備上生產(chǎn)小的,一次性的產(chǎn)品。另外,使手機(jī)開發(fā)無法出手的是硬件制造商對于“內(nèi)存和需要”左右為難的解決方案。直到最近,手機(jī)才能執(zhí)行比打出和接聽電話,查找聯(lián)系人,發(fā)送和接收短消息。不是今天“瑞士軍刀”的技術(shù)。及時在2002年,在消費(fèi)者的手上,帶照相機(jī)的手機(jī)還是不多見。在1997年,小的應(yīng)用程序如計算器和游戲爬進(jìn)了手機(jī)內(nèi),但是強(qiáng)大的功能仍然是手機(jī)的撥號盤本身。手機(jī)還不想今天一樣是一個多用途,多功能工具。沒有人預(yù)見互聯(lián)網(wǎng)瀏覽的需求,MP3播放,或者更多的是我們今天定制的功能。在1997年,手機(jī)制造商們沒有預(yù)見消費(fèi)者需要的是一個一體化的設(shè)備。但是,即使這個需求展現(xiàn)出來,設(shè)備內(nèi)存和存儲容量還是一個需要克服的大的障礙。更多的人可能想要他們的設(shè)備是一個多功能一體化的工具,但是制造商們不許跨越他們的障礙。讓問題變得簡單,就要在任何的設(shè)備讓內(nèi)存來存儲并運(yùn)行程序,包括手機(jī)。手機(jī)作為一個設(shè)備,直到最近還沒有足夠多內(nèi)存來執(zhí)行“額外”的程序。在最近的兩年里,內(nèi)存的價格已經(jīng)達(dá)到了非常低的水平。設(shè)備制造商們有足夠的能力壓低價格來包含更多的內(nèi)存。很多的現(xiàn)在的手機(jī)標(biāo)準(zhǔn)內(nèi)存已經(jīng)超過了90年代中期電腦內(nèi)存。于是,現(xiàn)在我們有需求,而且有內(nèi)存。我們可以直接跳到為手機(jī)開發(fā)酷的應(yīng)用程序了,對嗎?不完全是這樣。設(shè)備的制造商們?nèi)匀痪o密的保護(hù)他們的操作系統(tǒng)。有一些在手機(jī)上開放JAVA為基礎(chǔ)的小運(yùn)行環(huán)境。更多的是不允許。即使允許運(yùn)行JAVA應(yīng)用程序但還是不允許進(jìn)入核心的系統(tǒng)。而這些是桌面開發(fā)者習(xí)慣于擁有的。1.3開放手機(jī)聯(lián)盟和Android這個對于應(yīng)用程序開發(fā)的障礙開始在2007年的11月份被打破,當(dāng)Google在開放手機(jī)聯(lián)盟下發(fā)布Android。開放手機(jī)聯(lián)盟是一個硬件和軟件開發(fā)者的集合,包括谷歌,NTTDoCoMo,SprintNextel和HTC。他們的目標(biāo)是創(chuàng)建一個更多的開放手機(jī)環(huán)境。在開放聯(lián)盟第一個被發(fā)布的產(chǎn)品就是移動設(shè)備操作系統(tǒng)Android。對于這個Android的發(fā)布,谷歌使很多開發(fā)工具和向?qū)С蔀榭赡軄韼椭谛孪到y(tǒng)上可能的開發(fā)者。幫助系統(tǒng),平臺軟件開發(fā)包(SDK),甚至一個開發(fā)者的論壇,可以在谷歌的Android的網(wǎng)站上找到,這個網(wǎng)站應(yīng)該是你的起點(diǎn),而且我極度推薦你去訪問。注解:谷歌為了推動這個新的Android操作系統(tǒng),甚至為尋找新的Android程序而設(shè)立了1000萬美元的獎金。當(dāng)手機(jī)運(yùn)行Linux,Windows或者即使PalmOS的手機(jī)是很容易找到,如本文所述,沒有硬件平臺已經(jīng)宣告可以來運(yùn)行Android.HTC,LG電子,摩托羅拉和三星都是開發(fā)手機(jī)成員,在Android的發(fā)布下,我們希望在不久的將來有一些Android為基的設(shè)備。在2007年11月發(fā)布時,系統(tǒng)自身還仍舊是一個測試版的程序。這是個對開發(fā)者的好新聞因為它給了我們一個罕見的提前看到將來的設(shè)備和有機(jī)會來開始開發(fā)應(yīng)用程序,而當(dāng)硬件發(fā)布時就可以運(yùn)行。注解:這個策略明確的給了開放手機(jī)聯(lián)盟一個大的優(yōu)勢,超越其它手機(jī)操作系統(tǒng)開發(fā)者。因為當(dāng)?shù)谝淮O(shè)備發(fā)布時會有數(shù)不盡的可用開發(fā)程序可以運(yùn)行。1.4介紹AndroidAndroid,作為一個系統(tǒng),是一個運(yùn)行在Linux2.6核心上的JAVA基礎(chǔ)的操作系統(tǒng)。系統(tǒng)是非常輕量型的而且全特性。Android應(yīng)用程序用JAVA開發(fā)而且很容易被放置到新的平臺上。如果你沒有下載JAVA或者不確定那一個版本你需要,我在第二章詳細(xì)列出了開發(fā)環(huán)境的安裝。其他Android的特點(diǎn)包括一個加速3-D圖形引擎(基于硬件支持),被SQLite推動的數(shù)據(jù)庫支持,和一個完整的網(wǎng)頁瀏覽器。如果你熟悉JAVA編程或者是任何種類的OOP開發(fā)者,你可能使用程序用戶接口(UI)開發(fā)-那就是,UI安置是直接在程序代碼中有句柄的。Android,識別并許可UI開發(fā),而且支持新生,XML為基礎(chǔ)的UI布局。XMLUI布局對普通桌面開發(fā)者是一個非常新的概念。我會在本書的相關(guān)章節(jié)里描述XMLUI布局和程序化UI開發(fā)。Android另一個更令人激動和關(guān)注的特點(diǎn)是因為它的樣式,第三方應(yīng)用程序包括“自制的”會和系統(tǒng)捆綁的有著同樣的優(yōu)先權(quán)。這是和大多數(shù)系統(tǒng)不同之處,但是給了嵌入式系統(tǒng)程序一個比由第三方開發(fā)者創(chuàng)建的線性優(yōu)先權(quán)大的優(yōu)先執(zhí)行權(quán)。而且,每一個應(yīng)用程序在虛擬計算機(jī)上以一個非常輕量的方式按照自己的線路執(zhí)行。除了大量的SDK和成型的類庫可以用之外,對激動人心的特性對于Android的開發(fā)者來說是我們現(xiàn)在可以進(jìn)入到操作系統(tǒng)可以進(jìn)入的地方。也就是說,如果你要創(chuàng)建一個應(yīng)用程序打一個電話,你已經(jīng)進(jìn)入到電話的撥號盤。加入你要創(chuàng)建一個應(yīng)用程序來使用電話內(nèi)部的GPS(如果安裝了),你已經(jīng)進(jìn)入了。對于開發(fā)者創(chuàng)建動態(tài)和令人好奇的程序已經(jīng)敞開大門。Android的一些特征和上面這些可用的特點(diǎn)相同,谷歌已經(jīng)非常迫切的奉送一些特性。Android的開發(fā)者可以將自己的應(yīng)用程序和谷歌提供的如谷歌地圖和無所不在的谷歌搜索綁在一起。假設(shè)你要寫程序在谷歌地圖上顯示一個來電話者的的位置,或者你要儲存一般的搜索結(jié)果到你的聯(lián)系人中。在Android中,這個門已經(jīng)完全打開。2應(yīng)用程序:HelloWorld2.1主要技巧和思想● 創(chuàng)建新的Android項目● 用View工作● 用一個TextView● 修改main.xml文件● 在Android虛擬機(jī)上運(yùn)行一個應(yīng)用程序在這一章中,你將創(chuàng)建你的第一個Android活動,這一章從頭到尾的檢查應(yīng)用程序的創(chuàng)建過程,我將給你們演示怎么去創(chuàng)建一個Android項目在Eclipese,在最初的文件里添加代碼,并且在Android虛擬機(jī)上運(yùn)行最終的應(yīng)用程序,在Android環(huán)境下運(yùn)行的最終結(jié)果的應(yīng)用將是一個完全的功能項目實際上,當(dāng)你看到這一章,你將不止創(chuàng)建一個Android的活動,在計算機(jī)編程的傳統(tǒng)規(guī)定中,你的第一個應(yīng)用將是典型的HelloWorld!應(yīng)用程序,所以在第一節(jié)的內(nèi)容中你將創(chuàng)建一個標(biāo)準(zhǔn)的HelloWorld!應(yīng)用程序,僅僅使用一個空白的背景和一個“HelloWorld!”文本。然后,為了讓您更好的了解該語言,下一節(jié)詳細(xì)的解釋Android為了你的HelloWorld!應(yīng)用程序自動的產(chǎn)生文件。在這個活動中你將創(chuàng)建兩個重復(fù)的過程,每一個都是使用不同技術(shù)信息顯示在屏幕上,而且你建創(chuàng)建兩個不同版本的HelloWorld!應(yīng)用程序?qū)⒄故尽癏elloWorld!”信息的畫面,這將給你一個很好的介紹關(guān)于Android的控制和內(nèi)部的工作。注解:你將經(jīng)常看到“application”和“Activity”相互交換著應(yīng)用,他們兩個之間的不同就是應(yīng)用程序可以有多個活動,但是一個應(yīng)用程序必須至少有一個活動。你的應(yīng)用程序的每一個窗口或者是屏幕就是一個分開的活動。因此,如果你創(chuàng)建了一個相當(dāng)簡單的應(yīng)用程序僅僅使用了一個屏幕的數(shù)據(jù)(就像在這一章中的HelloWorld!應(yīng)用程序),那就只有一個活動,在后來的章節(jié)里面你將創(chuàng)建許許多多的活動。為了確保你可以完全很好的看到Android程序的整體,在第六章你將在Android軟件開發(fā)包命令行編譯在微軟windows和Linux環(huán)境下同時創(chuàng)建這些應(yīng)用程序。換句話說在這一章中包含了在Eclipse環(huán)境下創(chuàng)建項目的全過程。第六章也包含了利用命令行編譯工具創(chuàng)建項目的過程。因此,在繼續(xù)學(xué)習(xí)之前,你應(yīng)當(dāng)檢查你的Eclipse環(huán)境是否配置的正確。復(fù)習(xí)第三章中為Android開發(fā)包配置PATH變量的步驟,你也應(yīng)當(dāng)確保你的JRE中的PATH變量是否正確。忠告:如果你還有任何配置相關(guān)的問題的話,你可以去看第二章和第三章的內(nèi)容,或者是看看Android開發(fā)包的文檔。2.2在Eclipse上創(chuàng)建你的第一個Android項目為了開始你的第一個Android項目,打開Eclipse。當(dāng)你第一次打開Eclipse的時候,它會打開一個空的開發(fā)環(huán)境,那就是你開始的地方。你的第一個任務(wù)就是為你的應(yīng)用程序建立和命名你的工作區(qū),選擇→文件→新建→Android項目,這就是你運(yùn)行新的Android項目的向?qū)?。警告:在新建項目菜單中不能選擇java項目。但是Android應(yīng)用程序就是用java語言寫的,跟你所做的所有的java工程,這個建議將創(chuàng)建一個標(biāo)準(zhǔn)的Java應(yīng)用程序,選擇Android項目就是讓你創(chuàng)建一個Android特有的應(yīng)用程序。2.3新的Android項目向?qū)槟銣?zhǔn)備了兩件事情一個綁住Android開發(fā)包的殼程序。這個將允許你使用所有Android庫和包來進(jìn)行編碼工作,并且允許你在合適的環(huán)境中調(diào)試程序。新程序的第一個殼文件。這些殼文件包含一些必要的支撐你將要編寫程序的文件。就如同一個在VisualStudio中,它會在你的文件中產(chǎn)生的一些代碼。使用Eclipse中的Android項目向?qū)Мa(chǎn)生一些初始的程序文件和一些Android創(chuàng)建的代碼。另外,新的Android項目向?qū)н€包含一些選項,顯示你必須為你的Android項目啟動設(shè)置的東西。在項目的名稱那個字段,只是為了舉例,使用HelloWorld!Text這個名字,這個名字非常的容易把這個HelloWorld!項目從其它你將要在本章中創(chuàng)建的項目分別開。在內(nèi)容那個區(qū)域,保持系統(tǒng)默認(rèn)的選擇:在工作區(qū)中創(chuàng)建一個新的項目這個選項按鈕必須被選中。并且使用系統(tǒng)默認(rèn)的位置這個選擇框也應(yīng)當(dāng)被選中。這個將允許Eclipse在你系統(tǒng)默認(rèn)的工作區(qū)路徑中創(chuàng)建你的項目。這樣做的好處是十分容易對你的項目進(jìn)行排序,管理和查找。例如,如果你在工作在一個Unix基礎(chǔ)的開發(fā)環(huán)境中,這個路徑指向Home路徑。如果你工作在一個Windows的環(huán)境中,工作路徑將會是C:/Users/<username>/workspace。然而,不管任何一些原因,你可能需要選中系統(tǒng)默認(rèn)位置的選擇框并且選擇一個其它的路徑。如果是這樣的話,不管那個位置的選項,自己選一個好了。例如,你可能希望將你在這本書中的項目保存在一個不同的位置跟其他你自己創(chuàng)建的項目分開。如果如此,簡單的覆蓋位置,你自己可以自訂一個位置目錄給這個項目。3應(yīng)用程序基礎(chǔ)Android應(yīng)用程序是用Java程序語言寫的。AndroidSDK工具編譯代碼后,把它和其他數(shù)據(jù)和資源文件一起打包到一個Android包中,這個存檔文件使用.apk作為后綴。很多時候,每一個android應(yīng)用程序都只存在于自己的世界:●默認(rèn)情況下,每一個的應(yīng)用程序都運(yùn)行在自己的Linux進(jìn)程中。當(dāng)android啟動進(jìn)程時,應(yīng)用程序的組件就需要被執(zhí)行。然后當(dāng)不需要或系統(tǒng)必須為其他應(yīng)用程序恢復(fù)記憶時再關(guān)閉進(jìn)程。●每一個進(jìn)程都有自己的虛擬機(jī),因此應(yīng)用程序的代碼可以獨(dú)立于其他應(yīng)用程序的代碼而運(yùn)行?!裣到y(tǒng)默認(rèn)地分配給每個應(yīng)用程序一個唯一的Linux用戶ID,權(quán)限被設(shè)置以致于應(yīng)用程序的文件僅僅被用戶和應(yīng)用程序自己可以看到雖然有方法導(dǎo)出到其他應(yīng)用程序。它可以讓兩個應(yīng)用程序共享相同的Linux用戶ID;在這種情況下,它們可以互相訪問對方的文件。為了節(jié)省系統(tǒng)資源,具有相同用戶ID的應(yīng)用程序也能夠運(yùn)行在同樣的Linux進(jìn)程中,同時也能夠分享共同的VM中。3.1應(yīng)用程序組件Android的一個核心特性就是一個應(yīng)用程序可以使用其它應(yīng)用程序的元素(前提是那些應(yīng)用程序允許提供)。例如,如果你的應(yīng)用程序需要展示一個圖片卷動列表,而另一個應(yīng)用程序已經(jīng)開發(fā)了一個合用的照片卷軸而別的應(yīng)用程序也可以使用的話,你可以直接調(diào)用那個卷軸來完成工作,而不用你自己再開發(fā)。你的應(yīng)用程序并沒有吸納其它應(yīng)(1)Activityactivity是為用戶操作而提供的可視化用戶界面。例如,一個activity可以提供一個菜單項列表供用戶選擇,或者可以把一些圖片連同它們的標(biāo)題一起顯示。一個文本消息傳遞應(yīng)用程序可能會有一個用于顯示要發(fā)送消息到的聯(lián)系人列表的activity第二個activity用來寫消息來選擇聯(lián)系人。另一個activity用來查閱以前的短信或改變設(shè)置。盡管它們一起組成一個內(nèi)聚的用戶界面,但每個activity都保持相互獨(dú)立。每一個都實現(xiàn)以Activity類為基類的子類。一個應(yīng)用程序可能只有一個activity,或者,如剛才提到的文本消息應(yīng)用程序那樣,包含很多個。每個activity的作用是什么,以及多少個activity,當(dāng)然是取決于應(yīng)用程序的設(shè)計。一般情況下,第一個被標(biāo)記的activity在應(yīng)用程序啟動的時呈現(xiàn)給用戶。從一個activity轉(zhuǎn)向另一個靠的是用當(dāng)前的activity啟動下一個來完成的。每個activity都被給予一個默認(rèn)的窗口來進(jìn)行繪制。通常情況下,這個窗口是滿屏的,但它也可以是一個比屏幕小的位于其它窗口之上的浮動的窗口。一個activity也可以使用附加的窗口——例如,一個在activity運(yùn)行過程中彈出的要求用戶響應(yīng)的對話框,或者屏幕上有特殊選項供用戶選擇的顯示必要信息的一個窗口。窗口的可視內(nèi)容是由一系列層次化view構(gòu)成的,基本視圖類派生的對象。每個view控制著窗口中一塊特定的矩形區(qū)域。父級views包含并組織其子類view的布局。葉節(jié)點(diǎn)view(位于層次結(jié)構(gòu)最底端)在它們控制的矩形區(qū)域進(jìn)行繪制,并對用戶直達(dá)其區(qū)域的操作作出響應(yīng)。因此,view是activity與用戶進(jìn)行交互的界面。例如,view可以顯示一個小圖片,并在用戶點(diǎn)擊它的時候產(chǎn)生動作。Android有很多現(xiàn)成的視圖供開發(fā)者使用——包括按鈕、文本域、滾動條、菜單、復(fù)選框等等。視圖的層次結(jié)構(gòu)是由Activity.setContentView()方法放入activity的窗口之中的。contentview是位于層次結(jié)構(gòu)根位置的View對象。(更多信息,請參考單獨(dú)的用戶界面文檔視圖和層次結(jié)構(gòu)。)(2)Serviceservice沒有可視化的用戶界面,而是無限期在后臺運(yùn)行。例如,一個service可以在用戶做其它事情的時候播放背景音樂、從網(wǎng)絡(luò)上獲取數(shù)據(jù)或者計算一些東西并提供運(yùn)算結(jié)果給activity使用。每個service都繼承Service基類。一個典型例子是媒體播放器播放來自播放列表中的歌曲。播放器應(yīng)用程序可能有一個或多個activity來給用戶去選擇歌曲并進(jìn)行播放。然而,音樂播放這個任務(wù)本身不應(yīng)該由任何activity來處理,因為用戶希望即使在他們離開播放器開始做別的事情時,音樂仍然在繼續(xù)播放。為達(dá)到這個目的,媒體播放器activity可以啟動一個運(yùn)行在后臺的service服務(wù)。系統(tǒng)仍維持音樂播放的service的運(yùn)行,即使這個activity已經(jīng)離開屏幕。連接至(綁定)一個正在運(yùn)行的service(如果service沒有運(yùn)行,則啟動)是可能的。連接后,你可以通過一個接口與service進(jìn)行通訊。對于音樂service來說,這個接口可以允許用戶暫停、回退、停止以及恢復(fù)播放。如同activity和其它的組件一樣,service服務(wù)運(yùn)行在應(yīng)用程序進(jìn)程的主線程內(nèi)。所以它不會對其它組件或者用戶界面有任何的阻礙作用,它們一般會派生一個新線程來執(zhí)行一些時間消耗型任務(wù)(比如音樂回放和網(wǎng)絡(luò)下載)。參見稍后的進(jìn)程和線程介紹。(3)BroadcastReceiverbroadcastreceiver是一個與注于接收廣播通知信息并做出處理的組件。很多廣播是由系統(tǒng)代碼產(chǎn)生——例如,通知時區(qū)改變、電池電量低、拍攝了一張照片或用戶改變了語言選項。應(yīng)用程序也可發(fā)起廣播——例如,通知其它應(yīng)用程序一些數(shù)據(jù)已經(jīng)下載到設(shè)備并處于可用狀態(tài)。一個應(yīng)用程序可以擁有任意數(shù)量的broadcastreceiver,以對任何它認(rèn)為重要的通知信息作出各種響應(yīng)。所有的receiver都繼承自BroadcastReceiver基類。broadcastreceiver沒有顯示用戶界面。然而,它們可以啟動一個activity或者service來對它們收到的信息做出響應(yīng),或者也可以使用NotificationManager來通知用戶。通知可以用多種方式來獲取用戶的注意力──閃動背光燈、震動設(shè)備、播放聲音等等。通知一般是在狀態(tài)欄上放一個持續(xù)的圖標(biāo),用戶可以點(diǎn)擊打開它并獲取消息。(4)Contentprovidercontentprovider將一些特定應(yīng)用程序數(shù)據(jù)提供給其它應(yīng)用程序使用處理。數(shù)據(jù)可以存儲在文件系統(tǒng)、SQLite數(shù)據(jù)庫或其它任何有意義的方式。contentprovider繼承于ContentProvider基類,實現(xiàn)了使得其他應(yīng)用程序能夠檢索和存儲它所管理的類型數(shù)據(jù)的標(biāo)準(zhǔn)方法。然而,應(yīng)用程序并不能直接調(diào)用方法,而是使用一個ContentResolver對象,來代替調(diào)用它的方法。ContentResolver可以與任何的contentprovider進(jìn)行交互;與其合作對任何相關(guān)的進(jìn)程間通訊進(jìn)行管理。參閱獨(dú)立的ContentProviders文檔,以獲得更多的關(guān)于使用contentprovider的信息。每當(dāng)出現(xiàn)一個需要被特定組件處理的請求時,Android會確保該組件的應(yīng)用程序進(jìn)程處于運(yùn)行狀態(tài),必要時啟動它,并確保那個組件的一個合適的實例可用,必要時創(chuàng)建那個實例。3.2激活組件:intent當(dāng)接收到ContentResolver發(fā)出的請求后,contentprovider就會被激活。而其它三種組件——activity、service和broadcastreceiver,被一種叫做intent的異步消息所激活。intent是一個保存消息內(nèi)容的Intent對象。對于activity和service來說,它指明了被請求的操作名稱,并指定了用來操作的數(shù)據(jù)的URI和其它一些事情。例如,它可以傳達(dá)一個請求讓它為用戶顯示一張圖片,或者讓用戶編輯一些文本的activity。對于broadcastreceiver來說,Intent對象指明了被通報的操作。例如,它可以對所有感興趣的對象通報照相按鈕被按下。對于每種組件來說,激活的方法也不同:(1)一activity通過IntentContext.startActivity()或者Activity.startActivityForResult來啟動(或指定新的東西)另外一個activity。響應(yīng)的activity可以通過調(diào)用自身的getIntent()方法來查看并且激活它的intent。Android通過調(diào)用activity的onNewIntent()方法來傳遞給它隨后的任何intent。一個activity經(jīng)常啟動另一個activity。如果它期望所啟動的那個activity返回一個結(jié)果,它會調(diào)用startActivityForResult()而不是startActivity()。例如,如果它啟動一個activity以使用戶挑選一張照片,它可能會返回被選中的照片。其結(jié)果將會被封裝在一個Intent對象中,并傳遞給發(fā)出調(diào)用的activity的onActivityResult()方法。(2)通過一個意圖對象Context.startService()以啟動一個service(或給出新的指令進(jìn)行服務(wù))。Android調(diào)用此service的onStart()方法并將Intent對象傳遞給它。與此類似,一個intent可以被傳遞給Context.bindService()建立一個處于調(diào)用組件和目標(biāo)service中間的活動連接。service通過onBind()方法的調(diào)用來獲取此Intent對象(如果此service未運(yùn)行,bindService()會先啟動它)。例如,一個activity可以建立一個不前述的音樂回放service的聯(lián)系,這樣它就可以提供給用戶一些途徑(用戶界面)來控制回放。這個activity可以調(diào)用bindService()來建立此連接,然后調(diào)用service中定之的方法來控制回放。稍后,遠(yuǎn)程方法調(diào)用一節(jié)有關(guān)于如何綁定至一個service的細(xì)節(jié)內(nèi)容。(3)應(yīng)用程序能夠通過傳遞一個Intent對象至Context.sendBroadcast(),Context.sendOrderedBroadcast(),以及Context.sendStickyBroadcast()和其它相似方法來發(fā)起一個廣播。Android通過調(diào)用它們的onReceive()方法來提供intent給所有它們所感興趣的廣播接收器。更多的intent信息,和看獨(dú)立的文章,intent和intent過濾器.3.3關(guān)閉組件一個內(nèi)容提供者僅在響應(yīng)來自ContentResolver的請求時處于活躍狀態(tài)。而廣播接收器僅在響應(yīng)一條廣播信息的時候處于各種活動狀態(tài)。所以沒必要去顯式地關(guān)閉這組件。而activity則不同,它提供用戶界面。只要會話依然持續(xù),無論會話過程有無空閑,activity同用戶進(jìn)行長時間會話且可能一直處于活動狀態(tài)。與此相似,service也會在很長一段時間內(nèi)在后臺運(yùn)行。所以Android為關(guān)閉activity和service提供了一個有序的方法。activity可以通過調(diào)用自身finish()方法來關(guān)閉。一個activity可以通過調(diào)用finishActivity()方法來關(guān)閉另一個activity(通過調(diào)用finishActivity()來啟動startActivityForResult()的那個)。service可以通過調(diào)用自身的stopSelf()方法,或調(diào)用Context.stopService()方法來停止。在組件長時間不被使用時或者當(dāng)Android必須為更多的活動組件回收內(nèi)存時系統(tǒng)會關(guān)閉它。稍后,組件的生命的周期一節(jié),將對這種可能性及結(jié)果進(jìn)行更詳細(xì)的討論。3.4manifest文件在Android啟動一個應(yīng)用程序組件之前,它必須知道哪個組件是存在的。因此,應(yīng)用程序會在manifest文件中聲明一個被打包到android包中的組件,.apk文件還將涵蓋應(yīng)用程序的代碼、文件以及資源。manifest文件是一個結(jié)構(gòu)化的XML文件,通常會被所有應(yīng)用程序命名為AndroidManifest.xml。除了聲明此應(yīng)用程序各個組件,它還會做很多其他事情,比如指明應(yīng)用程序所需鏈接到的庫名(除了默認(rèn)的Android庫)以及標(biāo)出應(yīng)用程序期望獲得的其他權(quán)限。但manifest文件最重要的任務(wù)是向Android報告這個應(yīng)用程序的各個組件。例如,一個activity可能聲明如下:<activity>元素的name屬性指定了實現(xiàn)這個activity的Activity子類。icon和label屬性指向包含展示給用戶去描繪此activity的icon和label的資源文件。其它組件也以類似的方式去聲明——用<service>元素聲明service,<receiver>元素聲明broadcastreceiver,而<provider>元素聲明contentprovider。在manifest文件中,activity、service以及contentprovider將不被聲明,因為它們不為系統(tǒng)所見,從而也就永不會被運(yùn)行。然而,廣播接收器既可以在manifest文件中聲明,也能夠在代碼中動態(tài)創(chuàng)建(為BroadcastReceiver的對象),并以調(diào)用Context.registerReceiver()的方式被系統(tǒng)注冊。3.5Intent過濾器一個Intent對象可以顯式地指定一個目標(biāo)組件。如果進(jìn)行了返種指定,Android就會找到這個組件(基于manifest文件的聲明)并激活它。但如果沒有顯式地指定一個目標(biāo),Android就必須找到最合適的組件來響應(yīng)這個intent。它是通過比較Intent對象和潛在目標(biāo)的intent過濾器來完成的。一個組件的intent過濾器會通知Android它所能處理的intent類型。如組件的其它必要信息一樣,它們是在manifest文件中聲明的。這里有一個對先前例子的擴(kuò)展,其中加入了兩個針對activity的intent過濾器:示例中的第一個過濾器——action“ent.action.MAIN”和category“ent.category.LAUNCHER”的組合——是常見的一個。它標(biāo)明了此activity應(yīng)該在應(yīng)用程序啟動器中顯示,就是用戶在屏幕上看到的此設(shè)備上可供啟動的應(yīng)用程序的列表。換句話說,這個activity是應(yīng)用程序的入口點(diǎn),是用戶在啟動器中選擇運(yùn)行這個應(yīng)用程序后所見到的第一個activity。第二個過濾器聲明了這個activity能夠在一種特定類型的數(shù)據(jù)上可以執(zhí)行的操作。一個組件可以擁有任意數(shù)量的intent過濾器,每個都聲明了一個不同的功能設(shè)置。如果組件沒有包含任何過濾器,它只能被顯式地指明作為目標(biāo)組件的intent激活。對于在代碼中創(chuàng)建并注冊的廣播接收器來說,intent過濾器將被直接實例化為IntentFilter對象。其它所有的過濾器都被設(shè)置在manifest文件中。3.6基于XML的布局雖然純粹地在技術(shù)上通過Java代碼在activity上創(chuàng)建和添加部件是可行的,我們在第4章中做的方式一樣,更常見的方法是用一種基于XML的布局文件。部件的實例保留更多,情況復(fù)雜,小工具在編譯時不為人所知(例如,在數(shù)據(jù)檢索了互聯(lián)網(wǎng)基礎(chǔ)上將單選按鈕填充柱??紤]到這一點(diǎn),現(xiàn)在是時候打破XML和學(xué)習(xí)如何用此種方式來布置Androidactivities。正如其名稱所示,一個基于XML的布局是一個關(guān)系到每個規(guī)格的小部件,和他們的容器(更多關(guān)于這些內(nèi)容的在第7章)編碼的XML格式。具體來說,Android認(rèn)為基于XML的布局是資源,因此布局的文件在你的android項目中存儲在res/layout目錄。每個XML文件包含一個指定的部件和容器布局元素樹,一種意見認(rèn)為構(gòu)成層次。對XML元素的屬性,描述一個部件應(yīng)如何看或一個容器如何運(yùn)轉(zhuǎn)。例如,如果一個按鈕元素有一個android的屬性值:文字樣式=“bold”,這意味著該文本出現(xiàn)在按鈕的表面應(yīng)該是呈現(xiàn)一個粗體字體樣式.Android的SDK附帶有一個使用的布局的工具(aapt)。這個工具應(yīng)自動調(diào)用你的Android工具鏈(例如,Eclipse中,Ant’sbuild.xml)。作為一個開發(fā)人員,特別重要的是在您的項目中aapt生成R.java源文件,讓你能在那些布局中直接從Java代碼中獲取布局和部件。XML作為一個GUI定義格式變得越來越流行普遍。微軟的XAML2,Adobe的Flex3,和Mozilla的XUL4都采用了和Android類似的方法:把布局細(xì)節(jié)放在一個XML文件和把程序指揮資料放在源文件(如XUL中的JavaScript)。許多不太知名的圖形用戶界面框架,如ZK5,還使用用視圖定義的XML。雖然“隨大流”未必是最好的政策,但他們有優(yōu)勢幫助從任何其他XML為中心的觀點(diǎn)描述語言輕松進(jìn)入Android。原文:Android:AProgrammer’sGuide1WhatIsAndroid1.1KeySkills&Concepts●Historyofembeddeddeviceprogramming●ExplanationofOpenHandsetAlliance●FirstlookattheAndroidhomescreenItcanbesaidthat,forawhile,traditionaldesktopapplicationdevelopershavebeenspoiled.Thisisnottosaythattraditionaldesktopapplicationdevelopmentiseasierthanotherformsofdevelopment.However,astraditionaldesktopapplicationdevelopers,wehavehadtheabilitytocreatealmostanykindofapplicationwecanimagine.IamincludingmyselfinthisgroupingbecauseIgotmystartindesktopprogramming.Oneaspectthathasmadedesktopprogrammingmoreaccessibleisthatwehavehadtheabilitytointeractwiththedesktopoperatingsystem,andthusinteractwithanyunderlyinghardware,prettyfreely(oratleastwithminimalexceptions).Thiskindoffreedomtoprogramindependently,however,hasneverreallybeenavailabletothesmallgroupofprogrammerswhodaredtoventureintothemurkywatersofcellphonedevelopment.NOTE:Irefertotwodifferentkindsofdevelopersinthisdiscussion:traditionaldesktopapplicationdevelopers,whoworkinalmostanylanguageandwhoseendproduct,applications,arebuilttorunonany“desktop”operatingsystem;andAndroiddevelopers,JavadeveloperswhodevelopfortheAndroidplatform.Thisisnotforthepurposesofsayingoneisbyanymeansbetterorworsethantheother.Rather,thedistinctionismadeforpurposesofcomparingthedevelopmentstylesandtoolsofdesktop
operating
system
environments
to
the
mobile
operating
system
environment1.2BriefHistoryofEmbeddedDeviceProgrammingForalongtime,cellphonedeveloperscomprisedasmallsectofaslightlylargergroupofdevelopersknownasembeddeddevicedevelopers.Seenasaless“glamorous”siblingtodesktop—andlaterweb—development,embeddeddevicedevelopmenttypicallygottheproverbialshortendofthestickasfarashardwareandoperatingsystemfeatures,becauseembeddeddevicemanufacturerswerenotoriouslystingyonfeaturesupport.Embeddeddevicemanufacturerstypicallyneededtoguardtheirhardwaresecretsclosely,sotheygaveembeddeddevicedevelopersfewlibrariestocallwhentryingtointeractwithaspecificdevice.Embeddeddevicesdifferfromdesktopsinthatanembeddeddeviceistypicallya“computeronachip.”Forexample,consideryourstandardtelevisionremotecontrol;itisnotreallyseenasanoverwhelmingachievementoftechnologicalcomplexity.Whenanybuttonispressed,achipinterpretsthesignalinawaythathasbeenprogrammedintothedevice.Thisallowsthedevicetoknowwhattoexpectfromtheinputdevice(keypad),andhowtorespondtothosecommands(forexample,turnonthetelevision).Thisisasimpleformofembeddeddeviceprogramming.However,believeitornot,simpledevicessuchasthesearedefinitelyrelatedtotherootsofearlycellphonedevicesanddevelopment.Mostembeddeddevicesran(andinsomecasesstillrun)proprietaryoperatingsystems.Thereasonforchoosingtocreateaproprietaryoperatingsystemratherthanuseanyconsumersystemwasreallyaproductofnecessity.Simpledevicesdidnotneedveryrobustandoptimizedoperatingsystems.Asaproductofdeviceevolution,manyofthemorecomplexembeddeddevices,suchasearlyPDAs,householdsecuritysystems,andGPSs,movedtosomewhatstandardizedoperatingsystemplatformsaboutfiveyearsago.Small-footprintoperatingsystemssuchasLinux,orevenanembeddedversionofMicrosoftWindows,havebecomemoreprevalentonmanyembeddeddevices.Aroundthistimeindeviceevolution,cellphonesbranchedfromotherembeddeddevicesontotheirownpath.Thisbranchingisevidentwhenyouexaminetheirarchitecture.Nearlysincetheirinception,cellphoneshavebeenfringedevicesinsofarastheyrunonproprietarysoftware—softwarethatisownedandcontrolledbythemanufacturer,andisalmostalwaysconsideredtobea“closed”system.Thepracticeofmanufacturersusingproprietaryoperatingsystemsbeganmoreoutofnecessitythananyotherreason.Thatis,cellphonemanufacturerstypicallyusedhardwarethatwascompletelydevelopedin-house,oratleasthardwarethatwasspecificallydevelopedforthepurposesofrunningcellphoneequipment.Asaresult,therewerenoopenlyavailable,off-the-shelfsoftwarepackagesorsolutionsthatwouldreliablyinteractwiththeirhardware.Sincethemanufacturersalsowantedtoguardverycloselytheirhardwaretradesecrets,someofwhichcouldberevealedbyallowingaccesstothesoftwarelevelofthedevice,thecommonpracticewas,andinmostcasesstillis,tousecompletelyproprietaryandclosedsoftwaretoruntheirdevices.Thedownsidetothisisthatanyonewhowantedtodevelopapplicationsforcellphonesneededtohaveintimateknowledgeoftheproprietaryenvironmentwithinwhichitwastorun.Thesolutionwastopurchaseexpensivedevelopmenttoolsdirectlyfromthemanufacturer.Thisisolatedmanyofthe“homebrew”developers.NOTE:Agrowingcultureofhomebrewdevelopershasembracedcellphoneapplicationdevelopment.Theterm“homebrew”referstothefactthatthesedeveloperstypicallydonotworkforacellphonedevelopmentcompanyandgenerallyproducesmall,one-offproductsontheirowntime.Another,morecompelling“necessity”thatkeptcellphonedevelopmentoutofthehandsoftheeverydaydeveloperwasthehardwaremanufacturers’solutiontothe“memoryversusneed”dilemma.Untilrecently,cellphonesdidlittlemorethanexecuteandreceivephonecalls,trackyourcontacts,andpossiblysendandreceiveshorttextmessages;notreallythe“Swissarmyknives”oftechnologytheyaretoday.Evenaslateas2002,cellphoneswithcameraswerenotcommonlyfoundinthehandsofconsumers.By1997,smallapplicationssuchascalculatorsandgames(Tetris,forexample)crepttheirwayontocellphones,buttheoverwhelmingfunctionwasstillthatofaphonedialeritself.Cellphoneshadnotyetbecomethemultiuse,multifunctionpersonaltoolstheyaretoday.NooneyetsawtheneedforInternetbrowsing,MP3playing,oranyofthemultitudesoffunctionsweareaccustomedtousingtoday.Itispossiblethatthecellphonemanufacturersof1997didnotfullyperceivetheneedconsumerswouldhaveforanall-in-onedevice.However,eveniftheneedwaspresent,alackofdevicememoryandstoragecapacitywasanevenbiggerobstacletoovercome.Morepeoplemayhavewantedtheirdevicestobeall-in-onetools,butmanufacturersstillhadtoclimbthememoryhurdle.Toputtheproblemsimply,ittakesmemorytostoreandrunapplicationsonanydevice,cellphonesincluded.Cellphones,asadevice,untilrecentlydidnothavetheamountofmemoryavailabletothemthatwouldfacilitatetheinclusionof“extra”programs.Withinthelasttwoyears,thepriceofmemoryhasreachedverylowlevels.Devicemanufacturersnowhavetheabilitytoincludemorememoryatlowerprices.ManycellphonesnowhavemorestandardmemorythantheaveragePChadinthemid-1990s.So,nowthatwehavetheneed,andthememory,wecanalljumpinanddevelopcoolapplicationsforcellphonesaroundtheworld,right?Notexactly.Devicemanufacturersstillcloselyguardtheoperatingsystemsthatrunontheirdevices.WhileafewhaveopeneduptothepointwheretheywillallowsomeJava-basedapplicationstorunwithinasmallenvironmentonthephone,manydonotallowthis.EventhesystemsthatdoallowsomeJavaappstorundonotallowthekindofaccesstothe“core”systemthatstandarddesktopdevelopersareaccustomedtohaving.1.3OpenHandsetAllianceandAndroidThisbarriertoapplicationdevelopmentbegantocrumbleinNovemberof2007whenGoogle,undertheOpenHandsetAlliance,releasedAndroid.TheOpenHandsetAllianceisagroupofhardwareandsoftwaredevelopers,includingGoogle,NTTDoCoMo,SprintNextel,andHTC,whosegoalistocreateamoreopencellphoneenvironment.Thefirstproducttobereleasedundertheallianceisthemobiledeviceoperatingsystem,Android.WiththereleaseofAndroid,Googlemadeavailableahostofdevelopmenttoolsandtutorialstoaidwould-bedevelopersontothenewsystem.Helpfiles,theplatformsoftwaredevelopmentkit(SDK),andevenadevelopers’communitycanbefoundatGoogle’sAndroidwebsite,Thissiteshouldbeyourstartingpoint,andIhighlyencourageyoutovisitthesite.NOTE:Google,inpromotingthenewAndroidoperatingsystem,evenwentasfarastocreatea$10millioncontestlookingfornewandexcitingAndroidapplications.WhilecellphonesrunningLinux,Windows,andevenPalmOSareeasytofind,asofthiswriting,nohardwareplatformshavebeenannouncedforAndroidtorunon.HTC,LGElectronics,Motorola,andSamsungaremembersoftheOpenHandsetAlliance,underwhichAndroidhasbeenreleased,sowecanonlyhopethattheyhaveplansforafewAndroid-baseddevicesinthenearfuture.WithitsreleaseinNovember2007,thesystemitselfisstillinasoftware-onlybeta.Thisisgoodnewsfordevelopersbecauseitgivesusarareadvancelookatafuturesystemandachancetobegindevelopingapplicationsthatwillrunassoonasthehardwareisreleased.NOTE:ThisstrategyclearlygivestheOpenHandsetAllianceabigadvantageoverothercellphoneoperatingsystemdevelopers,becausetherecouldbeanuncountablenumberofapplicationsavailableimmediatelyforthefirstdevicesreleasedtorunAndroid.IntroductiontoAndroidAndroid,asasystem,isaJava-basedoperatingsystemthatrunsontheLinux2.6kernel.Thesystemisverylightweightandfullfeatured.AndroidapplicationsaredevelopedusingJavaandcanbeportedrathereasilytothenewplatform.IfyouhavenotyetdownloadedJavaorareunsureaboutwhichversionyouneed,IdetailtheinstallationofthedevelopmentenvironmentinChapter2.OtherfeaturesofAndroidincludeanaccelerated3-Dgraphicsengine(basedonhardwaresupport),databasesupportpoweredbySQLite,andanintegratedwebbrowser.IfyouarefamiliarwithJavaprogrammingorareanOOPdeveloperofanysort,youarelikelyusedtoprogrammaticuserinterface(UI)development—thatis,UIplacementwhichishandleddirectlywithintheprogramcode.Android,whilerecognizingandallowingforprogrammaticUIdevelopment,alsosupportsthenewer,XML-basedUIlayout.XMLUIlayoutisafairlynewconcepttotheaveragedesktopdeveloper.IwillcoverboththeXMLUIlayoutandtheprogrammaticUIdevelopmentinthesupportingchaptersofthisbook.OneofthemoreexcitingandcompellingfeaturesofAndroidisthat,becauseofitsarchitecture,third-partyapplications—includingthosethatare“homegrown”—areexecutedwiththesamesystempriorityasthosethatarebundledwiththecoresystem.Thisisamajordeparturefrommostsystems,whichgiveembeddedsystemappsagreaterexecutionprioritythanthethreadpriorityavailabletoappscreatedbythird-partydevelopers.Also,eachapplicationisexecutedwithinitsownthreadusingaverylightweightvirtualmachine.AsidefromtheverygenerousSDKandthewell-formedlibrariesthatareavailabletoustodevelopwith,themostexcitingfeatureforAndroiddevelopersisthatwenowhaveaccesstoanythingtheoperatingsystemhasaccessto.Inotherwords,ifyouwanttocreateanapplicationthatdialsthephone,youhaveaccesstothephone’sdialer;ifyouwanttocreateanapplicationthatutilizesthephone’sinternalGPS(ifequipped),youhaveaccesstoit.Thepotentialfordeveloperstocreatedynamicandintriguingapplicationsisnowwideopen.OntopofallthefeaturesthatareavailablefromtheAndroidsideoftheequation,Googlehasthrowninsomeverytantalizingfeaturesofitsown.DevelopersofAndroidapplicationswillbeabletotietheirapplicationsintoexistingGoogleofferingssuchasGoogleMapsandtheomnipresentGoogleSearch.SupposeyouwanttowriteanapplicationthatpullsupaGooglemapofwhereanincomingcallisemanatingfrom,oryouwanttobeabletostorecommonsearchresultswithyourcontacts;thedoorsofpossibilityhavebeenflungwideopenwithAndroid.Chapter2beginsyourjourneytoAndroiddevelopment.Youwilllearnthehow’sandwhy’sofusingspecificdevelopmentenvironmentsorintegrateddevelopmentenvironments(IDE),andyouwilldownloadandinstalltheJavaIDEEclipse.2Application:HelloWorld2.1KeySkills&Concepts● CreatingnewAndroidprojects● WorkingwithViews● UsingaTextView● Modifyingthemain.xmlfile● RunningapplicationsontheAndroidEmulatorInthischapter,youwillbecreatingyourfirstAndroidActivity.Thischapterexaminestheapplication-buildingprocessfromstarttofinish.IwillshowyouhowtocreateanAndroidprojectinEclipse,addcodetotheinitialfiles,andrunthefinishedapplicationintheAndroidEmulator.TheresultingapplicationwillbeafullyfunctioningprogramrunninginanAndroidenvironment.Actually,asyoumovethroughthischapter,youwillbecreatingmorethanoneAndroidActivity.ComputerprogrammingtraditiondictatesthatyourfirstapplicationbethetypicalHelloWorld!application,sointhefirstsectionyouwillcreateastandardHelloWorld!applicationwithjustablankbackgroundandthe“HelloWorld!”text.Then,forthesakeofenablingyoutogettoknowthelanguagebetter,thenextsectionexplainsindetailthefilesautomaticallycreatedbyAndroidforyourHelloWorld!application.YouwillcreatetwoiterationsofthisActivity,eachusingdifferenttechniquesfordisplayinginformationtothescreen.YouwillalsocreatetwodifferentversionsofaHelloWorld!applicationthatwilldisplayanimagethatdeliversthe“HelloWorld!”message.ThiswillgiveyouagoodintroductiontothecontrolsandinnerworkingsofAndroid.NOTE:Youwilloftensee“application”and“Activity”usedinterchangeably.ThedifferencebetweenthetwoisthatanapplicationcanbecomposedofmultipleActivities
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度天然氣儲備庫安全運(yùn)營管理合同
- 二零二五年度工業(yè)設(shè)備安裝與調(diào)試服務(wù)合同3篇
- 二零二五版快遞企業(yè)快遞物品安全防護(hù)合同大全3篇
- 2025年度城市綜合體門頭廣告品牌形象改造合同3篇
- 2025年度拆遷安置房交易全程跟蹤服務(wù)合同協(xié)議3篇
- 個人消費(fèi)性借款合同(2024版)9篇
- 二零二五年度可再生能源發(fā)電特許經(jīng)營合作協(xié)議合同范本
- 二零二五年度醫(yī)療健康信息化運(yùn)維保障合同2篇
- 2025版商業(yè)物業(yè)安全責(zé)任書(含應(yīng)急預(yù)案)3篇
- 2025年度個性化產(chǎn)后恢復(fù)與新生兒護(hù)理個人月嫂服務(wù)協(xié)議4篇
- 《裝配式蒸壓加氣混凝土外墻板保溫系統(tǒng)構(gòu)造》中
- T-CSTM 01124-2024 油氣管道工程用工廠預(yù)制袖管三通
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標(biāo))
- 新譯林版高中英語必修二全冊短語匯總
- 基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的游客規(guī)模預(yù)測研究
- 河道保潔服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 品管圈(QCC)案例-縮短接臺手術(shù)送手術(shù)時間
- 精神科病程記錄
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
- 清華大學(xué)考博英語歷年真題詳解
- 人教版三年級上冊口算題(全冊完整20份 )
評論
0/150
提交評論