摘? 要:App Inventor積木式編程程序,其優(yōu)點是可視化操作、模塊拼接編程,易讀懂、易編寫、易理解,使學習變得簡單有趣?;贏pp Inventor開發(fā)的“天氣預報APP”應(yīng)用案例,在互聯(lián)網(wǎng)環(huán)境下,結(jié)合大數(shù)據(jù)應(yīng)用,在移動終端上開發(fā)應(yīng)用程序,大大地提升了青少年學習積木式編程的興趣。在對案例編寫、創(chuàng)建和調(diào)試的過程中,有意識的培養(yǎng)學生的計算思維,有效提高學生發(fā)現(xiàn)問題、解決問題的能力,使程序?qū)W習不再枯燥。
關(guān)鍵詞:App Inventor;API調(diào)用;天氣預報APP
中圖分類號:TP311.56? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)22-0026-04
Design and Implementation of API Call in Building Block Programming Based on App Inventor
——Take the Weather Forecast APP as an Example
LIU Zaixing
(Guangzhou Institute of Educational Research,Guangzhou? 510110,China)
Abstract:App Inventor building block programming program,its advantages are visual operation,module splicing programming,easy to read,easy to write,easy to understand,make learning simple and interesting. Based on the application case of “weather forecast APP” developed by App Inventor,in the internet environment,combined with big data application,the application program is developed on the mobile terminal,which greatly enhances the interest of teenagers in learning building block programming. In the process of writing,creating and debugging cases,we should consciously cultivate studentscomputational thinking,effectively improve studentsability to find and solve problems,and make program learning no longer boring.
Keywords:App Inventor;API call;weather forecast APP
0? 引? 言
隨著信息技術(shù)的日益發(fā)展,智能設(shè)備已廣泛地使用在我們的日常生活中,為我們的生活帶了許多便利。App Inventor積木式編程是一款基于瀏覽器的在線安卓軟件開發(fā)工具,采用搭積木的方式進行編程,由于其界面友好,能很好的實現(xiàn)學生的創(chuàng)意,簡單有趣,使程序?qū)W習不再枯燥。筆者作為廣州市教育研究院初中信息技術(shù)教研員,主編廣州市中學信息技術(shù)學科教材《信息技術(shù)》第二冊的“App Inventor手機積木式編程”,本文基于App Inventor積木式編程設(shè)計與開發(fā)的天氣預報APP為例向讀者展現(xiàn)API調(diào)用的設(shè)計與實現(xiàn)的過程,在發(fā)現(xiàn)問題、解決問題的過程中激發(fā)學生學習手機積木式編程的興趣,培養(yǎng)學生計算思維能力,養(yǎng)成良好的編程思維。
1? App Inventor積木式編程在初級中學信息技術(shù)學科教育中的實用性
信息技術(shù)是什么,很多人首先想到的是編程,這就說明信息技術(shù)學科中的編程課程尤為重要。初級中學階段的學生的信息技術(shù)專業(yè)知識欠缺,外語水平也不高,想要學習好一門編程語言確實不容易,往往因為傳統(tǒng)編程課程的學習,造成很多同學對信息技術(shù)學科產(chǎn)生畏難情緒,覺得編程很難掌握,磨滅他們對編程乃至信息技術(shù)課程的學習興趣。2012年1月,美國麻省理工學院推出基于安卓系統(tǒng)的積木式編程軟件——App Inventor。不同于傳統(tǒng)編程,App Inventor積木式編程的設(shè)計比較簡單,學生不用編寫煩瑣的代碼,使用“積木”對程序代碼塊進行拼接,實現(xiàn)在智能手機或平板上直接查看程序的調(diào)試結(jié)果,這對于活潑好動的初中生具有非常大的吸引力。初中信息技術(shù)課程App Inventor積木式編程包括“搖一搖聽單詞”“創(chuàng)意涂鴉”和“調(diào)用API制作天氣預報APP”等教學內(nèi)容。本文截取App Inventor積木式編程中常用的API調(diào)用為例,闡述如何設(shè)計與實現(xiàn)天氣預報APP。
2? 天氣預報APP的功能及技術(shù)可行性分析
天氣預報需要綜合大量的數(shù)據(jù)進行專業(yè)處理,事實上我們很難憑一己之力實現(xiàn)這樣的應(yīng)用。不過,專業(yè)機構(gòu)已經(jīng)將數(shù)據(jù)處理并發(fā)布在網(wǎng)絡(luò)上,我們只需要按照特定規(guī)范進行調(diào)用,即可獲得專業(yè)的數(shù)據(jù),這就需要調(diào)用API應(yīng)用程序接口。
Web服務(wù)器通常提供兩種方式的用戶接口與客戶端交互,如圖1所示:一種是Web UI,就是通常所說的網(wǎng)站或網(wǎng)頁,客戶端不需要安裝特定的程序,通過瀏覽器就可以訪問網(wǎng)站;另一種是Web API,需要在客戶端安裝應(yīng)用程序,用戶與客戶端APP交互,客戶端APP再通過Web API與服務(wù)器交互,將結(jié)果展現(xiàn)給用戶。本文以制作一款天氣預報APP為例,闡述API調(diào)用的設(shè)計與實現(xiàn)。
2.1? 天氣預報APP功能
基于App Inventor編程平臺開發(fā)天氣預報APP,設(shè)計實現(xiàn)以下功能:
(1)輸入某個城市名稱,顯示該城市的實時天氣狀況。
(2)可以查詢?nèi)我獬鞘械慕?天天氣數(shù)據(jù),包括氣溫、風向、風力等信息。
2.2? 技術(shù)可行性分析
(1)API調(diào)用。應(yīng)用程序編程接口(Application Pro-gramming Interface,API)調(diào)用,即開發(fā)人員和應(yīng)用程序無須訪問源碼或理解程序的內(nèi)部工作機制細節(jié),通過預定義函數(shù),基于某軟件或硬件得以訪問一組例程的能力。API的實現(xiàn)是提供API所定義的功能的軟件,API僅僅是一種程序接口,它的優(yōu)勢在于:1)系統(tǒng)各部分的相互依賴通過API良好的接口設(shè)計得以解決,既可降低組成單元間的耦合程度又能提高它們的內(nèi)聚性,同時系統(tǒng)的維護性和擴展性得到很好的提升。2)API是一組極其復雜、數(shù)量上千的函數(shù)和程序構(gòu)成應(yīng)用程序接口,程序員可以利用程序接口完成各類開發(fā)任務(wù)。高質(zhì)量的API接口,除了自身的數(shù)據(jù)外,接口的穩(wěn)定性和質(zhì)量也是非常重要。
目前,世界上許多大型企業(yè),如京東萬象、Amazon等都通過API接口開放數(shù)據(jù),使得全世界的開發(fā)人員都能夠調(diào)用他們的數(shù)據(jù)。API數(shù)據(jù)接口近年來受眾多開發(fā)人員的追捧,在程序的設(shè)計與開發(fā)工作中起著重要的作用。
把通信連接Web客戶端組件內(nèi)置到基于App Inventor開發(fā)的天氣預報APP內(nèi),天氣預報APP可根據(jù)客戶需求查詢城市的名稱,調(diào)用Web客戶端組件來設(shè)置API的鏈接地址,使用京東萬象提供的API服務(wù),獲取返回數(shù)據(jù)。
(2)解析數(shù)據(jù)。解析的數(shù)據(jù)主要是京東萬象平臺API程序接口中獲得的各類返回信息,包括城市的信息和當前天氣的狀況、目前的氣溫等。因為這些信息都是用JSON數(shù)據(jù)格式返回,同時Web瀏覽器組件中具有解碼JSON文本的方法,并返回列表數(shù)據(jù),因此我們可以在列表中通過對“鍵值對”的查找,查詢到數(shù)據(jù)的值。
3? JSON格式數(shù)據(jù)
JSON相對于XML來說更為小巧,同時沒有削減描述能力,是一種輕量級的數(shù)據(jù)交換格式,易于機器解析和網(wǎng)絡(luò)傳輸。JSON對象表示為鍵值對,是一個“名稱/值”的集合,每個名稱后跟一個冒號,大括號保存對象,數(shù)據(jù)由逗號分隔。我們從調(diào)試信息中的JSON返回示例值中取出與本例相關(guān)的其中一段來做說明。本例中,程序需要的是關(guān)鍵字“weather”對應(yīng)的值,作為天氣預報的結(jié)果顯示在界面上。
根據(jù)JSON返回的文本結(jié)構(gòu),先查找第1層結(jié)構(gòu)中關(guān)鍵字“result”對應(yīng)的值,然后在其返回的結(jié)果(鍵值對“列表”)里查找第2層結(jié)構(gòu)中關(guān)鍵字“result”對應(yīng)的值,最后在其返回的結(jié)果里(鍵值對“列表”)查找第3層結(jié)構(gòu)中關(guān)鍵字“weather”對應(yīng)的值。用這樣的方式,通過3層查找來找出關(guān)鍵字“weather”得到對應(yīng)的值,并賦值給標簽來顯示數(shù)據(jù)。
"code":"10000",
"charge":false,
"msg":"查詢成功",
"result":{
"status":0,
"msg":"ok",
"result":{
"city":"廣州",
"cityid":75,
"citycode":"101280101",
"date":"2019-07-13",
"week":"星期六",
"weather":"陰",
"temp":"30",
……
}
……
}
4? 天氣預報APP組件界面設(shè)計
本系統(tǒng)的屏幕(Screen)布局設(shè)計如圖2、圖3所示,天氣查詢界面如圖2所示,輸入城市名單擊“查詢”按鈕后顯示的界面如圖3所示,組件界面設(shè)計如圖4所示。
(1)如圖2所示,屏幕上方是查詢天氣輸入框,在輸入框里填入要查詢的城市后,單擊“查詢”按鈕即可查詢該城市的天氣狀況。所使用的組件有水平布局、標簽、文本輸入框、按鈕等等。
(2)通信連接Web客戶端1個:把網(wǎng)址設(shè)置為京東萬象和風天氣API的接口地址,用來獲取返回的信息以及進行解析。
(3)語音合成器1個:使用語音播報查詢到的某城市天氣情況。
5? 京東萬象平臺
系統(tǒng)需求方使用數(shù)據(jù)服務(wù)方(或大數(shù)據(jù)交易平臺)提供的數(shù)據(jù)接口獲得所需要的數(shù)據(jù)。這些數(shù)據(jù)經(jīng)過平臺的處理與分析,能很好地滿足需求方對數(shù)據(jù)的需求。天氣預報APP調(diào)用的API接口是大數(shù)據(jù)交易平臺中的京東萬象平臺提供的“世界和中國天氣預報”程序,它能提供全球5萬多個城市實時和近7天的天氣、氣溫、風力、風向等數(shù)據(jù)信息。京東萬象平臺的天氣數(shù)據(jù)采用JSON格式數(shù)據(jù),編寫的格式比較簡單,很適合初學者使用,平臺每天都可以有5 000次的免費請求,滿足簡單程序的編寫。初學者在京東萬象平臺上注冊并申請一個APPKEY即可使用該數(shù)據(jù)接口獲取數(shù)據(jù)。調(diào)用京東萬象平臺天氣API的鏈接地址為:https://way.jd.com/he/freeweather?city=城市名&appkey=您的密鑰。涉及的程序代碼塊如圖5所示。
6? 天氣預報APP程序設(shè)計
當京東萬象平臺數(shù)據(jù)服務(wù)的API返回數(shù)據(jù)時,解析JSON數(shù)據(jù),獲取相關(guān)關(guān)鍵字的值,并顯示在屏幕上。我們要在JSON返回文本中查找關(guān)鍵字“weather”對應(yīng)的值,可以通過列表組件提供的“在鍵值列表…中查找…,沒找到返回”方法來實現(xiàn)。此方法需要3個輸入值:鍵值對“列表”、關(guān)鍵字以及找不到時的提示信息。根據(jù)JSON返回的文本結(jié)構(gòu),先查找第1層結(jié)構(gòu)中關(guān)鍵字“result”對應(yīng)的值,然后在其返回的結(jié)果(鍵值對“列表”)里查找第2層結(jié)構(gòu)中關(guān)鍵字“result”對應(yīng)的值,最后在其返回的結(jié)果里(鍵值對“列表”)查找第3層結(jié)構(gòu)中關(guān)鍵字“weather”對應(yīng)的值。用這樣的方式,通過3層查找來找出關(guān)鍵字“weather”得到對應(yīng)的值,并賦值給標簽(“標簽_天氣數(shù)據(jù)”)來顯示數(shù)據(jù),如圖6所示。
當輸入城市名,點擊“查詢”按鈕時,設(shè)置Web客戶端的網(wǎng)址并向京東萬象平臺API發(fā)送數(shù)據(jù)請求服務(wù)。調(diào)用語音合成器來將查詢結(jié)果(文本)轉(zhuǎn)換成語音,通過設(shè)備的揚聲器進行播報,Web客戶端獲得文本事件的完整代碼塊如圖7所示。
7? 結(jié)? 論
從本文介紹的基于App Inventor積木式編程API調(diào)用的天氣預報APP系統(tǒng)的設(shè)計與實現(xiàn)可以看出,其結(jié)構(gòu)簡單,操作便捷,體現(xiàn)出App Inventor積木式編程軟件編寫簡易的特點。2017年7月國務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》,強調(diào)“在中小學階段設(shè)置人工智能相關(guān)課程,逐步推廣編程教育”,而本系統(tǒng)的程序設(shè)計在互聯(lián)網(wǎng)環(huán)境下,App Inventor積木式編程作為編程入門的課程在初級中學普及開展,學生利用積木式編程開發(fā)手機APP,更好地提升自身的信息技術(shù)素養(yǎng),適應(yīng)新時代的發(fā)展。
參考文獻:
[1] 金從軍.App Inventor開發(fā)訓練營 [M].北京:人民郵電出版社,2018.
[2] 廣州市教育研究院.信息技術(shù) 小學:第2冊 [M].廣東:廣東教育出版社,2015.
[3] 白乃遠,曾奕霖.App Inventor 2 Android應(yīng)用開發(fā)實戰(zhàn) [M].北京:電子工業(yè)出版社,2017.
[4] 魯?shù)?,李欣,陳金?基于API技術(shù)的數(shù)字人文基礎(chǔ)設(shè)施的構(gòu)建 [J].圖書館學研究,2019(13):42-46+57.
[5] 魏曉風,蔣家傅,鐘紅,等.我國中小學編程教育發(fā)展的路徑思考 [J].中國教育信息化,2018(24):1-4+9.
作者簡介:劉載興(1963—),男,漢族,廣東廣州人,中學高級教師,碩士研究生,研究方向:計算機技術(shù)教育、中小學信息技術(shù)教育、人工智能。