譚乃抗
(東莞理工學(xué)校,廣東 東莞 523000)
引言
在開發(fā)物聯(lián)網(wǎng)系統(tǒng)人機(jī)界面的眾多方式中,安卓(Android)程序是當(dāng)前的最好選擇。本校的物聯(lián)網(wǎng)課程也選中安卓程序開發(fā),作為物聯(lián)網(wǎng)課程的內(nèi)容,教學(xué)生如何開發(fā)物聯(lián)網(wǎng)的人機(jī)界面。在往年,我們選擇的安卓開發(fā)環(huán)境是在Eclipse下結(jié)合ADT插件,用Java語言來編寫安卓程序。對于中職生來說,Java語言過于復(fù)雜與嚴(yán)謹(jǐn),實(shí)現(xiàn)很小的功能都需要做一大堆的工作。因?yàn)镴ava語言是面向?qū)ο蟮木幊陶Z言,所以教師在教學(xué)過程中必須要向?qū)W生灌輸面向?qū)ο蟮乃枷耄瑖?yán)重影響教學(xué)的進(jìn)度,還加大了學(xué)生理解程序代碼的難度。全英文的開發(fā)界面以及難懂的系統(tǒng)關(guān)鍵詞,讓學(xué)生們望而生畏,也讓他們產(chǎn)生了厭學(xué)的情緒,多數(shù)學(xué)生的學(xué)習(xí)效果不佳。從今年起,我們改用較易上手的App Inventor開發(fā)環(huán)境,來讓學(xué)生學(xué)習(xí)安卓編程。
1App Inventor簡介
App Inventor是用來開發(fā)安卓系統(tǒng)(Android)應(yīng)用程序的開發(fā)環(huán)境,在其內(nèi)部提供了一些可以調(diào)用安卓系統(tǒng)硬件的傳感器組件,能直接使用設(shè)備的這些功能,如計(jì)時(shí)器、加速度傳感器、方向傳感器、位置傳感器等,還能利用音視頻的組件來輕松實(shí)現(xiàn)多媒體的交互,使用繪圖動(dòng)畫組件做角色動(dòng)畫。采用了相當(dāng)直觀的圖形化“塊語言”,使編程人員可以更多地將注意力放在自己的想法或創(chuàng)意上,令初學(xué)者不再困擾于一些低級錯(cuò)誤。所以App Inventor很適合那些有自己創(chuàng)意想法,卻害怕編程太抽象語法太繁雜的學(xué)生進(jìn)行學(xué)習(xí)。App Inventor不只是一個(gè)原型開發(fā)工具或界面設(shè)計(jì)器,它也可以用來創(chuàng)建各種完整的應(yīng)用。它所使用的塊語言提供了所有基礎(chǔ)的編程指令,如循環(huán)語句及條件語句等,只不過是以“塊”的方式來呈現(xiàn)而已。
2App Inventor的簡單易用風(fēng)格非常適合中職學(xué)生用于物聯(lián)網(wǎng)開發(fā)
2.1App Inventor開發(fā)環(huán)境的搭建
App Inventor本身是不需要安裝就能在線使用的開發(fā)環(huán)境,可惜在我國的網(wǎng)絡(luò)政策下,多數(shù)人無法直接訪問該服務(wù)器??上驳氖菄鴥?nèi)有相應(yīng)的服務(wù)器可以使用,廣州市教育信息中心為廣大的愛好者搭建了服務(wù)器,網(wǎng)址為http://app.gzjkw.net,可以直接使用QQ帳號登錄進(jìn)行開發(fā)。雖然網(wǎng)上的服務(wù)器不必安裝就可以直接使用,但畢竟需要一直保持在線,因而導(dǎo)致很多人喜歡用不必依賴網(wǎng)絡(luò)的開發(fā)環(huán)境,于是出現(xiàn)各種離線版。不斷更新的離線版變得越來越完善與方便,通過國內(nèi)愛好者的漢化與整合優(yōu)化,基于官方新版的App Inventor 2,推出離線漢化版中最好用的2017桌面版。使用者僅僅下載解壓,就可以直接運(yùn)行桌面版來進(jìn)行APP的開發(fā),不需要安裝App Inventor服務(wù)器、Java環(huán)境、瀏覽器等。
通過簡單的步驟,就能安裝好App Inventor開發(fā)環(huán)境,這對于計(jì)算機(jī)知識積累較少的電子專業(yè)學(xué)生來說,是莫大的福音。
2.2App Inventor的開發(fā)過程
在App Inventor開發(fā)環(huán)境中新建了一個(gè)工程后,就可以進(jìn)入正式的開發(fā)界面完善這個(gè)程序了。開發(fā)的過程主要在設(shè)計(jì)視圖與編程視圖中進(jìn)行,兩個(gè)視圖的切換,可在主界面的右上角點(diǎn)擊“設(shè)計(jì)”或“編程”按鈕實(shí)現(xiàn)。第一步是在設(shè)計(jì)視圖下,利用界面設(shè)計(jì)器來設(shè)計(jì)安卓程序的界面。App Inventor在組件面板當(dāng)中提供了功能豐富的組件,可以拖放各種的可視化組件來設(shè)計(jì)界面,也可以拖放非可視化的組件來增加安卓程序的功能。組件是應(yīng)用的組成元素,就像一個(gè)菜譜中的配料。有些組件功能單一,例如標(biāo)簽,它僅用于在屏幕上顯示文字;再例如按鈕,點(diǎn)擊按鈕將引發(fā)一個(gè)活動(dòng);有些組件功能復(fù)雜,例如畫布組件,它可以容納靜態(tài)圖片或動(dòng)畫,又如加速度傳感器組件,它具有運(yùn)動(dòng)感知能力,可以偵測到設(shè)備的移動(dòng)或搖晃;另一些組件可以編寫并發(fā)送短信,播放音樂、視頻,或者從網(wǎng)絡(luò)上抓取信息等等。
圖1App Inventor的組件面板
第二步是編程視圖下,利用圖形化的塊語言進(jìn)行程序功能的開發(fā)。塊語言的編程過程就像是搭建積木一樣簡單而且有趣,如圖2所示,是一個(gè)99乘法表練習(xí)APP的完整塊語言程序。
圖299乘法表練習(xí)的塊語言程序
第三步是利用安卓系統(tǒng)進(jìn)行調(diào)試。如果學(xué)生有安卓系統(tǒng)的硬件(如安卓手機(jī)),在手機(jī)中安裝好“AI伴侶”后,掃描App Inventor生成的二維碼,就可以快捷地進(jìn)行硬件的正式調(diào)試。如果學(xué)生沒有安卓系統(tǒng)的硬件,可以直接在App Inventor中打包成*.apk文件,在模擬器中進(jìn)行調(diào)試。
3App Inventor的強(qiáng)大功能非常適合應(yīng)用于物聯(lián)網(wǎng)系統(tǒng)
在物聯(lián)網(wǎng)統(tǒng)的人機(jī)界面中,大多數(shù)只是用文字或圖片來顯示系統(tǒng)狀態(tài),用簡單的按鈕來輸入指令。這些在App Inventor中都很容易實(shí)現(xiàn),而且交互效果很強(qiáng)大。App Inventor提供了按鈕、圖片、標(biāo)簽、音視頻播放器等組件,能達(dá)到很好的多媒體交互效果,可以更生動(dòng)地傳遞作者的意念,而不僅僅是枯燥無味的文字。比如第一節(jié)的App Inventor課,僅使用開發(fā)系統(tǒng)提供的畫布與精靈,結(jié)合簡單的塊語言就實(shí)現(xiàn)了一個(gè)指南針的功能。
在設(shè)計(jì)視圖中,傳感器面板中提供了多種適合用在物聯(lián)網(wǎng)中的傳感器。如“加速度傳感器”可以用于檢測運(yùn)動(dòng)狀態(tài)以及晃動(dòng);“計(jì)時(shí)器”可用于定時(shí)運(yùn)行子程序,實(shí)現(xiàn)數(shù)據(jù)定時(shí)采集控制或定時(shí)數(shù)據(jù)處理;“方向傳感器”可以檢測方向或傾角;“位置傳感器”可以實(shí)現(xiàn)設(shè)備的定位等等。這些功能的集中實(shí)現(xiàn),還能一定程度地簡化物聯(lián)網(wǎng)系統(tǒng)的硬件組成,減小系統(tǒng)的復(fù)雜程度。
圖3傳感器面板
設(shè)計(jì)視圖中的通信連接面板中有“Web客戶端”組件和兩個(gè)負(fù)責(zé)藍(lán)牙連接的組件。“Web客戶端”可以讓開發(fā)者輕松地實(shí)現(xiàn)對某個(gè)IP進(jìn)行http協(xié)議數(shù)據(jù)的傳送,執(zhí)行post文本請求或get文本請求即可。利用這個(gè)功能,開發(fā)出來的安卓程序可以很輕松地與硬件進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的傳送,實(shí)現(xiàn)物聯(lián)網(wǎng)系統(tǒng)的網(wǎng)絡(luò)層的功能。
圖4通信連接面板
App Inventor下的藍(lán)牙連接功能也很完善與易于使用。在物聯(lián)網(wǎng)系統(tǒng)中使用藍(lán)牙轉(zhuǎn)串口模塊,就可以與安卓系統(tǒng)進(jìn)行配對和連接。App Inventor開發(fā)的安卓程序使用SPP協(xié)議將數(shù)據(jù)發(fā)送到藍(lán)牙轉(zhuǎn)串口模塊(如HC-05模塊)后,會從模塊以串口數(shù)據(jù)的格式輸出,然后再傳送到單片機(jī)或其它物聯(lián)網(wǎng)模塊。在App Inventor中,通過簡單的拖放代碼塊,就能實(shí)現(xiàn)藍(lán)牙的配對與收發(fā)數(shù)據(jù)。藍(lán)牙功能的實(shí)現(xiàn),可以讓用戶體驗(yàn)穩(wěn)定的無線連接,讓人機(jī)交互變得更人性化與方便。
App Inventor自身的塊語言編程,有變量、循環(huán)、邏輯與數(shù)學(xué)運(yùn)算等功能,可以對物聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行強(qiáng)大的運(yùn)算與處理,除了能與人機(jī)交互之外,還能使用數(shù)據(jù)庫進(jìn)行存儲和管理。
結(jié)語
App Inventor之所以易用,是因?yàn)樗捎昧丝梢暬僮鹘缑?,以及可拖拽的塊語言。這樣一來,學(xué)生在學(xué)習(xí)安卓編程時(shí)就不必去記憶繁雜的系統(tǒng)關(guān)鍵詞,也不必去輸入全英文的指令。在使用塊語言時(shí),不匹配的代碼塊是無法連接的,讓學(xué)生少了很多犯低級錯(cuò)誤的機(jī)會。App Inventor的學(xué)習(xí)成本遠(yuǎn)比其它的語言要低,而且它的成果你能安裝到手機(jī)隨身帶著隨時(shí)使用,體現(xiàn)它的價(jià)值。這一點(diǎn)很容易讓中職學(xué)生對App Inventor產(chǎn)生濃厚的興趣,期望能學(xué)好它。在物聯(lián)網(wǎng)課程中采用App Inventor進(jìn)行安卓開發(fā)后,學(xué)生的學(xué)習(xí)興趣明顯提升了很多。通過學(xué)習(xí),同學(xué)們學(xué)會了很多的App Inventor功能,并成功地創(chuàng)建了一些自己喜歡的應(yīng)用,甚至有學(xué)生自己編一些安卓小游戲來玩。由此說明,App Inventor是一個(gè)很適合中職學(xué)生學(xué)習(xí)的安卓開發(fā)環(huán)境,也適合用于物聯(lián)網(wǎng)系統(tǒng)人機(jī)界面的開發(fā)。
參考文獻(xiàn):
[1]夏繼媛. App Inventor在高職Android移動(dòng)應(yīng)用開發(fā)類課程中的教學(xué)研究與實(shí)踐[J].新課程·下旬,2014(10):23-26.
[2]金從軍. APP INVENTOR編程實(shí)例及指南[M]. 北京:清華大學(xué)出版社,2016:23-34,40-45.
[3]申圣兵,聶立文. 基于Android的手機(jī)學(xué)習(xí)平臺的開發(fā)與應(yīng)用[J]. 移動(dòng)信息,2016(06):06-07 .