賀甘芹+盧國(guó)慶
摘 要:為了幫助教師統(tǒng)計(jì)學(xué)生的出勤情況,節(jié)約課堂點(diǎn)名時(shí)間,文章運(yùn)用GPS定位技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了基于App Inventor的GPS課堂點(diǎn)名應(yīng)用,通過(guò)收集教師與學(xué)生的位置坐標(biāo)信息,計(jì)算每個(gè)學(xué)生與教師間的距離,實(shí)現(xiàn)了移動(dòng)端自動(dòng)化點(diǎn)名。
關(guān)鍵詞:App Inventor;Android GPS定位技術(shù);課堂點(diǎn)名應(yīng)用;計(jì)算距離
中圖分類號(hào):G434 文獻(xiàn)標(biāo)志碼:B 文章編號(hào):1673-8454(2016)08-0087-03
隨著我國(guó)高等教育規(guī)模的擴(kuò)大,在校大學(xué)生的整體素質(zhì)呈現(xiàn)下滑趨勢(shì),逃課現(xiàn)象普遍存在,嚴(yán)重影響著高等學(xué)府的學(xué)習(xí)氛圍以及學(xué)生自身素質(zhì)與專業(yè)水平。課堂點(diǎn)名作為高校課堂教學(xué)管理的有效手段,雖然是緩解這一問(wèn)題的有效途徑,但對(duì)人數(shù)較多的課堂,逐一點(diǎn)名卻占據(jù)了一部分有效的教學(xué)時(shí)間。那么,如何實(shí)現(xiàn)精準(zhǔn)、迅速、同步的課堂點(diǎn)名,成為高校教師面臨的棘手問(wèn)題[1]。部分學(xué)者研究通過(guò)短信貓[2]接收學(xué)生短信,或者通過(guò)指紋鑒別技術(shù)[3]采集到課學(xué)生的指紋等,達(dá)到課堂點(diǎn)名的目的,這些課堂點(diǎn)名方式均占據(jù)部分教學(xué)時(shí)間,不是真正意義上的自動(dòng)化點(diǎn)名。隨著信息技術(shù)的發(fā)展,尤其是GPS定位技術(shù)的出現(xiàn),如果每個(gè)學(xué)生走進(jìn)教室之后就將自己的GPS坐標(biāo)共享給教師,教師就可以輕松確定學(xué)生的出勤情況了?;贏pp Inventor的GPS課堂點(diǎn)名應(yīng)用,節(jié)約了有效的教學(xué)時(shí)間,減少了對(duì)正常教學(xué)秩序的干擾,具有很強(qiáng)的實(shí)用性。
一、相關(guān)概念
1.App Inventor平臺(tái)簡(jiǎn)介
App Inventor是一款由谷歌公司開發(fā)的可視化的編程工具,用于開發(fā)Android平臺(tái)的移動(dòng)應(yīng)用。利用基于Web的圖形化用戶界面生成器,可以設(shè)計(jì)應(yīng)用的用戶界面,然后像“玩拼圖”一樣,將“塊語(yǔ)言”拼在一起,來(lái)定義應(yīng)用的行為。App Inventor具有操作簡(jiǎn)單、開發(fā)環(huán)境搭建容易、應(yīng)用開發(fā)過(guò)程方便、開發(fā)周期短等特點(diǎn)[4]。
2.Android GPS定位技術(shù)
全球定位系統(tǒng)(Global Positioning System)是一個(gè)由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng),該系統(tǒng)可以保證任意時(shí)刻、在地球上任意地點(diǎn)都可以同時(shí)觀測(cè)到四顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測(cè)點(diǎn)的經(jīng)緯度與高度,實(shí)現(xiàn)導(dǎo)航、定位等功能。目前,移動(dòng)設(shè)備都內(nèi)置了GPS模塊,在網(wǎng)絡(luò)連接建立后,移動(dòng)設(shè)備利用Android GPS定位技術(shù),主要通過(guò)GPS模塊接收衛(wèi)星發(fā)送的位置信息,同時(shí)對(duì)定位數(shù)據(jù)(包括經(jīng)緯度、時(shí)間等)進(jìn)行解析,最終實(shí)現(xiàn)用戶手機(jī)的導(dǎo)航、定位等相關(guān)應(yīng)用。App Inventor作為基于面向?qū)ο蟮木幊唐脚_(tái),提供了定位服務(wù)的API,可以獲取用戶當(dāng)前的位置信息,實(shí)現(xiàn)移動(dòng)設(shè)備的實(shí)時(shí)定位。
二、應(yīng)用分析
傳統(tǒng)課堂點(diǎn)名是教師打印出學(xué)生名單,按照名單上的信息逐一確認(rèn),這種點(diǎn)名方式不僅耗費(fèi)太多課堂時(shí)間,而且無(wú)法分辨出是否有人幫忙答到[5]。隨著信息技術(shù)不斷發(fā)展,各類移動(dòng)設(shè)備(智能手機(jī)、iPad等)迅速普及,對(duì)于在校大學(xué)生而言,智能手機(jī)已經(jīng)成了他們時(shí)刻隨身攜帶的學(xué)習(xí)生活必備品,利用智能手機(jī)確定學(xué)生的出勤情況,比傳統(tǒng)點(diǎn)名方式簡(jiǎn)單有效。基于App Inventor的GPS課堂點(diǎn)名應(yīng)用是利用手機(jī)GPS定位技術(shù),在App Inventor圖形化編程環(huán)境下設(shè)計(jì)并實(shí)現(xiàn)的系統(tǒng)。因?yàn)楸緫?yīng)用需要采集教師與學(xué)生的位置信息并計(jì)算二者間距離,根據(jù)距離值判定學(xué)生出勤情況,所以本應(yīng)用需要同時(shí)具備學(xué)生端和教師端兩部分。學(xué)生端完成教師與學(xué)生之間的距離計(jì)算并共享距離信息,教師端完成教師位置信息共享和到勤學(xué)生位置信息的獲取,通過(guò)教師和學(xué)生位置距離的計(jì)算和比較,實(shí)現(xiàn)課堂點(diǎn)名的自動(dòng)化。
三、應(yīng)用設(shè)計(jì)與實(shí)現(xiàn)
基于上述分析,基于App Inventor的GPS課堂點(diǎn)名應(yīng)用由學(xué)生端和教師端兩部分構(gòu)成,以下分別從組件設(shè)計(jì)和邏輯設(shè)計(jì)介紹學(xué)生端和教師端應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)。
1.學(xué)生端的設(shè)計(jì)與實(shí)現(xiàn)
(1)學(xué)生端的組件設(shè)計(jì)
App Inventor是一個(gè)可視化、可拖拽的在線編程工具,應(yīng)用所有組件和塊結(jié)構(gòu)都是從組件工具欄和“塊”所在“抽屜”直接用鼠標(biāo)拖拽到界面中的。
組件設(shè)計(jì)是應(yīng)用程序界面的接口,對(duì)組件的設(shè)計(jì)也是對(duì)用戶界面的設(shè)計(jì)。應(yīng)用的組件由可視組件和非可視組件組成:課堂點(diǎn)名應(yīng)用的可視組件包括一個(gè)文本框,用來(lái)獲取學(xué)生的姓名;一個(gè)標(biāo)簽,用來(lái)顯示學(xué)生的地理位置和時(shí)間信息;三個(gè)按鈕,分別用來(lái)記錄學(xué)生位置信息、獲取教師位置坐標(biāo)并與學(xué)生的位置坐標(biāo)計(jì)算二者間距離、以及共享學(xué)生與教師之間的距離信息;一個(gè)垂直布局,用來(lái)安置可視組件;一個(gè)水平布局,用來(lái)安置三個(gè)按鈕。非可視組件包括一個(gè)位置傳感器,用來(lái)獲取當(dāng)前位置信息;一個(gè)計(jì)時(shí)器,用來(lái)獲取當(dāng)前時(shí)間信息;一個(gè)網(wǎng)絡(luò)微數(shù)據(jù)庫(kù),用來(lái)存儲(chǔ)教師的位置信息和學(xué)生與教師之間的距離信息等。
對(duì)學(xué)生端的組件進(jìn)行如下設(shè)置:文本輸入框的提示為“請(qǐng)輸入你的名字”;標(biāo)簽的文本為“我的位置”,字號(hào)為30;按鈕的文本為“定位”、“計(jì)算距離”和“共享”,字號(hào)為24;垂直布局的水平對(duì)齊和垂直對(duì)齊為居中,高度和寬度為充滿;設(shè)置水平布局的水平對(duì)齊和垂直對(duì)齊為居中,高度為自動(dòng),寬度為充滿;網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)的服務(wù)器地址為http://tinyWebdb.17coding.net。
(2)學(xué)生端的邏輯設(shè)計(jì)
在學(xué)生端組件設(shè)計(jì)完成后,需要為每個(gè)組件添加相應(yīng)的行為。
首先,顯示學(xué)生當(dāng)前的位置。當(dāng)定位按鈕被點(diǎn)擊時(shí),首先要用到兩個(gè)全局變量x1,y1,變量x1表示學(xué)生位置坐標(biāo)的緯度,y1表示學(xué)生位置坐標(biāo)中的經(jīng)度,將調(diào)用位置傳感器獲取到的當(dāng)前位置的經(jīng)緯度分別賦值給x1,y1。一般從位置傳感器獲取讀數(shù)時(shí)需要幾秒鐘的時(shí)間,但如果GPS衛(wèi)星信號(hào)受到屏蔽或者設(shè)備并未開啟GPS設(shè)置,會(huì)一直沒有讀數(shù)。然后調(diào)用計(jì)時(shí)器獲取當(dāng)前時(shí)間,并設(shè)置日期時(shí)間格式為“yyyy/MM/dd\nahh:mm:ss”,再獲取變量x1,y1的值,將位置信息和時(shí)間信息合并文本后顯示在標(biāo)簽中。
其次,計(jì)算學(xué)生與教師之間的距離。地球是一個(gè)近乎標(biāo)準(zhǔn)的橢球體,它的赤道半徑為6378.140千米,極半徑為 6356.755千米,平均半徑6371.004千米。假設(shè)地球是一個(gè)完美的球體,它的半徑就是地球的平均半徑,記為R。如果以0度經(jīng)線為基準(zhǔn),那么根據(jù)地球表面任意兩點(diǎn)的經(jīng)緯度就可以計(jì)算出這兩點(diǎn)間的地表距離(這里忽略地球表面地形對(duì)計(jì)算帶來(lái)的誤差,僅僅是理論上的估算值)。假設(shè)兩點(diǎn)都在北半球,第一點(diǎn)A的經(jīng)緯度為(x1,y1),第二點(diǎn)B的經(jīng)緯度為(x2,y2)。根據(jù)三角推導(dǎo),可以得到計(jì)算兩點(diǎn)距離d的如下公式:
這個(gè)公式中,R和d單位是相同的,如果是采用6371.004千米作為半徑,那么d就是千米為單位,如果要使用其他單位,比如米,還需要做單位換算1千米=1000米。
當(dāng)計(jì)算按鈕被點(diǎn)擊時(shí),分別調(diào)用網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)獲取教師位置信息的經(jīng)度和緯度,根據(jù)獲取到的數(shù)值的標(biāo)簽判斷,標(biāo)簽為teacherx就將其數(shù)值賦值給變量x2,表示教師的緯度,標(biāo)簽為teachery就將其數(shù)值賦值給變量y2,表示教師的經(jīng)度。根據(jù)上述公式計(jì)算教師與學(xué)生之間的距離,并將距離值加上單位設(shè)置為標(biāo)簽文本。
在計(jì)算距離過(guò)程中,除了涉及全局變量x1,y1之外,還需要x2,y2,p,d,A,B這幾個(gè)局部變量。定義變量x2表示教師位置坐標(biāo)中的緯度,y2表示教師位置坐標(biāo)中的經(jīng)度,變量d表示學(xué)生和教師之間的距離值,p、A、B分別是為方便公式計(jì)算使用的三個(gè)變量,其中p=■(π取3.1415926),A=(y2-y1)*P,B=(x2-x1)*p。從網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)獲取數(shù)據(jù)與本地?cái)?shù)據(jù)計(jì)算兩點(diǎn)間的距離的邏輯設(shè)計(jì)代碼如見圖1。
最后,共享學(xué)生與教師的距離信息。點(diǎn)擊共享按鈕后,先判斷文本輸入框內(nèi)的文本是否為空。如果為空,則在標(biāo)簽文本中提示“請(qǐng)輸入你的姓名”,否則調(diào)用網(wǎng)絡(luò)微數(shù)據(jù)庫(kù),以文本輸入框內(nèi)輸入的學(xué)生姓名為標(biāo)簽,變量d和計(jì)時(shí)器調(diào)用的當(dāng)前時(shí)間的合并文本為存儲(chǔ)值保存起來(lái)。變量d表示的距離單位為米,當(dāng)前日期時(shí)間格式為“yyyy/MM/dd ahh:mm:ss”。調(diào)用網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)保存數(shù)值時(shí),保存成功后提示“共享成功”。
2.教師端的設(shè)計(jì)與實(shí)現(xiàn)
(1)教師端的組件設(shè)計(jì)
教師端包含下列可視化組件:一個(gè)標(biāo)簽,用以顯示教師的位置信息;三個(gè)按鈕,分別用來(lái)定位教師的坐標(biāo)、掃描學(xué)生的坐標(biāo)顯示在列表中、以及清空列表;一個(gè)列表顯示框,用以顯示每個(gè)學(xué)生的到課信息;一個(gè)水平布局,用來(lái)安置三個(gè)按鈕。非可視組件包括如下:一個(gè)位置傳感器,用來(lái)獲取當(dāng)前位置信息;一個(gè)網(wǎng)絡(luò)微數(shù)據(jù)庫(kù),用來(lái)存儲(chǔ)教師的位置坐標(biāo)和學(xué)生與教師之間的距離。
對(duì)教師端組件的屬性進(jìn)行如下設(shè)置,screen1的水平對(duì)齊為居左,垂直對(duì)齊為居上,允許滾動(dòng)為真;標(biāo)簽的文本為“我的位置”,字號(hào)為24;按鈕的文本為“定位”、“掃描”和“清空”,字號(hào)為18;水平布局的水平對(duì)齊和垂直對(duì)齊為居中,高度為自動(dòng),寬度為充滿;最后設(shè)置網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)的服務(wù)器地址。
(2)教師端的邏輯設(shè)計(jì)
教師端組件設(shè)計(jì)完成后,需為組件添加如下行為:
第一,顯示教師位置信息。當(dāng)定位按鈕被點(diǎn)擊時(shí),調(diào)用位置傳感器獲取當(dāng)前位置的經(jīng)緯度,將其分別賦值給變量x2,y2,并以teacherx、teachery為教師的經(jīng)緯度標(biāo)簽,x2,y2為教師的經(jīng)緯度存儲(chǔ)值保存到網(wǎng)絡(luò)微數(shù)據(jù)庫(kù),并將變量x2,y2所表示經(jīng)緯度的合并文本設(shè)置為標(biāo)簽文本。
在教師端中,也使用網(wǎng)絡(luò)微數(shù)據(jù)庫(kù),當(dāng)網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)保存數(shù)值成功時(shí),提示“共享成功”;當(dāng)網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)發(fā)生Web服務(wù)故障時(shí),提示錯(cuò)誤信息。教師端的定位、共享和顯示教師位置信息的邏輯設(shè)計(jì)代碼如圖2所示。
第二,掃描學(xué)生與教師之間的距離。當(dāng)掃描按鈕被點(diǎn)擊后,以學(xué)生姓名為標(biāo)簽,調(diào)用網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)獲取每個(gè)學(xué)生與教師之間的距離值,成功獲取到距離值后,設(shè)全局變量list為空列表,將每個(gè)標(biāo)簽和距離值的合并文本添加到列表中第一個(gè)列表項(xiàng)的位置,設(shè)置列表顯示框的元素為變量list,列表顯示框的字號(hào)為22等。
四、問(wèn)題分析與優(yōu)化
1.應(yīng)用存在的問(wèn)題
筆者在課堂點(diǎn)名應(yīng)用測(cè)試階段發(fā)現(xiàn)存在如下問(wèn)題:
(1)手機(jī)定位提示,影響用戶體驗(yàn)
當(dāng)?shù)谝淮未蜷_應(yīng)用時(shí),會(huì)出現(xiàn)詢問(wèn)“某應(yīng)用正在嘗試通過(guò)網(wǎng)絡(luò)或者衛(wèi)星對(duì)您的手機(jī)定位,接受還是拒絕”的消息,點(diǎn)擊允許后應(yīng)用才能調(diào)用系統(tǒng)的GPS功能;如果學(xué)生點(diǎn)擊拒絕,課堂點(diǎn)名應(yīng)用就不能統(tǒng)計(jì)該學(xué)生的位置信息。
(2)應(yīng)用程序數(shù)據(jù),面臨覆蓋可能
課堂點(diǎn)名應(yīng)用所用的網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)的服務(wù)器是公用的,可能發(fā)生應(yīng)用數(shù)據(jù)被別的應(yīng)用數(shù)據(jù)覆蓋的情況。學(xué)生端和教師端相關(guān)的數(shù)據(jù)都應(yīng)該同時(shí)存儲(chǔ)在本地微數(shù)據(jù)庫(kù)中,在應(yīng)用關(guān)閉或卸載之后,數(shù)據(jù)不會(huì)隨之丟失。
2.應(yīng)用優(yōu)化
(1)學(xué)生端的優(yōu)化
在學(xué)生端應(yīng)用上,為了防止替代他人作弊共享位置信息的行為,應(yīng)用程序應(yīng)該只允許學(xué)生輸入一次姓名。同時(shí),程序還應(yīng)該將獲取到的位置信息存儲(chǔ)在本地微數(shù)據(jù)庫(kù)中,從本地微數(shù)據(jù)庫(kù)將數(shù)據(jù)共享至網(wǎng)絡(luò)微數(shù)據(jù)庫(kù),防止學(xué)生關(guān)閉應(yīng)用后丟失數(shù)據(jù)還需要重新獲取數(shù)據(jù)。
(2)教師端的優(yōu)化
在教師端應(yīng)用上,應(yīng)該將從網(wǎng)絡(luò)微數(shù)據(jù)庫(kù)中獲得的學(xué)生距離信息存儲(chǔ)在列表中,并將列表存儲(chǔ)在微數(shù)據(jù)庫(kù)中,在應(yīng)用打開后,直接從微數(shù)據(jù)庫(kù)中獲得數(shù)據(jù),顯示在列表顯示框中,防止教師關(guān)閉應(yīng)用后丟失數(shù)據(jù)還需要重新獲取數(shù)據(jù)。在顯示學(xué)生的位置信息時(shí),應(yīng)再做一次判斷,若某個(gè)學(xué)生的距離值在某個(gè)范圍內(nèi)且時(shí)間在當(dāng)前某時(shí)間段范圍內(nèi),就判斷他出勤,否則判斷為曠課。教師端應(yīng)用還需繼續(xù)完善,例如添加一項(xiàng)將學(xué)生的歷史數(shù)據(jù)導(dǎo)出為文件的功能,供教師查閱和統(tǒng)計(jì)學(xué)生出勤的情況。
目前,本應(yīng)用的開發(fā)階段已經(jīng)基本完成,正處于應(yīng)用測(cè)試階段。在測(cè)試階段,我們重點(diǎn)搜集用戶的反饋信息并進(jìn)行調(diào)整和完善代碼。同時(shí),如何解決用戶體驗(yàn)和數(shù)據(jù)庫(kù)存儲(chǔ)的限制等問(wèn)題,將是下一階段的研究重點(diǎn)。
參考文獻(xiàn):
[1]楊洪章,高培成,何飛等.基于S3C2410嵌入式“課堂點(diǎn)名系統(tǒng)”的研究與開發(fā)[J].廊坊師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2011,11(3):29-31.
[2]唐明偉,莊玉良,蔣勛等.基于短信貓的課堂自動(dòng)點(diǎn)名系統(tǒng)[J].現(xiàn)代教育技術(shù),2013(10):115-120.
[3]Saraswat C, Kumar A. An Efficient Automatic Attendance System using Fingerprint Verification Technique[J]. International Journal on Computer Science & Engineering,2010,2(2):264-269.
[4]郭守超,周慶國(guó),鄧常梅等.基于App Inventor 的移動(dòng)學(xué)習(xí)探究[J].現(xiàn)代教育技術(shù),20014(9),121-125.
[5]李穎.基于WPF的課堂教學(xué)管理系統(tǒng)研究與設(shè)計(jì)[J].技術(shù)在線,2011(24)85-87.
(編輯:魯利瑞)