- 寫給大家看的安卓應(yīng)用開發(fā)書:App Inventor 2快速入門與實戰(zhàn)
- (美)沃爾貝等
- 6113字
- 2020-01-10 15:25:28
前言
想象一下,你像往常一樣,正在一條熟悉的路上慢跑,突然腦中產(chǎn)生了一個想法—— 一款全新的殺手級移動應(yīng)用!一路上,你甚至忘記了時間,一心想著要把這個想法付諸實踐。但是該從哪里下手呢?你并不是一名程序員,而要成為程序員怎么也得花上幾年的時間,何況時間就是金錢,等你真的成為程序員的時候,可能早已有人把它做出來了。于是就這樣,你的靈感胎死腹中了。
現(xiàn)在來設(shè)想一個全然不同的世界,在那里,創(chuàng)建應(yīng)用不需要有多年編程經(jīng)驗,藝術(shù)家、科學(xué)家、人道主義者、衛(wèi)生保健工作者、律師、消防員、馬拉松運動員、足球教練等各行各業(yè)的人,都可以自己動手創(chuàng)建應(yīng)用。設(shè)想一下,在這個世界里,不必雇用專業(yè)程序員,就可以把想法轉(zhuǎn)變?yōu)閼?yīng)用的原型;你還可以創(chuàng)建只屬于你個人的應(yīng)用,利用移動計算技術(shù)來滿足自己獨特的需求。
這就是App Inventor的世界,一個用于創(chuàng)建移動應(yīng)用的可視化編程工具。實踐證明,這種基于“塊”語言的可視化編程方法,顯著地降低了為安卓設(shè)備開發(fā)應(yīng)用的門檻,就連孩子們也能夠運用自如。讓我們來想象一下,把電子游戲里的角色替換成你和你的朋友;或者做一款“買牛奶”的應(yīng)用,當(dāng)你下午3點鐘之后路過某個超市時,手機會主動提醒你買牛奶;或者是一款問答應(yīng)用,把它作為一種別出心裁的求婚方式,發(fā)給你的那一位:“問題4:你愿意嫁給我嗎?如果愿意,按下按鈕發(fā)送短信。”真的有人創(chuàng)建了一個類似的App Inventor應(yīng)用來求婚,而對方居然說“愿意”!
面向手機的塊語言
App Inventor是一款采用拖曳操作的可視化編程工具,主要用于構(gòu)建運行在安卓平臺上的移動應(yīng)用。App Inventor提供了基于Web的圖形用戶界面設(shè)計工具,你可以用它設(shè)計應(yīng)用的外觀,然后像玩拼圖游戲一樣,將“塊”語言拼在一起來定義應(yīng)用的行為。
圖P-1顯示的代碼塊來自于一款應(yīng)用的早期版本,它的開發(fā)者Daniel Finnegan是一名從未學(xué)過編程的大學(xué)生。你能猜出這是一款什么樣的應(yīng)用嗎?

