馬 麗
(渤海大學(xué),遼寧 錦州 121013)
隨著移動(dòng)通信技術(shù)與手機(jī)軟硬件技術(shù)的發(fā)展,產(chǎn)生了基于智能手機(jī)的移動(dòng)學(xué)習(xí),并逐漸成為教育領(lǐng)域的應(yīng)用熱點(diǎn)。學(xué)習(xí)者可以利用零碎時(shí)間進(jìn)行非正式學(xué)習(xí),解決了傳統(tǒng)學(xué)習(xí)受時(shí)間和空間限制等問題,并實(shí)現(xiàn)了無(wú)障礙及時(shí)交互[1]。移動(dòng)學(xué)習(xí)符合終身學(xué)習(xí)的理念,學(xué)習(xí)者可以根據(jù)自身需要選擇學(xué)習(xí)內(nèi)容,提高了學(xué)習(xí)的積極性和主動(dòng)性[2]。Android操作系統(tǒng)是目前智能手機(jī)領(lǐng)域最受歡迎的操作系統(tǒng),市場(chǎng)占有率多年來(lái)穩(wěn)居第一位,尤其備受青年學(xué)生的青睞。Android已經(jīng)積累了相當(dāng)多的應(yīng)用,更多的應(yīng)用使得Android更加流行,從而吸引更多的開發(fā)者開發(fā)更多更好的應(yīng)用,形成一個(gè)良性循環(huán),開發(fā)基于Android的移動(dòng)學(xué)習(xí)平臺(tái)具有廣闊的前景[3]。針對(duì)目前移動(dòng)學(xué)習(xí)開展緩慢、移動(dòng)學(xué)習(xí)資源相對(duì)匱乏、移動(dòng)學(xué)習(xí)平臺(tái)功能單一和移動(dòng)平臺(tái)開發(fā)周期長(zhǎng)等現(xiàn)狀,文中以充分的系統(tǒng)調(diào)研和需求分析為基礎(chǔ),基于軟件工程思想和移動(dòng)開發(fā)最新技術(shù)展開研究,為移動(dòng)學(xué)習(xí)平臺(tái)開發(fā)提供解決方案,也為Android領(lǐng)域其他系統(tǒng)開發(fā)提供借鑒。
Android是一種基于Linux的移動(dòng)終端操作系統(tǒng),具有開放性和免費(fèi)性的特點(diǎn),能促進(jìn)技術(shù)創(chuàng)新,有著極短的開發(fā)時(shí)間,有助于降低開發(fā)成本,成為全球最受歡迎的智能手機(jī)操作系統(tǒng)之一。Android繼承了Java跨平臺(tái)的優(yōu)點(diǎn),任何Android應(yīng)用幾乎無(wú)需任何修改就能運(yùn)行于所有的Android設(shè)備。Android利用Java跨平臺(tái)的性質(zhì),選擇使用Java進(jìn)行各項(xiàng)API開發(fā),在Dalvik虛擬機(jī)上搭建了一個(gè)Java的application framework,所有的應(yīng)用程序都是基于Java的application framework之上[4]。Android系統(tǒng)的應(yīng)用及框架如圖1所示。
圖1 Android框架及應(yīng)用
圖1所示的Android框架及應(yīng)用由Application Framework和Applications兩部分構(gòu)成,簡(jiǎn)要描述如下[5-6]:
(1)Application Framework,是系統(tǒng)為應(yīng)用程序提供的各種API接口,目的是簡(jiǎn)化組件重用??梢哉{(diào)用這些系統(tǒng)提供的API或構(gòu)建滿足自身業(yè)務(wù)需求的API。Application Framework核心組件有5個(gè),活動(dòng)管理器(Activity Manager)管理應(yīng)用的生命周期,通知管理器(Notification Manager)在狀態(tài)欄中顯示自定義的提示信息,資源管理器(Resource Manager)提供非代碼資源訪問,內(nèi)容提供器(Content Provider)使得應(yīng)用程序訪問另一個(gè)程序的數(shù)據(jù),視圖系統(tǒng)(View System)提供用于構(gòu)建應(yīng)用程序的用戶界面元素。
(2)Applications,是Application Framework提供的供開發(fā)者使用的應(yīng)用。操作系統(tǒng)代表一個(gè)完整的生態(tài)圈,沒有豐富的應(yīng)用支持,很難大規(guī)模流行開來(lái)。Android裝配一個(gè)核心Applications應(yīng)用程序集合,具體包括短信、日歷、地圖、瀏覽器、聯(lián)系人、電子郵件、媒體播放器、計(jì)算器、語(yǔ)音撥號(hào)、相冊(cè)、鬧鈴、時(shí)鐘、即時(shí)通訊和相機(jī)等,軟件開發(fā)時(shí)可將這些應(yīng)作為組件使用。由于Android具有開源性的特點(diǎn),開發(fā)者可以對(duì)這些應(yīng)用的底層Java代碼進(jìn)行修改,使之滿足個(gè)性化的需求。
基于Android的移動(dòng)學(xué)習(xí)平臺(tái)使用SSH2框架開發(fā),SSH2框架與SSH框架的區(qū)別在于SSH2框架應(yīng)用Struts2。Struts2是基于MVC設(shè)計(jì)模式的Web應(yīng)用框架,以WebWork設(shè)計(jì)思想為核心,統(tǒng)一了Struts1和WebWork兩個(gè)框架,基于OGNL強(qiáng)大的數(shù)據(jù)存取方式,采用無(wú)侵入的架構(gòu)設(shè)計(jì),針對(duì)攔截器開發(fā),業(yè)務(wù)邏輯控制器Action由框架提供,攔截器將處理結(jié)果轉(zhuǎn)換成用戶響應(yīng),具有設(shè)計(jì)靈活和控制簡(jiǎn)單等優(yōu)點(diǎn)[7]。該平臺(tái)的層次結(jié)構(gòu)如圖2所示。
圖2 平臺(tái)層次結(jié)構(gòu)設(shè)計(jì)
圖2所示的平臺(tái)層次結(jié)構(gòu)由6層構(gòu)成:用戶層,是用戶進(jìn)行移動(dòng)學(xué)習(xí)或系統(tǒng)管理的各種終端設(shè)備,系統(tǒng)管理通常使用臺(tái)式機(jī),學(xué)生用戶使用最多的是智能手機(jī)和終端電腦;表現(xiàn)層,用戶和系統(tǒng)間進(jìn)行交流的橋梁,由用戶界面構(gòu)成,用戶通過表現(xiàn)層與系統(tǒng)進(jìn)行交互,接受用戶請(qǐng)求并返回處理結(jié)果;控制層,負(fù)責(zé)系統(tǒng)的訪問控制、數(shù)據(jù)加載和注銷,是系統(tǒng)的核心控制單元,具體工作就是將用戶請(qǐng)求從頁(yè)面?zhèn)鞯胶笈_(tái)代碼;邏輯層,處理與業(yè)務(wù)相關(guān)的部分,實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯,是系統(tǒng)主要的運(yùn)算和數(shù)據(jù)處理單元,包含了系統(tǒng)所需要的所有功能上的算法和計(jì)算過程;持久層,為業(yè)務(wù)層提供數(shù)據(jù)服務(wù),為系統(tǒng)進(jìn)行數(shù)據(jù)操作提供統(tǒng)一入口,具體工作就是將邏輯層的處理結(jié)果保存到可掉電式存儲(chǔ)設(shè)備中;數(shù)據(jù)層,存儲(chǔ)各類數(shù)據(jù),主要是學(xué)習(xí)資源,可以是數(shù)據(jù)庫(kù)方式,也可以是各種類型文件,該系統(tǒng)采用二者相結(jié)合的方式,具體的移動(dòng)學(xué)習(xí)資源采用文件存儲(chǔ),學(xué)習(xí)資源的相關(guān)信息存儲(chǔ)到數(shù)據(jù)庫(kù)中。
移動(dòng)學(xué)習(xí)平臺(tái)設(shè)計(jì)基于以下設(shè)計(jì)理念:一是,適合于自我發(fā)起的非正式場(chǎng)合學(xué)習(xí),具有較強(qiáng)的親和力和交流性,學(xué)習(xí)不再僅僅是接受知識(shí),而是能夠發(fā)現(xiàn)問題和解決問題;二是,提供豐富的學(xué)習(xí)功能,學(xué)習(xí)的內(nèi)涵和形式更加豐富,體現(xiàn)出“做中學(xué)、玩中學(xué)、游中學(xué)”的新特點(diǎn),適合于利用零散時(shí)間;三是,基于Web3.0開發(fā),平臺(tái)中的信息可以直接和其他平臺(tái)進(jìn)行交互,通過信息平臺(tái)對(duì)其他學(xué)習(xí)資源進(jìn)行整合,實(shí)現(xiàn)資源存儲(chǔ)和訪問的均衡分配[8]?;谝陨侠砟钸M(jìn)行的總體設(shè)計(jì)如圖3所示。
圖3 移動(dòng)學(xué)習(xí)平臺(tái)總體結(jié)構(gòu)
圖3所示的移動(dòng)學(xué)習(xí)平臺(tái)總體結(jié)構(gòu)由四部分構(gòu)成:第一,移動(dòng)學(xué)習(xí)終端環(huán)境,包括移動(dòng)學(xué)習(xí)終端設(shè)備和移動(dòng)學(xué)習(xí)網(wǎng)絡(luò)接入。移動(dòng)學(xué)習(xí)終端設(shè)備包括智能手機(jī)和平板電腦等。移動(dòng)學(xué)習(xí)網(wǎng)絡(luò)接入是指代Wifi、Wlan和Wimax這類接入網(wǎng)絡(luò)。Wlan是無(wú)線局域網(wǎng)絡(luò),相當(dāng)便利的數(shù)據(jù)傳輸系統(tǒng)。Wifi其實(shí)是Wlan的一個(gè)標(biāo)準(zhǔn),是屬于Wlan的子集。Wimax是一項(xiàng)新興技術(shù),可以為高速數(shù)據(jù)應(yīng)用提供更出色的移動(dòng)性。該平臺(tái)推薦三種方式結(jié)合使用。第二,移動(dòng)學(xué)習(xí)功能環(huán)境,提供各種功能及資源,是平臺(tái)的核心部分。通信協(xié)議與通信標(biāo)準(zhǔn)實(shí)現(xiàn)客戶端功能與學(xué)習(xí)資源的交互,移動(dòng)學(xué)習(xí)客戶端主要包括資源中心、任務(wù)下達(dá)和協(xié)作學(xué)習(xí)等功能,移動(dòng)學(xué)習(xí)資源包括文本、音頻、視頻和微課等類型。第三,移動(dòng)學(xué)習(xí)服務(wù)環(huán)境,包括對(duì)移動(dòng)學(xué)習(xí)內(nèi)容的選擇和分割。移動(dòng)學(xué)習(xí)要在相對(duì)零散的時(shí)間內(nèi)完成相對(duì)獨(dú)立的學(xué)習(xí)內(nèi)容,以片段化資源代替大量的學(xué)習(xí)內(nèi)容,片段化的內(nèi)容不能隨意切割,要以元知識(shí)點(diǎn)為核心,通過內(nèi)容之間的某種聯(lián)系形成緊密的知識(shí)體系。第四,移動(dòng)學(xué)習(xí)平臺(tái)后臺(tái)維護(hù)環(huán)境[9],是為管理員提供的維護(hù)操作功能,數(shù)據(jù)備份與恢復(fù)、用戶權(quán)限管理、系統(tǒng)配置管理和界面布局動(dòng)態(tài)規(guī)劃等。
Android系統(tǒng)的開放性使用戶界面存在各種不協(xié)調(diào)因素,且缺乏統(tǒng)一規(guī)范。Android的屏幕類型有幾百種不同的尺寸,設(shè)計(jì)時(shí)要考慮兼容不同的屏幕尺寸。Application Framework提供的接口以及Java通用類庫(kù)提供的解決方案,使界面設(shè)計(jì)相對(duì)簡(jiǎn)單。屏幕界面設(shè)計(jì)包括布局設(shè)計(jì)、信息呈現(xiàn)設(shè)計(jì)和交互設(shè)計(jì)等[10]。屏幕內(nèi)容及程序結(jié)構(gòu)如圖4所示。
圖4 屏幕內(nèi)容及程序結(jié)構(gòu)
(1)屏幕(Android.app.Activity)[11]。應(yīng)用程序?qū)崿F(xiàn)活動(dòng)時(shí)需要繼承Activity類。Activity是一個(gè)最直接與用戶接觸的應(yīng)用程序組件,一個(gè)Activity就是一個(gè)單獨(dú)屏幕,用來(lái)完成與用戶之間的交互,Activity之間通過Intent進(jìn)行通信。Activity在Active/Running、Paused、Stoped和Killed等狀態(tài)轉(zhuǎn)換之間回調(diào)接口,可以重載實(shí)現(xiàn)以便執(zhí)行相關(guān)代碼。
(2)內(nèi)容(Android.view.View)。View是Android一切視圖的基礎(chǔ),Android程序中使用的視圖一般都繼承自View類。View是所有與用戶交互的組件的Widgets的基類(Buttons和textField等)。Android中View比傳統(tǒng)意義的視圖具有更廣泛的含義,包含了用戶交互和顯示,實(shí)現(xiàn)一個(gè)View時(shí)需要實(shí)現(xiàn)框架中一些所有Views公用的方法。
Android客戶端除了完成與用戶交互外,另一個(gè)重要作用就是提交數(shù)據(jù)、驗(yàn)證數(shù)據(jù)和解析顯示數(shù)據(jù);服務(wù)器將客戶端頁(yè)面接收的各種不同類型數(shù)據(jù),通過服務(wù)器的Servlet子類Http Servlet對(duì)象提交給服務(wù)器端處理邏輯,完成客戶端與服務(wù)器的交互??蛻舳伺c服務(wù)器的通信流程如圖5所示[12-13]。
圖5 數(shù)據(jù)通信流程
在圖5所示的通信流程中,Http Client提供高效和功能豐富的支持HTTP協(xié)議的客戶端編程工具包,并且支持HTTP協(xié)議最新版本,不僅使客戶端發(fā)送HTTP請(qǐng)求變得容易,而且也方便了開發(fā)人員測(cè)試接口??蛻舳藰I(yè)務(wù)邏輯組件通過API接口管理調(diào)用指定的API Service,將VO(Value Object值對(duì)象)解析為HTTP請(qǐng)求參數(shù),再調(diào)用Http Client向服務(wù)器端發(fā)送HTTP請(qǐng)求。XML解析采用PULL方法,Android已經(jīng)將PULL技術(shù)集成到系統(tǒng)中,允許應(yīng)用程序代碼主動(dòng)從解析器中獲取事件,滿足需要的條件后就不再獲取事件。API接口管理采用顯示來(lái)聲明接口是[HttpGet]或者[HttpPost],避免出現(xiàn)請(qǐng)求的資源不支持TPPT方法等問題[14]。業(yè)務(wù)邏輯組件使用Enterprise JavaBean的方式處理,可以將處理后的數(shù)據(jù)直接存儲(chǔ),提供較好的安全性和可靠性。
移動(dòng)學(xué)習(xí)是一種新型的學(xué)習(xí)方式,是在新技術(shù)孕育下產(chǎn)生的。作為教育服務(wù)的延伸,拓展了教育的范圍和方式。以移動(dòng)學(xué)習(xí)相關(guān)理論及Android開發(fā)技術(shù)設(shè)計(jì)的移動(dòng)學(xué)習(xí)平臺(tái),充分考慮了學(xué)習(xí)者的需求,解決了系統(tǒng)開發(fā)關(guān)鍵性的技術(shù)問題,提供了層次結(jié)構(gòu)設(shè)計(jì)、總體結(jié)構(gòu)設(shè)計(jì)、屏幕界面設(shè)計(jì)和數(shù)據(jù)通信設(shè)計(jì)的集成化解決方案。以此設(shè)計(jì)結(jié)果為基礎(chǔ)構(gòu)建軟件開發(fā)架構(gòu)后,開發(fā)人員可以直接編寫代碼,提高了系統(tǒng)開發(fā)的質(zhì)量和效率。軟件開發(fā)時(shí)可根據(jù)系統(tǒng)需要以及學(xué)科特點(diǎn),融合移動(dòng)開發(fā)最新技術(shù),對(duì)系統(tǒng)功能進(jìn)行擴(kuò)展和延伸,以便開發(fā)出針對(duì)性更強(qiáng)、用戶體驗(yàn)更好和技術(shù)更先進(jìn)的移動(dòng)學(xué)習(xí)平臺(tái)。