內(nèi)容簡介本書共四部分19章,主要介紹如何使用Adobe AIR開發(fā)Android移動應(yīng)用,深入講解Android移動開
發(fā)特有的各種主題,力圖幫助讀者創(chuàng)建高品質(zhì)的應(yīng)用程序。第1章~第5章討論創(chuàng)建和發(fā)布AIR應(yīng)用程序
的技術(shù)、環(huán)境和基礎(chǔ)。第6章~第14章討論和功能有關(guān)的主題,比如多點(diǎn)觸摸技術(shù)、加速計(jì)、自帶的攝像
機(jī)、地理位置、音頻和視頻等。第15章~第17章討論一些更高級的主題,建立一個(gè)體系結(jié)構(gòu)來管理多個(gè)
視圖,并提供完整應(yīng)用程序的代碼。第18章~第19章闡述資源管理和開發(fā)的最佳實(shí)踐。讀者可在本書配
套網(wǎng)站下載代碼示例,并編譯和安裝到移動設(shè)備上。本書著重強(qiáng)調(diào)良好的開發(fā)實(shí)踐,尤其適合熱愛技術(shù)和用戶體驗(yàn)的開發(fā)人員參考和學(xué)習(xí)。序
為獨(dú)立應(yīng)用程序賦予杰出的使用體驗(yàn),要比想象中的難得多。有了Adobe AIR之后,開
發(fā)人員和設(shè)計(jì)人員能將他們的思路快速和方便地轉(zhuǎn)換為應(yīng)用程序。隨著新一代移動平臺
的興起,我們將AIR引入那些平臺,可以有效地?cái)U(kuò)大用戶群體。通過Véronique的書,你
將一勞永逸地學(xué)會如何使用AIR構(gòu)建出色的應(yīng)用程序,如何利用移動平臺的新功能,比
如地理位置、觸屏以及其他傳感器。讓我們開始編碼吧!——Arno Gourdol,F(xiàn)lash Runtime Foundation工程主管
前言
如果你不能簡單說清楚,就說明你還沒有完全明白。——阿爾伯特·愛因斯坦手機(jī)產(chǎn)業(yè)的欣欣向榮革新了我們與世界連接和相互通信的方式。它已成為移動生活方式
的基礎(chǔ)。雖然硬件廠商和平臺工程師正在大力促進(jìn)手機(jī)技術(shù)的發(fā)展,但手機(jī)的真正潛力還需應(yīng)用
程序的創(chuàng)建者來激發(fā)。為此,Google和Open Handset Alliance(開放手機(jī)聯(lián)盟)開發(fā)了Android,一種能在大量
移動設(shè)備上運(yùn)行的操作系統(tǒng)。Adobe和Open Screen Project(開放屏幕項(xiàng)目)為各種移動
系統(tǒng)提供了AIR開發(fā)工具。兩者結(jié)合在一起,為這個(gè)各自為陣的世界帶來了某種統(tǒng)一的
跡象。本書教你使用Adobe AIR進(jìn)行Android平臺上的開發(fā)。我的目標(biāo)是針對移動開發(fā)特有的各
種主題進(jìn)行深入講解。我的希望是本書能幫助你創(chuàng)建高質(zhì)量的應(yīng)用程序。面向的讀者本書面向開發(fā)人員,尤其是那些既關(guān)心技術(shù),又關(guān)心用戶體驗(yàn)的狂熱的程序員(coder)。
我嘗試盡可能多地提供關(guān)于所有主題的背景信息,而非只是把本書作為一本ActionScript參
考手冊來寫。今天仍處在移動紀(jì)元之初期,你們每一個(gè)人都是潛在的改革者。你的貢獻(xiàn)可能影響移動
技術(shù)的未來。
4 | 前言本書前提本書假定你已經(jīng)有ActionScript 3語言的基本到中級能力。例如,知道怎樣創(chuàng)建事件偵聽
器,理解不同的數(shù)據(jù)類型,并知道類是什么。如果想學(xué)習(xí)該語言的基礎(chǔ)知識,或者只是
想復(fù)習(xí)一下,我推薦Colin Moock寫的Essential ActionScript 3.0一書(O’Reilly)。每個(gè)
主題我都會從基本的講起。我還提供了示例代碼,幫助你逐漸消化新知識。最后,我只
用ActionScript和少量第三方庫。本書內(nèi)容本書分為4個(gè)部分。第1章到第5章討論創(chuàng)建和發(fā)布AIR應(yīng)用程序的技術(shù)、環(huán)境和基礎(chǔ)。第6章到第14章討論和功能有關(guān)的主題,比如多點(diǎn)觸摸技術(shù)、加速計(jì)、自帶的攝像機(jī)、
地理位置、音頻和視頻等。第15章到第17章討論一些更高級的主題,建立一個(gè)體系結(jié)構(gòu)來管理多個(gè)視圖,并提供完
整應(yīng)用程序的代碼。第18章到第19章闡述了資源管理和開發(fā)的最佳實(shí)踐。此外,本書還有一個(gè)配套網(wǎng)站(http://oreilly.com/catalog/9781449394820),方便你下
載代碼示例,自己編譯并安裝到移動設(shè)備上。排版約定本書使用如下排版慣例:斜體表示新名詞、URL地址、電子郵件地址、文件名或者文件擴(kuò)展名。等寬字體(Constant width)用來顯示代碼示例,以及段落中的程序元素,如變量、方法名、數(shù)據(jù)庫、數(shù)據(jù)類
型、環(huán)境變量、聲明和關(guān)鍵字等。等寬粗體(Constant width bold)顯示了用戶需要逐行鍵入的命令或文本。等寬斜體(Constant width Italic)顯示了需要用戶用自己的值將其替換掉的文本,或者需要用戶根據(jù)上下文進(jìn)行相應(yīng)
替換的文本。
前言 | 5注意: 代表一個(gè)提醒、建議或者一般性的注意事項(xiàng)。警告: 代表警告或提醒。注意,我喜歡將起始花括號和代碼放在同一行,因?yàn)槲矣X得這使書中的代碼可讀性更
強(qiáng),還能節(jié)省一行空間。基于同樣的理由,我也沒有遵守私有變量要以下劃線開頭的約
定。演示新概念時(shí),我只用一個(gè)小的代碼段介紹新的API或類。使用代碼示例本書旨在幫助你更好地完成自己的工作。一般情況下,可以在自己的程序和文檔中使用
本書的代碼。除非要重新發(fā)布絕大部分代碼,否則不必聯(lián)系我們進(jìn)行授權(quán)。例如,寫
程序使用本書的幾個(gè)代碼塊不需要授權(quán)。但是,出售或者發(fā)布包含本書示例的一張CD-
ROM就需要授權(quán)。通過引用本書正文和示例代碼來回答一個(gè)問題不需要授權(quán)。但是,將
本書的大量示例代碼集成到你的某個(gè)產(chǎn)品的文檔中就需要授權(quán)。如果引用時(shí)能提及本書,我們會非常感謝,雖然這并不是硬性規(guī)定。提及本書時(shí),一
般請包括書名、作者、出版社和ISBN。例如:“Developing Android Applications with
Adobe AIR by Véronique Brossier. Copyright 2011@ Véronique Brossier, 978-1-44939-
482-0”。如果覺得在使用代碼示例時(shí)超出了合理使用的范疇,或者需要授權(quán),請通過電子郵件聯(lián)
系我們:permissions@oreilly.com。聯(lián)系我們有關(guān)本書的任何建議和疑問,可以發(fā)送信函到以下地址:美國:O’Reilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)奧萊利技術(shù)咨詢(北京)有限公司
我們?yōu)楸緯峁┝艘粋(gè)網(wǎng)頁,其中給出了勘誤表、示例代碼和所有的附加信息。可以通
過以下地址訪問該網(wǎng)頁:要對本書發(fā)表評論或詢問技術(shù)問題,請發(fā)電子郵件到以下郵箱:有關(guān)我們的書籍、會議、資源中心以及O’Reilly網(wǎng)絡(luò),可以訪問我們的網(wǎng)站:致謝感謝Flash Runtime Foundation工程主管Arno Gourdol,感謝AIR團(tuán)隊(duì)在產(chǎn)品預(yù)發(fā)布之前
所做的工作和積極配合與支持(尤其值得一提的是Mohit Arora,Syed Mohd Mehadi,
Romil Mittal和Ashutosh Jagdish Sharma)。我要向Joe Ward表達(dá)我最真誠的謝意,他為
我提供了有關(guān)AIR的方方面面的解答和文檔資料。我要向AIR for Android預(yù)發(fā)布名單上的同仁表示感謝,尤其是Jyunpei Furukawa和Pascal
Sahuc。感謝O’Reilly的編輯Mary Treseler、文稿編輯Audrey Doyle、制作編輯Kristen Borg和插
畫作者Robert Romano。感謝O’Reilly的技術(shù)審稿人Tom Barker,Rich Tretola,Matthew
David,Chris Griffith以及(特別感謝)Kevin Bahadoor。除了O’Reilly的技術(shù)編輯,我還邀請了幾個(gè)朋友和專業(yè)人員參與審閱了本書。他們根據(jù)
自己的專長分別審閱了單獨(dú)的章節(jié)。有幾個(gè)慷慨的朋友還審閱了多次。感謝Francois Balmelle,David Cameron,Danny Durra,Renaun Erickson,Judah
Frangipane,Ben Garney,Colin Holgate,Alexandre Houdent,Kevin Hoyt,Lisa Larson-
Kelley,Elliot Mebane,Doug McCune,André Michelle,Keith Peters,Brian Rinaldi,
Michael Thornburgh和Edwin Van Rijkom。感謝Grant Garrett讓我使用Influxis服務(wù)來測試我的視頻應(yīng)用,感謝Jonathan Bryski繪的走
路循環(huán)圖,感謝MTVNetworks的Pier Borra為方便我著手開始寫作而提供的休假。
Merci(法語,“謝謝”的意思)Thibault Imbert,在我首次考慮寫書時(shí),他的熱情強(qiáng)
烈地感染了我。感謝Rich Shupe,他無私地分享了他的寫作經(jīng)驗(yàn),他的幽默讓人難以忘
懷。我要由衷地感謝Mike Chambers和Colin Moock,感謝他們在我工作中提供的幫助,要知
道,在我們這個(gè)行業(yè),作為女性,往往意味著被當(dāng)作隱形人。感謝我的那一半Satyen Mehta,他的耐心和不懈的支持(他稱我為Jacqueline Cousteau of
Flash),感謝他在我寫作的時(shí)候做了很多美味佳肴。當(dāng)我在夜間趕工的時(shí)候,CMB悄無聲息地來到身旁,它乖巧的舉動為我消除了很多壓
力。遺憾的是,Mesocricetus auratus不能上我這本書的封面。
目錄序 .........1前言 ..........3第1章 AIR初探 .....9安裝Adobe開發(fā)工具 ..........10Flash Professional CS 5.5 ..........10Flash Builder 4.5 ..........10在Android設(shè)備上安裝AIR“運(yùn)行時(shí)” ........10AIR SDK簡介 .........11新的ActionScript庫..........12尚不支持的功能 .........13桌面上的AIR與Android上的AIR的對比 .....13Android上的Mobile Flash Player 10.1與AIR 2.6的對比 .........14第2章 打電話和發(fā)短信 ..........15設(shè)置設(shè)備 .........15創(chuàng)建項(xiàng)目 .........16使用Flash Professional ..........16使用Flash Builder .........16創(chuàng)建應(yīng)用程序描述 .........17使用Flash Professional ..........17使用Flash Builder .........17寫代碼 .........17使用Flash Professional ..........18
ii | 目錄使用Flash Builder .........19將應(yīng)用程序打包成APK文件并安裝到設(shè)備 ..........20使用Flash Professional ..........20使用Flash Builder .........20測試和調(diào)試 .........21使用Flash Professional ..........21使用Flash Builder .........22移動工具應(yīng)用程序 .........22Launchpad .........22Device Central CS5 ..........23Package Assistant Pro .........23De MonsterDebugger ..........23通過服務(wù)器將AIR安裝到Android設(shè)備上 ....23其他工具 .........24小結(jié) ....25第3章 Android初探 ..........26Android SDK ..........27安裝Android SDK ..........27安裝Android Debug Bridge .........28檢測設(shè)備 .........29使用Dalvik Debug Monitor ..........29使用logcat命令 .........30使用Virtual Device Manager和Emulator ..........31AIR如何在Android上運(yùn)行 .........32使用intent啟動AIR .........33AIR對Android API的訪問 .........33使用命令行工具 ..........34概述 ..........34小結(jié) ....36第4章 權(quán)限、證書和安裝 .........37為什么要針對移動市場 .........37APK文件 .........37創(chuàng)建應(yīng)用程序圖標(biāo) .........38
目錄 | iii選擇應(yīng)用程序設(shè)置 .........39設(shè)置權(quán)限 .........41打包外部資源 .........44用證書簽署應(yīng)用程序 ..........45版本控制 .........45注冊成為Android開發(fā)人員 .........46在Android Market發(fā)布應(yīng)用程序 .........46上傳資源 .........46陳列細(xì)節(jié) .........47發(fā)布選項(xiàng) .........47通過Adobe InMarket發(fā)布應(yīng)用程序 ......47為Amazon Appstore發(fā)布 .........48使用MAC地址控制發(fā)布 ..........48啟動AIR應(yīng)用程序 .........49開發(fā)應(yīng)用來掙錢 ..........49收費(fèi)應(yīng)用 .........49移動廣告 .........50報(bào)告 ....50小結(jié) ....51第5章 評估設(shè)備能力并應(yīng)對多種設(shè)備 .........52硬件 ....52處理器 .........53內(nèi)存和存儲.........53攝像機(jī) .........53傳感器 .........53電池 ..........53顯示屏 .........53軟件 ....54性能 ..........54功能 ..........55方向 ..........56創(chuàng)建多屏內(nèi)容 .........57資源縮放和定位 .........58矢量圖形與位圖的選擇 .........60
網(wǎng)絡(luò)連接 .........61小結(jié) ....62第6章 打開/關(guān)閉應(yīng)用程序和保存數(shù)據(jù) ..........63AIR應(yīng)用程序 ..........64打開應(yīng)用程序 .........64關(guān)閉應(yīng)用程序 .........64在后臺和前臺之間切換 .........65設(shè)置Back,Menu和Search按鈕 ..........66重寫暗屏行為 .........67為什么和怎樣保存數(shù)據(jù) .........68內(nèi)部還是外部存儲 .........68本地共享對象 .........70文件系統(tǒng) .........72使用SQLite數(shù)據(jù)庫 .........75創(chuàng)建數(shù)據(jù)庫文件 .........76嵌入數(shù)據(jù)庫.........81使用加密本地存儲 .........82小結(jié) ....83第7章 多點(diǎn)觸摸技術(shù) .........84簡單的歷史性回顧 .........84多點(diǎn)觸摸和手勢 ..........85工作原理 .........85Multitouch類 .........85GestureEvent類 .........86縮放(Zoom)手勢 .........87旋轉(zhuǎn)(Rotate)手勢 ..........88Pan手勢 .........89Swipe手勢 .........90Press and Tap手勢 ..........91Two-Finger Tap手勢 .........92TouchEvent類 .........93GestureWorks庫 .........95觸摸設(shè)計(jì) .........96小結(jié) ....96第8章 加速計(jì) ......98什么是運(yùn)動傳感器 .........98Accelerometer類 .........98直觀地認(rèn)識值 .........100簡單動畫 .........100更新和屏幕渲染 .........101設(shè)置邊界 .........102向中心旋轉(zhuǎn).........102搖一搖 .........103獲得平滑的值 .........104小結(jié) .........106第9章 攝像機(jī) ....107Gallery應(yīng)用程序和CameraRoll類 ..........107選擇圖片 .........108添加圖片 .........113攝像應(yīng)用程序和CameraUI類 ..........113上傳到遠(yuǎn)程服務(wù)器 .........115EXIF數(shù)據(jù) .........115小結(jié) .........118第10章 地理位置 ..........119Geolocation類 .........119GeolocationEvent類 ..........121使用GPS和網(wǎng)絡(luò)/Wi-Fi技術(shù)定位設(shè)備 ........122使用GPS ..........122使用蜂窩網(wǎng)絡(luò)和WiFi ..........123如何辨別正在使用GPS還是WiFi ......123AIR和Android .........125逆向地理編碼 .........126地圖 .........128啟動Google Maps .........128靜態(tài)地圖 .........129
動態(tài)地圖 .........132EXIF數(shù)據(jù)和Map對象 ..........136speed屬性 .........138小結(jié) .........138第11章 麥克風(fēng)和音頻 ..........140麥克風(fēng) .........140錄音 .........141播放音頻 .........142保存錄音 .........143音頻資源 ..........147嵌入文件 .........147使用外部文件 .........147設(shè)置和音頻編碼/解碼器 ..........148處理聲音 ..........150加載聲音 .........150播放聲音 .........152顯示進(jìn)度 .........152停止聲音 .........153恢復(fù)聲音 .........153訪問元數(shù)據(jù).........154使用多點(diǎn)觸摸的音頻示例 .........154ID3標(biāo)簽 .........154修改聲音 ..........155控制音量 .........155平移 .........156原始數(shù)據(jù)和聲音頻譜 .........157音頻和應(yīng)用程序活動 .........160小結(jié) .........161第12章 視頻 .....162準(zhǔn)備視頻 ..........162編碼/解碼器 .........162碼率 .........163幀頻 .........164
分辨率 .........164性能 .........165播放視頻 ..........165嵌入視頻 .........165外部視頻 .........166邊播放邊放的視頻 .........166RTMP流 ..........170HTTP動態(tài)流.........171P2P通信 .........171控制 .........172YouTube ..........172捕獲視頻 ..........173視頻和CameraUI類 ..........173Camera類 .........175文檔和教程.........176小結(jié) .........176第13章 StageWebView類 ..........177原生瀏覽器 .........177StageWebView類 .........178設(shè)計(jì)時(shí)的注意事項(xiàng) .........180本地使用 .........181移動廣告 .........182服務(wù)和身份驗(yàn)證 .........184不足 .........185小結(jié) .........186第14章 硬件加速 .........187一些定義 ..........187渲染和屏幕顯示 ..........188計(jì)算 .........189邊線和顏色創(chuàng)建 .........189光柵化 .........189表示 .........189Android上的GPU渲染 .........190
cacheAsBitmap屬性..........190cacheAsBitmapMatrix屬性 .........193顯示列表 ..........195內(nèi)存消耗 .........195樹結(jié)構(gòu) .........196節(jié)點(diǎn)關(guān)系 .........196多幀MovieClip .........198交互性 .........198多種渲染技術(shù) .........198最大紋理內(nèi)存和紋理大小 .........1992.5D對象 .........199如何測試GPU渲染效率 .........199矩陣 .........199單位矩陣 .........200變換矩陣 .........200為多屏幕部署定義矩陣 .........202GPU模式中不要使用的矩陣 ..........202硬件加速音頻和視頻 .........203小結(jié) .........203第15章 設(shè)備和其他問題 ..........204RTMFP UDP .........204局域網(wǎng)的P2P ..........205顏色交換 .........208對比AIR應(yīng)用程序 ..........209遠(yuǎn)程網(wǎng)絡(luò)的P2P ..........209簡單文字聊天 .........211多播流 .........212端到端流 .........214定向路由 .........216中繼 .........217尋寶游戲 .........218其他多用戶服務(wù) .........218Arduino和物理計(jì)算 .........219小結(jié) .........219
第16章 ViewManager類 .........220導(dǎo)航 .........220ViewManager類 ..........220獨(dú)立視圖 .........224面包屑導(dǎo)航 .........231Flash Builder的ViewNavigator .........233小結(jié) .........236第17章 案例學(xué)習(xí) .........237Album應(yīng)用程序 .........237設(shè)計(jì) .........238構(gòu)架 .........238流程 .........239權(quán)限 .........241導(dǎo)航 .........241圖片 .........241音頻 .........242逆向地理位置 .........242SQLite .........242P2P連接 .........242滾動導(dǎo)航 .........243桌面功能 .........246小結(jié) .........246第18章 資源管理 .........247文本 .........247虛擬鍵盤 .........247字體 .........248Flash文本引擎 ..........248優(yōu)化圖形 ..........250降尺度和mipmap .........250運(yùn)行時(shí)的矢量圖形 .........251縮放 .........251cacheAsBitmap .........251cacheAsBitmapMatrix..........251
矢量到位圖.........252合成矢量圖形 .........252多幀MovieClip .........253精靈表和Blitting ..........255Blitting ..........255定制光標(biāo) ..........257異步位圖解碼 .........257緩存資源 ..........257組件 .........258小結(jié) .........259第19章 最佳開發(fā)實(shí)踐 ..........261關(guān)于優(yōu)化的資源 ..........261尋求幫助 ..........262文檔 .........262Internet ..........262社區(qū) .........262運(yùn)行機(jī)制 ..........263幀的概念 .........263內(nèi)存 .........265創(chuàng)建對象 .........265刪除對象 .........266垃圾回收 .........268事件 .........269事件傳播 .........270多個(gè)子一個(gè)偵聽器 .........270泛型和自定義事件 .........271診斷工具 ..........272Hi-Res-Stats .........272Flash Builder Profiler ..........273Flash Preload Profiler ..........274Grant Skinner的PerformanceTest類 ....274本地工具 .........275小結(jié) .........275