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