陳三清 殷鵬
摘要;隨著當(dāng)前移動互聯(lián)網(wǎng)技術(shù)的發(fā)展和手機(jī)的日趨普及,很多傳統(tǒng)的應(yīng)用被開發(fā)出來運用到手機(jī)上;該文針對傳統(tǒng)點名方式的不足設(shè)計出一款點名軟件,實現(xiàn)多途徑的手機(jī)點名,該文首先簡介了實現(xiàn)Android手機(jī)點名的藍(lán)牙技術(shù)和二維碼技術(shù),接著闡述了點名系統(tǒng)的總體架構(gòu)、APP功能設(shè)計及界面設(shè)計問題,最后重點討論了藍(lán)牙簽到和掃碼簽到的程序編程實現(xiàn)。
關(guān)鍵詞:Android;藍(lán)牙;二維碼;手機(jī)點名;簽到
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)07-0095-04
點名作為一種考勤方法,常用于高校課程教學(xué)過程中,用來考查學(xué)生到課情況,掌控課程紀(jì)律,促進(jìn)學(xué)生主動積極到課學(xué)習(xí)。點名的方式有傳統(tǒng)紙質(zhì)點名的,也有使用指紋技術(shù)實現(xiàn)的、多媒體投影技術(shù)實現(xiàn)的等多種方式,這些方法各有優(yōu)點,也有明顯的缺點,都很難同時滿足資金、效率、易用性等多方面的要求。隨著移動互聯(lián)網(wǎng)技術(shù)的發(fā)展和手機(jī)的日趨普及,當(dāng)前很多傳統(tǒng)的應(yīng)用被開發(fā)出來運用到手機(jī)上,手機(jī)上的各種應(yīng)用也是層出不窮,基于藍(lán)牙技術(shù)或二維碼技術(shù)的手機(jī)應(yīng)用也逐漸多了起來,也出現(xiàn)了基于Android手機(jī)的點名軟件;由于藍(lán)牙和二維碼掃碼幾乎是當(dāng)前所有智能手機(jī)必備的基本功能,而藍(lán)牙的使用和二維碼的掃描都非常簡單,結(jié)合這兩者的技術(shù)優(yōu)勢,使用Java應(yīng)用開發(fā)技術(shù),本文設(shè)計并實現(xiàn)了一款綜合功能軟件,提供多途徑點名方式,力圖解決傳統(tǒng)點名方法中存在的問題,實現(xiàn)簡單快捷的點名,提高課堂教學(xué)效率。
1關(guān)鍵技術(shù)簡介
1.1藍(lán)牙技術(shù)
藍(lán)牙(Bluetooth)是一種支持設(shè)備短距離(一般10m內(nèi))通信的無線電技術(shù),能在包括移動電話、PDA、無線耳機(jī)、筆記本電腦、相關(guān)外設(shè)等眾多設(shè)備之間進(jìn)行無線信息交換。藍(lán)牙采用分散式網(wǎng)絡(luò)結(jié)構(gòu)以及快跳頻和短包技術(shù),支持點對點及一點對多點通信,工作在全球通用的2.4GHz ISM(即工業(yè)、科學(xué)、醫(yī)學(xué))頻段,其數(shù)據(jù)速率為1Mbps。藍(lán)牙采用時分雙工傳輸方案實現(xiàn)全雙工傳輸。自從愛立信公司2001年8月推出第一款內(nèi)置藍(lán)牙手機(jī)索尼愛立信T39mc以后,藍(lán)牙功能幾乎是所有智能手機(jī)標(biāo)準(zhǔn)配置之一。
藍(lán)牙適配器就是各種數(shù)碼產(chǎn)品能適用藍(lán)牙設(shè)備的接口轉(zhuǎn)換器,它采用了全球通用的短距離無線連接技術(shù)。利用藍(lán)牙技術(shù),能夠有效的簡化移動通信終端設(shè)備之間的通信,也能夠成功地簡化設(shè)備與因特網(wǎng)之間的通信,從而數(shù)據(jù)傳輸變得更加迅速高效,為無效通信擴(kuò)寬道路。
利用藍(lán)牙技術(shù)進(jìn)行應(yīng)用開發(fā)時用到的Java包主要是an-droi&bluetooth,它提供主要類包括藍(lán)牙適配器類BluetoothA-dapter、藍(lán)牙裝置類BluetoothDevice、藍(lán)牙管理類Bluetooth-Manager、藍(lán)牙服務(wù)器端類BluetoothServerSocket、藍(lán)牙客戶端類BluetoothSocket等,通過調(diào)用這些類包中的方法可以快速設(shè)計基于藍(lán)牙技術(shù)的各種應(yīng)用。
要在Android應(yīng)用程序中使用藍(lán)牙特性,必須聲明兩個藍(lán)牙權(quán)限;
1.2二維碼技術(shù)
二維條形碼最早發(fā)明于日本,它是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的,在代碼編制上巧妙地利用構(gòu)成計算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個與二進(jìn)制相對應(yīng)的幾何形體來表示文字?jǐn)?shù)值信息,通過圖像輸入設(shè)備或光電掃描設(shè)備自動識讀以實現(xiàn)信息自動處理。它具有條碼技術(shù)的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉(zhuǎn)變化等特點。
二維碼的名稱是相對于一維碼來說的,比如以前的條形碼就是一個“一維碼”,它的優(yōu)點有:二維碼存儲的數(shù)據(jù)量更大;可以包含數(shù)字、字符,及中文文本等混合內(nèi)容;有一定的容錯性(在部分損壞以后可以正常讀?。?;空間利用率高等。
QR(Quick-Response)code是被廣泛使用的一種二維碼,解碼速度快。ZXing是Google提供的一個開源Java類庫用于解析多種格式的條形1D/2D條形碼,能夠?qū)R、DataMatrix二維碼以及條形碼進(jìn)行解碼。由于二維碼生成和解碼過程實際是一個非常復(fù)雜過程,如果每一個開發(fā)者都要自己編寫所有的過程的話,將十分費時和花費精力,因此目前基于二維碼的應(yīng)用開發(fā)一般都會用到Zxing類庫,ZXing類庫包含了應(yīng)用開發(fā)所需編碼、解碼的模塊和函數(shù),在開發(fā)程序時可以借助ZX-ing提供的類庫,調(diào)用這些模塊或函數(shù),可以大大降低開發(fā)過程的復(fù)雜性,快速的開發(fā)出屬于自己特定應(yīng)用的二維碼解碼軟件。
2點名軟件總體設(shè)計
2.1總體設(shè)計概述
本系統(tǒng)基于客戶端—服務(wù)器架構(gòu)設(shè)計(如圖1),分為服務(wù)端和客戶端程序,分別采用不同的技術(shù)實現(xiàn),客戶端程序通過網(wǎng)絡(luò)與服務(wù)器進(jìn)行交互和數(shù)據(jù)通信。
服務(wù)器端:主要用來存儲學(xué)生信息、班級信息、課程信息等,以及完成與客戶端的數(shù)據(jù)交互,包括登錄驗證、數(shù)據(jù)請求、數(shù)據(jù)傳送及數(shù)據(jù)保存;服務(wù)器端采用PHP+MySQL+Tomcat方式實現(xiàn),PHP作為后臺開發(fā)語言,MySQL用來存儲數(shù)據(jù),Tomcat服務(wù)器用來響應(yīng)客戶端的服務(wù)請求及返回客戶端所需的數(shù)據(jù)。
Android客戶端:是設(shè)計的重心,用來實現(xiàn)系統(tǒng)的各項功能,采用Android Studio+Java的方式開發(fā),Android Studio是Google公司力推的開發(fā)環(huán)境,具有智能化、集成度高、使用簡單高效的特點,使用Android Studio代替eclipse開發(fā)環(huán)境是An-droid應(yīng)用開發(fā)的必然發(fā)展趨勢。
2.2APP端功能模塊設(shè)計
根據(jù)實際使用需要和設(shè)計要求,App端總體功能模塊劃分如下:
APP端可以兩種類型的賬號登錄,教師賬號和學(xué)生賬號,不同賬號顯示不同的界面。以教師帳號登錄系統(tǒng),如下圖3所示,系統(tǒng)主要包括四種功能;
1)常規(guī)點名:將傳統(tǒng)的紙質(zhì)點名方式通過Android的控件模擬,實現(xiàn)通常的“正常”、“遲到”、“曠課”、“請假”等情況;
2)藍(lán)牙點名;開啟藍(lán)牙設(shè)備,掃描;周圍的手機(jī)設(shè)備,將掃描到的設(shè)備記錄下來,記錄到服務(wù)器,完成快速點名。
3)掃描點名:教師帳號登錄成功后生成課程的二維碼,學(xué)生帳號登錄程序后掃描二維碼,就可以自動簽到。
4)簽到統(tǒng)計:可以按不同的學(xué)期,統(tǒng)計某一門課程所有學(xué)生的出勤情況。
以學(xué)生帳號登錄系統(tǒng),如下圖4所示,系統(tǒng)主要包括兩種功能;
1)掃碼簽到:掃描教師端課程二維碼,自動完成簽到。
2)簽到統(tǒng)計:可以按課程查詢自己的出勤情況,包括曠課、遲到、請假等次數(shù)情況。
3系統(tǒng)實現(xiàn)
3.1藍(lán)牙簽到實現(xiàn)
用戶以教師帳號登錄系統(tǒng),進(jìn)入主界面(圖3)后,點擊“藍(lán)牙簽到”進(jìn)入藍(lán)牙簽到的主界面(圖5)。
然后就可以開始點名,使用流程如下;
1)通過“設(shè)置”按鈕開啟藍(lán)牙功能,并使手機(jī)對附近所有的藍(lán)牙設(shè)備可見;
2)點擊“開始搜索”按鈕開啟藍(lán)牙掃描,掃描附件藍(lán)牙設(shè)備;
3)掃描結(jié)束后,通過“簽到”按鈕,選擇課程(如圖6),經(jīng)過與數(shù)據(jù)庫中的記錄比對成功后,將名單寫入數(shù)據(jù)庫,一次性完成點名操作。
具體實現(xiàn)時,需首先獲取藍(lán)牙設(shè)置適配器,
BluetoothAdapter bluetoothAdapter—BluetoothAdapter.getDe{aultAdapter();
接著使用以下語句調(diào)用系統(tǒng)設(shè)置界面,開啟藍(lán)牙,使手機(jī)對附近所有的藍(lán)牙設(shè)備可見:
startActivity{new Intent(Settings.ACTION_BLUE-TOOTH_SETTINGS)};
然后設(shè)置搜索按鈕的監(jiān)聽事件,開啟藍(lán)牙掃描,搜索附件的設(shè)備:
由于搜索的藍(lán)牙設(shè)備不斷出現(xiàn),設(shè)備列表需要不斷更新,故需要設(shè)置廣播監(jiān)聽,當(dāng)有設(shè)備出現(xiàn)時,將設(shè)備添加到設(shè)備列表中:
要實現(xiàn)此功能,需在Activity中的onStart()方法中,注冊廣播接收器:
如圖所示,當(dāng)點擊“簽到”按鈕時,可以根據(jù)當(dāng)前課程,將當(dāng)前設(shè)備名稱與班級名單匹配后,再寫入到服務(wù)器中,完整自動點名,實現(xiàn)如下:
3.2二維碼簽到實現(xiàn)
二維碼掃碼簽到需首先以教師帳號登錄,進(jìn)入用戶主界面后,點擊“二維碼生成”,可選擇不同課程(圖7),生成不同的二維碼(如圖8):
要實現(xiàn)生成二維碼,首先需在項目工程中導(dǎo)入二維碼架包Zxing,然后調(diào)用架包中的方法生成二維碼,使用非常簡單;
其中,QRUtils.eneodeToQRWidth()方法使用指定寬度生成一張Bitmap類型的圖片,也即是二維碼。
第二步,學(xué)生以學(xué)生帳號登錄,點擊圖中的“掃描簽到”,對準(zhǔn)第一步中二維碼圖片開始掃碼,就可以很快完成簽到(如圖9),如下:
此ScanBasicActivity是一個實現(xiàn)掃碼的基本功能框架,handlescanData()是抽象方法,可以根據(jù)實際應(yīng)用需要,再實現(xiàn)其具體方法。
第二步,需要實現(xiàn)CameraBarcodeScan類的Camerascan-CallBack回調(diào)方法,初始化CameraBarcoclescan對象,使其隨Activity生命周期狀態(tài)的變化而變化。ScanActivity繼承Scan-BasicActivity并重寫getCameraScanData()方法。
ScanActivity.java是實現(xiàn)掃描的主要過程,需重寫Activi-ty的生命周期中的函數(shù),在其中實現(xiàn)CameraBarcodeScan對象使用狀態(tài)變化。getCameraScanData(String data)是回調(diào)方法,data是返回給用戶處理的字符串,在這里就是掃碼后獲得的二維碼結(jié)果。
最后一步是handleScanData()方法的實現(xiàn)問題,因為生成的二維碼是"id:"+"課程ID"的形式,因而掃碼的結(jié)果是獲得了一個指定形式的字符串,如;“id:01”,由于課程編號是唯一的,通過查詢課程編號可以獲取班級學(xué)生名單;再在學(xué)生名單中查詢指定帳號,如果存在與指定登錄號匹配的帳號,就可在相應(yīng)的課程記錄上標(biāo)記簽到成功。
4結(jié)束語
課堂點名是高校教學(xué)中一個必不可少的環(huán)節(jié),簡化傳統(tǒng)點名過程,凸顯教學(xué)主體地位,本文根據(jù)實際情況設(shè)計了一款集常規(guī)點名、藍(lán)牙點名和掃描簽到三種點名方式于一體的手機(jī)軟件,可在Android手機(jī)上利用藍(lán)牙技術(shù)、二維碼技術(shù)實現(xiàn)簡單快捷的點名簽到,在手機(jī)日益普及的當(dāng)今,這給高校教師提供了一種全新的點名方式,也將極大的提高點名效率,同時師生也可及時地了解課程簽到信息。由于藍(lán)牙技術(shù)和二維碼技術(shù)是當(dāng)前移動應(yīng)用開發(fā)中比較前沿的技術(shù),而本項目研究應(yīng)用了這一最新技術(shù),因而本項目具有一定的創(chuàng)新性,在高校中具有潛在的應(yīng)用前景。