【正文】
原稿出處 Introducing Google39。例如,adb shell 命令將打開一個(gè)Linux命令行窗口,從中可以輸入要在設(shè)備上運(yùn)行的其他命令。媒體編解碼器。Dalvik與傳統(tǒng)Java虛擬機(jī)的不同之處體現(xiàn)在下面兩個(gè)重要的方面。內(nèi)容提供者。購置Android手機(jī)時(shí),手機(jī)中會(huì)預(yù)裝一些標(biāo)準(zhǔn)的系統(tǒng)應(yīng)用程序,包括:以及一個(gè)滾動(dòng)列表,其中包含用戶可以打開的其他應(yīng)用程序。onStart()。onRestart()。在某些情況下,onPause()方法可能是活動(dòng)者調(diào)用的最后一個(gè)方法,所以才應(yīng)在該方法中保存下次要繼續(xù)使用的任何數(shù)據(jù)。可以通過某個(gè)活動(dòng)來播放音樂,但是我們希望即使當(dāng)用戶使用其他程序時(shí),人能繼續(xù)播放音樂。之后,另一個(gè)活動(dòng)可能會(huì)綁定到該服務(wù)上,告訴該服務(wù)切換音軌或停止播放。下面仔細(xì)了解這些構(gòu)建塊。用戶可以從該應(yīng)用程序中打開其他應(yīng)用程序,或者打開同一應(yīng)用程序的其他窗口,然后再調(diào)用其他應(yīng)用程序。電子郵件收發(fā)程序;Dalvik 。參見第5章中相關(guān)的示例。 本機(jī)庫Linux內(nèi)核層上面的一層中包含了Android本機(jī)庫。你可能對(duì)Android的某些部分很熟悉,如Linux內(nèi)核、OpenGL和SQL數(shù)據(jù)庫,但對(duì)其他部分可能還一無所知,如Android中應(yīng)用程序生命周期的概念。用戶想使用該功能,也不需要費(fèi)多大的事,只需要將安卓應(yīng)用程序的URL粘貼進(jìn)去,Google+即可自動(dòng)嵌入安裝/購買按鈕?;贜FC的數(shù)據(jù)傳輸:采用了特別優(yōu)化過的文件/目錄復(fù)制算法,使得其在大量文件復(fù)制的時(shí)候比其他文件管理類工具速度更快。完成畢業(yè)論文和畢業(yè)設(shè)計(jì)以及畢業(yè)答辯。目前基于Android的智能手機(jī)在全球手機(jī)市場(chǎng)保持強(qiáng)勁增長,市場(chǎng)占有率的大幅提升也促進(jìn)了Android手機(jī)應(yīng)用服務(wù)市場(chǎng)的迅速展。例如手機(jī)定位,導(dǎo)航服務(wù)。就像其基于的Mac OS X操作系統(tǒng)一樣,它也是以Darwin為基礎(chǔ)的。在 Android 中,編譯器將Java源文件轉(zhuǎn)為class文件,內(nèi)置的dx工具又將class文件轉(zhuǎn)化為Dex文件,Dex文件是在Dalvik虛擬機(jī)上運(yùn)行程序的標(biāo)準(zhǔn)格式。用戶每天都會(huì)下載安裝各種新的應(yīng)用到自己的手機(jī)里,抑或是下載各種音頻、視頻、圖片、文字儲(chǔ)存到內(nèi)存卡里以便將來在能在任何地方瀏覽。這些庫包括圖形框架、媒體功能庫、Webkit、及SQLite數(shù)據(jù)庫,等等。Windows Mobile 系列操作系統(tǒng)是從微軟計(jì)算機(jī)的Windows操作系統(tǒng)演化而來的。國外最大的社交Fackbook也已經(jīng)傳出正在進(jìn)行針對(duì)手機(jī)的產(chǎn)品的研發(fā)。根據(jù)觀察,在不久的將來,移動(dòng)手機(jī)終端將會(huì)在以下若干方面具有新的發(fā)展。內(nèi)置與每一臺(tái)基于Android系統(tǒng)的手機(jī)中,Google Play同時(shí)提供Web端,將Web端和手機(jī)端通過谷歌賬號(hào)綁定??梢詭椭シ牌髦苯硬シ烹娔X共享的資源。不久前,由多家公司、大學(xué)和用戶共同成立了泛歐聯(lián)盟,旨在開發(fā)NFC的開放式架構(gòu),并推動(dòng)其在手機(jī)中的應(yīng)用。除了清晰友好的用戶操作界面、豐富而強(qiáng)大的應(yīng)用功能,手機(jī)應(yīng)用產(chǎn)生的大量流量也是用戶最為關(guān)心的。 Android的系統(tǒng)架構(gòu)我們首先看看Android的總體系統(tǒng)架構(gòu)——組成Android開源軟件棧的關(guān)鍵層和組件,圖21展示了完整的Android系統(tǒng)架構(gòu)圖,請(qǐng)讀者仔細(xì)研究一下這張圖。Android提供了輕量級(jí)的SQLite數(shù)據(jù)庫引擎,F(xiàn)irefox和蘋果的iPhone中使用的也是該數(shù)據(jù)庫引擎。Android附帶的Java核心庫與Java SE庫和Java ME庫不同。Android Market。從用戶的角度看,這種工作方式類似于Web瀏覽器中的歷史功能,即按Back返回到上一個(gè)頁面。這個(gè)方法非常適合開始播放動(dòng)畫和音樂。如果內(nèi)存不足,可能永遠(yuǎn)都不會(huì)調(diào)用onDestroy()(系統(tǒng)可能只是終止進(jìn)程)。本書的其余部分提供了關(guān)于這些對(duì)象的多個(gè)實(shí)例,所以現(xiàn)在先簡要介紹一下他們。這是在應(yīng)用程序之間共享全局?jǐn)?shù)據(jù)的最佳方式。下次其他人嘗試發(fā)送電子郵件時(shí),他們會(huì)使用你的電子郵件程序,而不是標(biāo)準(zhǔn)的郵件程序。默認(rèn)實(shí)現(xiàn)會(huì)還原用戶界面的狀態(tài)。用戶無需看到某個(gè)活動(dòng),或者在一段時(shí)間內(nèi)不需要某個(gè)活動(dòng)時(shí),可以調(diào)用該方法??墒褂迷摲椒▓?zhí)行一次性的初始化工作,如創(chuàng)建用戶界面。Android中有一個(gè)前臺(tái)應(yīng)用程序,它通常為占據(jù)狀態(tài)欄以外的所有將屏幕空間??蓪⒃搶酉胂鬄楦〕龊C娴腁ndroid冰山的一角?;顒?dòng)管理器。 Android運(yùn)行時(shí)在Linux內(nèi)核層上面還有一個(gè)Android運(yùn)行時(shí)層,改成包括Dalvik虛擬機(jī)以及Java核心庫。庫將使用3D硬件(如果設(shè)備上有的話)或者快速軟件渲染器(如果沒有3D硬件設(shè)備)。Android手機(jī)用戶永遠(yuǎn)不會(huì)看到Linux,程序也不會(huì)直接進(jìn)行Linux調(diào)用。但是這種保護(hù)措施局限于Android手機(jī)內(nèi)部,也就是說,Android手機(jī)的可信計(jì)算基(trusted puting base,TCB)[10]僅僅局限于手機(jī)本身。通過在手機(jī)上建設(shè)FTP服務(wù)器,配置登陸端口,登陸賬號(hào)密碼,通過WiFi網(wǎng)絡(luò)傳輸文件。搜索到遠(yuǎn)程設(shè)備后,還需要進(jìn)行服務(wù)搜索去發(fā)現(xiàn)對(duì)方提供了哪些服務(wù)。搜索下載網(wǎng)絡(luò)音樂到手機(jī)中,音樂時(shí)自動(dòng)添加歌詞、專輯封面,給手機(jī)設(shè)定多樣化鈴聲。利用FTP協(xié)議數(shù)據(jù)連接的工作方式以及基本命令完成手機(jī)與計(jì)算機(jī)直接的文件傳輸功能。在Android尚未站穩(wěn)腳跟的上網(wǎng)本戰(zhàn)場(chǎng)迅速出擊,既挖掘新的移動(dòng)互聯(lián)網(wǎng)商機(jī),同時(shí)也打亂對(duì)方策略,是諾基亞利益所在,也是無奈之舉[12]。當(dāng)然近些年來國內(nèi)企業(yè)和我國政府在這方也投入了大量的人力和物力。Symbian是為手機(jī)而設(shè)計(jì)的操作系統(tǒng),它是一個(gè)實(shí)時(shí)性,多任務(wù)的純32位嵌入式的操作系統(tǒng),具有低能耗,內(nèi)存占用較少等特點(diǎn)?;?Linux 的內(nèi)核模塊Android 內(nèi)核基于 Linux , 提供安全、 內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)組、驅(qū)動(dòng)模型等核心服務(wù)。Android是由谷歌主導(dǎo)開發(fā)的,它由Linxu Kernel、C/C++編寫的類庫、一個(gè)用以運(yùn)行代碼的類似Java的虛擬機(jī)、移動(dòng)終端必需的應(yīng)用程序組成。Android平臺(tái)的架構(gòu)層次分明,[9] Android平臺(tái)的架構(gòu)圖 國內(nèi)外研究現(xiàn)狀 國內(nèi)外手機(jī)系統(tǒng)現(xiàn)狀目前國外各軟硬件廠商已經(jīng)推出過多款手機(jī)操作系統(tǒng)。Palm系統(tǒng)與其他手機(jī)系統(tǒng)相比在其它方面也還存在一些不足,如Palm操作系統(tǒng)本身不具有錄音、MP3播放功能等,但是可以通過加入第三方軟件或硬件設(shè)備來實(shí)現(xiàn)。在Google Play(一個(gè)谷歌針對(duì)android系統(tǒng)用戶所開發(fā)的應(yīng)用商場(chǎng))上已經(jīng)有過萬的企業(yè)應(yīng)用辦公套件。據(jù)官方網(wǎng)站介紹,豌豆莢手機(jī)精靈可以方便快捷地整理通訊錄,Android手機(jī)、Outlook 等多平臺(tái)間輕松導(dǎo)入導(dǎo)出通訊錄,管理分組,給聯(lián)系人添加頭像和各種信息。2.研究方向基于藍(lán)牙的文件傳輸:藍(lán)牙協(xié)議棧提供了一組的高層協(xié)議和API 以完成發(fā)現(xiàn)服務(wù)和模擬串行I/O,還有一個(gè)關(guān)于包分割和重組的低層協(xié)議以及多路技術(shù)協(xié)議和質(zhì)量服務(wù)。使用NFC,只需要兩個(gè)手機(jī)輕輕一碰,不需要配對(duì)和確認(rèn)過程,即可開始傳輸。用戶打開此功能后,在2G/3G網(wǎng)絡(luò)下豌豆莢將不再產(chǎn)生任何流量?,F(xiàn)在,Linux可以說是無所不在,從手表到超級(jí)計(jì)算機(jī)中都能找到它的身影。為保證快速顯示HTML內(nèi)容,Android使用了WebKit庫。該框架已隨Android一同安裝,但開發(fā)人員也可以根據(jù)需要使用自己的組件擴(kuò)展該框架。通知管理器。除了其中某個(gè)程序擁有鍵盤焦點(diǎn)外,所有程序都是平等的。如正在編輯的數(shù)據(jù)庫記錄。例如,現(xiàn)在有一個(gè)“發(fā)送一封電子郵件”的意圖。Android Key ConceptsNow that you have an idea of what Android is, let’s take a look at how it works. Some parts of Android may be familiar, such as the Linux kernel,OpenGL, and the SQL database. Others will be pletely foreign,such as Android’s idea of the application life ’ll need a good understanding of these key concepts in order to writewellbehaved Android applications, so if you read only one chapter in this book, read this one. The Big Picture Let’s start by taking a look at the overall system architecture—the key layers and ponents that make up the Android open source software stack. In Figure , on the next page, you can see the “20,000foot”view of Android. Study it closely—there will be a test layer uses the services provided by the layers below it. Starting from the bottom, the following sections highlight the layers provided by Android.Linux KernelAndroid is built on top of a solid and proven foundation: the Linux kernel. Created by Linus Torvalds in 1991, Linux can be found today in everything from wristwatches to superputers. Linux provides the hardware abstraction layer for Android, allowing Android to be ported to a wide variety of platforms in the future. Internally, Android uses Linux for its memory management, process management, networking, and other operating system services. The Android phone user will never see Linux, and your programs will not make Linux calls directly. As a developer, though, you’ll need to be aware it’s there.Some utilities you need during development interact with Linux. For example, the adb shell mand1 will open a Linux shell in which you can enter other mands to run on the device. From there you can examine the Linux file system, view active processes, and so forth, subject to security restrictions.Native LibrariesThe next layer above the kernel contains the Android native shared libraries are all written in C or C++, piled for the particular hardware architecture used by the phone, and preinstalled by the phone vendor.Some of the most important native libraries include the following:? Surface Manager: Android uses a positing window manager similar to Vista or Compiz, but it’s much simpler. Instead of drawing directly to the screen buffer, your drawing mands go into offscreen bitmaps that are then bined with other bitmaps to form the display the user sees. This lets the system create all sorts of interesting effects such as seethrough windows and fancy transitions.? 2D and 3D graphics: Two and threedimensional elements can be bined in a single user interface with Android. The library will use