圖P-1 一款自動回復(fù)短信的應(yīng)用
這是一款短信“應(yīng)答機”應(yīng)用。開車時啟動它,就可以對收到的短信進行自動回復(fù)。
相比傳統(tǒng)的程序代碼,這些代碼塊更容易理解,于是你立刻被深深地吸引住。結(jié)合自己的切身體會,你也提出了一些問題:能不能將收到的短信大聲地讀出來?我能自定義回復(fù)內(nèi)容嗎?能不能做一個像《美國偶像》(American Idol)那樣的應(yīng)用,讓人們用短信來投票?以上所有問題的答案都是肯定的。這本書就是要告訴你怎么做。
用App Inventor做什么
可做的事情簡直是太多了!
· 把開發(fā)當(dāng)作游戲
為手機編寫應(yīng)用本來就很有意思,而使用App Inventor則更增添了探索和發(fā)現(xiàn)的樂趣。只需在Web瀏覽器中打開App Inventor,連上手機,并像圖P-1中那樣把一些塊拼在一起,立即就能在手機上看到你的應(yīng)用,并且能夠與之交互。于是你開始編程,你發(fā)郵件給朋友們,讓他們發(fā)短信來測試你的應(yīng)用;或者用剛寫好的應(yīng)用來控制一個樂高NXT機器人;再或者拔下手機,走到戶外,去驗證一下應(yīng)用中的位置傳感器是否有效。
· 創(chuàng)建原型應(yīng)用
有了創(chuàng)建一款應(yīng)用的靈感,是嗎?那就快速地創(chuàng)建一個原型,切莫隨手記在餐巾紙上,或者干脆讓它隨風(fēng)飄散。什么是原型呢?它是你構(gòu)思的模型,是有待完善的作品。用文字來表達想法,就像是寫一篇散文給你的朋友或愛人;而用App Inventor創(chuàng)建一個原型,就像是寫給風(fēng)險投資人的一首詩。因此我們說,對于移動應(yīng)用的開發(fā)來說,App Inventor就像一張電子餐巾紙。
· 構(gòu)建個性化應(yīng)用
目前,在移動應(yīng)用的世界里,我們只能被動接受那些推送過來的應(yīng)用。你就沒有抱怨過嗎?我們更期待那種個性化的應(yīng)用,或者至少讓我們能夠有所取舍。使用App Inventor,你就可以創(chuàng)建出更貼近自己需求的應(yīng)用。例如,第3章的“打地鼠”游戲中,有一個隨機移動的地鼠,每次觸碰到它你都可以增加得分,你完全可以把教程中的地鼠替換成你想要的形象,比如你弟弟妹妹的照片,或者隨便什么你能想到的東西,只要你喜歡!同樣,在第8章的出題應(yīng)用中,我們給出的問題都與美國總統(tǒng)有關(guān),你可以輕而易舉地將那些問題替換成你感興趣的問題,比如,你最喜愛的音樂、你的家族歷史,等等。
· 開發(fā)完整的應(yīng)用
App Inventor不只是一個原型開發(fā)系統(tǒng)或界面設(shè)計器,它也可以用來創(chuàng)建各種完整的應(yīng)用。它所使用的塊語言提供了所有基礎(chǔ)的編程指令,如循環(huán)語句及條件語句等,只不過是以“塊”的方式來呈現(xiàn)而已。
· 教學(xué)
無論是對于初中、高中還是大學(xué)的學(xué)生,App Inventor都是一個非常出色的教學(xué)工具。它的出色不僅僅是對計算機科學(xué)而言,對于數(shù)學(xué)、物理、工商管理以及幾乎任何其他學(xué)科來說,它也是一個了不起的工具。重要的是在創(chuàng)造中學(xué)習(xí),而不是死記公式。例如,你創(chuàng)建了一個尋找最近醫(yī)院(或商場)的應(yīng)用;又比如,用馬丁·路德·金和馬爾科姆· X的視頻或演講的錄音片段來創(chuàng)建一個多媒體的問答應(yīng)用,遠比寫一段黑人歷史的文章來得生動。我們堅信App Inventor以及本書將成為你學(xué)習(xí)中貫穿始終的強有力的工具。
為什么要用App Inventor
很多人說App Inventor之所以易用,是因為它采用了可視化操作界面以及可拖曳的塊語言。但這背后究竟意味著什么呢?為什么App Inventor會易于使用?
· 無需記憶和輸入指令
對于初學(xué)者來說,學(xué)習(xí)編程有兩大困難:一是要輸入代碼,二是要面對那些計算機彈出的令人費解的錯誤信息。這種困難帶來的挫折感,往往使初學(xué)者還沒體會解決邏輯性問題的樂趣,就中途放棄了。
· 你要做的只是選擇
在App Inventor中,組件和代碼塊被分門別類地放在不同的抽屜中,觸手可得。編程的過程就是找到這些塊并把它們拖到程序中來實現(xiàn)你預(yù)想的功能,你不需要記住那些指令或查閱參考手冊。
· 限定代碼塊之間的匹配
同那些讓程序員感到挫敗的神秘錯誤信息相比,App Inventor的塊語言從一開始就排除了很多犯錯的機會。例如,如果一個代碼塊要求你輸入數(shù)字,你就無法輸入數(shù)字以外的任何字符。這雖然不能消除所有的錯誤,但起碼會排除很多低級錯誤。
· 事件的即時處理
在傳統(tǒng)編程語言誕生的那個年代,編寫程序就是按照特定的順序輸入一組命令,就像廚師照著菜譜的流程做菜一樣。但是在圖形用戶界面中,特別是在移動應(yīng)用中,程序?qū)⒉辉侔凑漳硞€特定的順序執(zhí)行,而是由那些隨時可能發(fā)生的事件(例如,收到短信或來電)觸發(fā)運行。因此,大多數(shù)的程序都不再采用這種菜譜的模式,取而代之的是對事件的處理。事件處理程序的工作方式是“當(dāng)某事件發(fā)生時,做某事”。在傳統(tǒng)的語言(如Java)中,你要了解類、對象,以及一種叫作“事件偵聽器”的特殊對象,每個偵聽器代表一個事件。而在App Inventor中,你可以拖曳出一個“事件塊”來表示“用戶點擊按鈕”或“收到短信”之類的事件。
適合創(chuàng)建哪些類型的應(yīng)用
用App Inventor可以創(chuàng)建各種不同類型的應(yīng)用。只需發(fā)揮你的想象力,就能創(chuàng)建出各種既有趣又實用的應(yīng)用來。
· 游戲
一般人們都會從簡單的應(yīng)用開始,例如,第3章的“打地鼠”游戲,或者第2章的油漆桶應(yīng)用(在朋友的臉上繪畫)。然后隨著不斷進步,你可以開始按照自己的想法做一些更復(fù)雜的游戲,如“吃豆子”“太空侵略者”等。你甚至可以使用手機中的傳感器,通過傾斜手機來控制游戲中角色的移動(第5章)。
· 教學(xué)類應(yīng)用
App Inventor不僅限于制作簡單的游戲,也可用于創(chuàng)建信息和教育類應(yīng)用。第8章的總統(tǒng)問答應(yīng)用可以幫助學(xué)生們在考試前更好地復(fù)習(xí),第10章的出題與答題應(yīng)用,允許用戶為自己定制一份考卷(想想那些長途旅行的家長們會多么喜歡這個應(yīng)用!)。
· 位置感知應(yīng)用
因為App Inventor提供了訪問GPS位置傳感器的功能,因此可以構(gòu)建一個定位應(yīng)用,知道自己在哪兒;也可以構(gòu)建一個停車定位應(yīng)用,幫你記住停車位置(第7章);或者一個找人的應(yīng)用,在音樂會或大型會議中顯示你的朋友或同事的位置;或者一個定制的導(dǎo)游應(yīng)用,為你所在學(xué)校、工作場所或博物館預(yù)置游覽路線。
· 高科技應(yīng)用
你還可以創(chuàng)建以下類型的應(yīng)用:條碼掃描、聊天、聽力練習(xí)(文字識別)、音樂播放、音樂制作(第9章)、視頻播放、檢測手機的方向和加速度、拍照以及打電話,等等。如果把智能手機比作一把功能多樣的瑞士軍刀,那么編寫程序就是操作這把刀的技術(shù),而App Inventor讓這門技術(shù)更易于掌握。
· 短信應(yīng)用
“開車不發(fā)短信”(第4章)就是一個短信類應(yīng)用的簡單案例。你還可以編寫一個自動問候的應(yīng)用,定時給你的親友們發(fā)送諸如“想念你”之類的短信;或者類似于“廣播中心”(第11章)那樣的應(yīng)用,幫助協(xié)調(diào)大型活動;再或者像《美國偶像》節(jié)目那樣的投票應(yīng)用,讓你的朋友通過短信來投票。所有這些類型的應(yīng)用都可以用App Inventor來實現(xiàn)。
· 控制機器人的應(yīng)用
第12章介紹了一個機器人控制類應(yīng)用,教你如何編寫程序來控制樂高機器人。你的手機可以充當(dāng)機器人的遙控器,或者說你的程序就是機器人的“大腦”,可以伴隨它到處游走。機器人與手機之間通過藍牙通信,你也可以使用App Inventor的藍牙組件創(chuàng)建其他類似的應(yīng)用,來控制周圍的藍牙設(shè)備。
· 復(fù)雜應(yīng)用
App Inventor大大降低了編程的門檻,讓你在短時間內(nèi)就可以創(chuàng)建出很炫的高科技應(yīng)用。但這門語言的功能并不簡單,它提供了循環(huán)、條件以及其他的語言要素與邏輯結(jié)構(gòu),可以編寫出邏輯復(fù)雜的應(yīng)用程序。在嘗試創(chuàng)建應(yīng)用的過程中,你會驚奇地發(fā)現(xiàn)解決這些邏輯問題是多么有趣。
· 基于Web的應(yīng)用
App Inventor也提供了應(yīng)用與Web之間的通信手段。你可以寫一個應(yīng)用,從Twitter或RSS訂閱中抓取數(shù)據(jù),或者訪問亞馬遜網(wǎng)上書店,通過掃描條碼來查詢一本書的線上價格。
哪些人能夠創(chuàng)建應(yīng)用
App Inventor開發(fā)工具是一款在線應(yīng)用(非桌面程序),向所有人免費開放。只要你能聯(lián)通網(wǎng)絡(luò),就可以在任何瀏覽器中使用它。你甚至不需要手機:內(nèi)置的安卓模擬器可用于應(yīng)用的測試。截至2014年9月,App Inventor已經(jīng)擁有了190萬注冊用戶,他們來自195個國家,并共同創(chuàng)建了將近500萬個應(yīng)用。
是誰創(chuàng)建了這些應(yīng)用?他們是專職的程序員嗎?有些是,但大多數(shù)不是。
其中最有說服力的例子是David Wolber教授的一門課程。Wolber教授是本書的作者之一,就職于舊金山大學(xué)。舊金山大學(xué)為商科及文科學(xué)生開設(shè)了一門計算機科學(xué)的基礎(chǔ)課程,而App Inventor是這門課程的一部分。許多參加這門課的學(xué)生對數(shù)學(xué)是既恨又怕,而這門課恰恰滿足了這些患有數(shù)學(xué)恐懼癥的學(xué)生的核心需求,其中絕大多數(shù)學(xué)生連做夢也沒想到他們會編寫計算機程序。
盡管毫無經(jīng)驗可言,但學(xué)生們依然學(xué)會了App Inventor,并成功地創(chuàng)建了許多了不起的應(yīng)用。一個英語專業(yè)的學(xué)生首創(chuàng)了“開車不發(fā)短信”應(yīng)用;兩個通信專業(yè)的學(xué)生創(chuàng)建了“安卓,我的車在哪兒?”應(yīng)用(第7章);而一個國際研究專業(yè)的學(xué)生創(chuàng)建了“廣播中心”應(yīng)用(第11章)。有一天晚上,已經(jīng)過了下班時間,一位藝術(shù)系的學(xué)生去敲Wolber教授辦公室的門,詢問他如何寫一個條件循環(huán)。這讓W(xué)olber教授意識到,App Inventor已經(jīng)極大地改變了計算機教育的格局。
媒體也開始關(guān)注這一意義非凡的變化。《紐約時報》稱App Inventor為“DIY應(yīng)用開發(fā)軟件”。《舊金山紀(jì)事報》撰文報道了舊金山大學(xué)的學(xué)生們的工作:“谷歌讓普通大眾變成了應(yīng)用的生產(chǎn)者。”《連線》雜志則采訪了“開車不發(fā)短信”應(yīng)用的作者Daniel Finnegan,并斷言:“Finnegan的故事表明,編程大眾化的時代已經(jīng)到來。”
正如他們所說,這只貓已經(jīng)跳出來了(第1章的應(yīng)用里有一只小貓)。現(xiàn)在,在世界各地,App Inventor已經(jīng)被列為初中及高中課程。來自28個國家的2500多位女生參加了“技術(shù)創(chuàng)新挑戰(zhàn)”項目(一個面向高中女生的課外項目,http://www.technovationchallenge.org/);在高中開設(shè)的試點課程——計算機原理的預(yù)備課程(http://mobile-csp.org/)中,也加入了App Inventor的內(nèi)容;在許多大學(xué)新開設(shè)的入門課程中,也都有App Inventor的一席之地。數(shù)千名愛好者、商人、求婚者以及“能工巧匠”們正漫游在App Inventor的網(wǎng)站上,創(chuàng)建自己的應(yīng)用。你還等什么?開始行動吧,無需擁有編程經(jīng)驗!
排版約定
本書使用了下列排版約定。
· 楷體
表示新術(shù)語。
· 等寬字體(constant width)
表示程序片段,以及正文中出現(xiàn)的變量、函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字等。
· 加粗等寬字體(constant width bold)
表示應(yīng)該由用戶輸入的命令或其他文本。
· 斜體等寬字體(constant width bold)
表示應(yīng)當(dāng)被用戶自定義的值或上下文決定的值所替換的文本。
這個圖標(biāo)表示提示或建議。
這個圖標(biāo)表示測試環(huán)節(jié)以及測試說明。
使用代碼示例
補充材料(代碼示例、練習(xí)等)可以從https://appinventor.org/bookFiles下載。
本書是要幫你完成工作的。一般來說,如果本書提供了示例代碼,你可以把它用在你的程序或文檔中。除非你使用了很大一部分代碼,否則無需聯(lián)系我們獲得許可。比如,用本書的幾個代碼片段寫一個程序就無需獲得許可,銷售或分發(fā)O'Reilly圖書的示例光盤則需要獲得許可;引用本書中的示例代碼回答問題無需獲得許可,將書中大量的代碼放到你的產(chǎn)品文檔中則需要獲得許可。
我們很希望但并不強制要求你在引用本書內(nèi)容時加上引用說明。引用說明一般包括書名、作者、出版社和ISBN。比如:“App Inventor 2 by David Wolber, Hal Abelson, Ellen Spertus, and Liz Looney(O'Reilly). Copyright 2015 David Wolber, Hal Abelson, Ellen Spertus, and Liz Looney, 978-1-491-90684-2.”
如果你覺得自己對示例代碼的用法超出了上述許可的范圍,歡迎你通過permissions@oreilly.com與我們聯(lián)系。
Safari? Books Online

Safari Books Online(http://www.safaribooksonline.com)是應(yīng)運而生的數(shù)字圖書館。它同時以圖書和視頻的形式出版世界頂級技術(shù)和商務(wù)作家的專業(yè)作品。技術(shù)專家、軟件開發(fā)人員、Web設(shè)計師、商務(wù)人士和創(chuàng)意專家等,在開展調(diào)研、解決問題、學(xué)習(xí)和認(rèn)證培訓(xùn)時,都將Safari Books Online視作獲取資料的首選渠道。
對于組織團體、政府機構(gòu)和個人,Safari Books Online提供各種產(chǎn)品組合和靈活的定價策略。用戶可通過一個功能完備的數(shù)據(jù)庫檢索系統(tǒng)訪問O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology以及其他幾十家出版社的上千種圖書、培訓(xùn)視頻和正式出版之前的書稿。要了解Safari Books Online的更多信息,我們網(wǎng)上見。
聯(lián)系我們
請把對本書的評價和問題發(fā)給出版社。
美國:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中國:
北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術(shù)咨詢(北京)有限公司
O'Reilly的每一本書都有專屬網(wǎng)頁,你可以在那兒找到本書的相關(guān)信息,包括勘誤表、示例代碼以及其他信息。本書的網(wǎng)站地址是:
http://shop.oreilly.com/product/0636920034056.do
對于本書的評論和技術(shù)性問題,請發(fā)送電子郵件到:
bookquestions@oreilly.com
要了解更多O'Reilly圖書、培訓(xùn)課程、會議和新聞的信息,請訪問以下網(wǎng)站:
我們在Facebook的地址如下:
請關(guān)注我們的Twitter動態(tài):
http://twitter.com/oreillymedia
我們的YouTube視頻地址如下:
http://www.youtube.com/oreillymedia
致謝
催生App Inventor的動機是教育。基于這樣的動機,我們堅持認(rèn)為,通過主動學(xué)習(xí),程序可以成為思想的載體,可以讓那些奇思妙想變?yōu)楝F(xiàn)實。因此,App Inventor是不斷發(fā)展的計算機及教育事業(yè)的一部分,這一事業(yè)始于20世紀(jì)60年代Seymour Papert及麻省理工學(xué)院Logo小組的努力,他們策劃了眾多的活動和計劃來支持推廣計算思維,其影響一直延續(xù)至今。
App Inventor的設(shè)計借鑒了此前的計算機輔助教育的研究成果,并立足于谷歌在線開發(fā)環(huán)境。可視化編程框架則與麻省理工學(xué)院的Scratch編程語言密切相關(guān)。App Inventor 2是基于Blockly的一個特殊實現(xiàn),Blockly由谷歌公司Neil Fraser領(lǐng)導(dǎo)的團隊開發(fā)。將可視化的塊語言編譯為安卓運行代碼的編譯器采用了Kawa語言框架,而Kawa是Scheme編程語言的方言,由Per Bothner開發(fā),并由自由軟件基金會發(fā)布,它是GNU操作系統(tǒng)的一部分。
我們在此感謝谷歌公司及App Inventor原創(chuàng)團隊,他們?yōu)槲覀冊谂f金山大學(xué)、密爾斯學(xué)院以及麻省理工學(xué)院的工作及教學(xué)探索提供了支持。特別要感謝App Inventor技術(shù)主管Mark Friedman、項目經(jīng)理Karen Parker,以及工程師Sharon Perl和Debby Wallach。
同樣感謝麻省理工學(xué)院的App Inventor團隊,他們一直致力于App Inventor的開發(fā)與完善。特別感謝技術(shù)主管Andrew Mckinney、技術(shù)全才Jeff Schiller、教育及推廣主管Shaileen Pokress及Josh Sheldon、無名英雄Jose Domínguez工程師,以及貢獻出寶貴假期的Franklyn Turbak和Ralph Morelli。
還要特別感謝舊金山大學(xué)的學(xué)生Cayla Shaver所做的非凡的編輯工作,以及為本書向App Inventor 2改版所提供的幫助。
最后,我們還要感謝我們各自家庭成員的支持:Ellen的丈夫Keith Golden, Hal的妻子Lynn Abelson, Liz的丈夫Kevin Looney, David的妻子Minerva Novoa。新媽媽Ellen還要感謝保姆Neil Fullagar的幫助。
電子書
掃描如下二維碼,即可購買本書電子版。

- 基于集成學(xué)習(xí)的角反射體目標(biāo)雷達識別理論與方法
- 基于數(shù)字條紋投影的在線深度獲取技術(shù)
- 2018—2019年中國無線電應(yīng)用與管理藍皮書
- 拯救iphone之電路與故障檢修
- 5G系統(tǒng)觀:從R15到R18的演進之路
- iOS應(yīng)用開發(fā)最佳實踐
- 信息論與編碼原理
- 寬帶無線通信多址傳輸技術(shù)演進
- 數(shù)字視頻制作應(yīng)用
- .NET 微信公眾平臺開發(fā)教程
- 電子元器件檢測與應(yīng)用
- Altium Designer 16基礎(chǔ)實例教程
- 突破平面:會聲會影2018視頻編輯與制作
- Arm Helium技術(shù)指南:Cortex-M系列處理器的矢量運算擴展
- 電子元器件檢測全精通(雙色版)