魯云蒙,夏哲雷
(中國計量學(xué)院 信息工程學(xué)院,浙江 杭州 310018)
Android平臺的NFC與Wi-Fi Direct文件傳輸系統(tǒng)的設(shè)計
魯云蒙,夏哲雷
(中國計量學(xué)院 信息工程學(xué)院,浙江 杭州 310018)
針對傳統(tǒng)文件傳輸系統(tǒng)需用戶進行繁瑣的搜索、配對及連接導(dǎo)致建立連接耗時長的問題,提出了一種采用近場通信(Near Field Communication)傳輸設(shè)備參數(shù)輔助建立設(shè)備Wi-Fi Direct快速連接的方法,該方法減少了建立連接所需時間和功耗.系統(tǒng)基于模塊化思想設(shè)計了無線通信、數(shù)據(jù)傳輸和人機交互等功能模塊,采用Wi-Fi Direct點對點無線通信方式,建立了基于TCP的Socket網(wǎng)絡(luò)通信,實現(xiàn)了在較遠的距離以較高的速率傳輸數(shù)據(jù)的功能.經(jīng)驗證,傳輸系統(tǒng)的連接時間和傳輸速率具有明顯優(yōu)勢,穩(wěn)定可靠,具有良好的用戶體驗.
文件傳輸;近場通信;Socket通信
近年來,隨著移動互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,智能手機變得十分普及,其性能也在不斷的提升,用戶也越來越注重體驗.如今,手機用戶之間進行數(shù)據(jù)傳輸共享也越來越重要.藍牙傳輸作為移動設(shè)備主流的傳輸工具已經(jīng)發(fā)展到了4.0,其理論最高傳輸速度為24 Mb/s,即便如此,它在傳輸速度和傳輸距離上還是跟不上用戶的需求.同時,在用戶體驗上,藍牙[1]還存在操作過程繁瑣等問題.因此,如何提高手機之間文件傳輸?shù)男?改進操作,提升用戶體驗是急需解決的關(guān)鍵問題.
NFC是一種近距離無線通信技術(shù)[2],在所有無線通信技術(shù)中,NFC技術(shù)連接時間最短,理論連接時間是0.1 s,同時它還提供了多種加密方式,NFC手機采用SE芯片硬件加密和軟件加密相結(jié)合,保證數(shù)據(jù)的安全.因此,NFC在小數(shù)據(jù)的傳輸中表現(xiàn)相當(dāng)優(yōu)秀,可以用來傳遞少量重要的信息.Wi-Fi Direct是一種新興的無線連接技術(shù),從Android4.0[3]開始,Wi-Fi Direct功能在Android上實現(xiàn). Wi-Fi Direct的實現(xiàn)允許設(shè)備間點對點地進行Wi-Fi連接,無需要借助于AP和其他接入點[4].Wi-Fi Direct具有傳輸距離遠、傳輸速率高的特點,其理論傳輸速度為250 Mb/s,傳輸距離為200 m,具有明顯優(yōu)于藍牙4.0的特性,適用于大文件傳輸.因此,Wi-Fi Direct在數(shù)據(jù)傳輸上有取代藍牙的態(tài)勢.為了簡化手動操作,縮短連接過程時間,取得良好的用戶體驗,保證數(shù)據(jù)的安全并提供優(yōu)秀的傳輸性能,本系統(tǒng)提出將NFC技術(shù)與Wi-Fi Direct技術(shù)有效的結(jié)合起來.利用NFC技術(shù)的連接時間短,安全性高的特點,用于傳輸設(shè)備參數(shù),輔助進行Wi-Fi Direct的連接,接著采用Wi-Fi Direct的傳輸速度快、傳輸距離遠的特點高效的傳輸大文件數(shù)據(jù)流.
NFC技術(shù)與Wi-Fi Direct技術(shù)在現(xiàn)階段都屬于比較新的技術(shù),目前,基于NFC和Wi-Fi Direct的應(yīng)用都還處于發(fā)展起步的階段,國內(nèi)外都正在對它們的應(yīng)用進行研究與探索.NFC技術(shù)雖然已經(jīng)在公交卡、門禁卡和NFC支付錢包等領(lǐng)域進行了研究,但由于NFC硬件還沒有成為智能手機的標(biāo)配,其應(yīng)用還未普及[5],也沒有出現(xiàn)文獻提出用NFC快速建立Wi-Fi Direct的連接.本研究將NFC與Wi-Fi Direct相結(jié)合實現(xiàn)文件傳輸,發(fā)揮各自技術(shù)特點,先進可行,滿足設(shè)計要求,通過實踐驗證了其性能.
1.1 系統(tǒng)的結(jié)構(gòu)模型
系統(tǒng)設(shè)計基于模塊化思想,將系統(tǒng)劃分為多個功能模塊,各功能模塊相互交互、協(xié)調(diào)工作.該文件傳輸系統(tǒng)的結(jié)構(gòu)模型如圖1,系統(tǒng)模型從下至上分為無線通信模塊、數(shù)據(jù)傳輸模塊和人機交互模塊三個功能模塊.
圖1 文件傳輸系統(tǒng)的結(jié)構(gòu)模型Figure 1 Overall structure of file transfer system
無線通信模塊結(jié)合了NFC通信和Wi-Fi Direct點對點通信[6],旨在建立起設(shè)備的連接,為文件傳輸提供無線通信基礎(chǔ),它包含Wi-Fi P2P服務(wù)的啟動、NFC讀寫輔助Wi-Fi Direct設(shè)備的匹配以及Wi-Fi Direct搜索連接等功能的實現(xiàn).文件傳輸模塊包括TCP的Socket通信、數(shù)據(jù)模型和文件操作,基于TCP建立Socket通信進行字節(jié)流的傳輸;數(shù)據(jù)模型完成對文件到數(shù)據(jù)流以及數(shù)據(jù)流到文件的轉(zhuǎn)化等;文件操作主要是完成文件選定以及實現(xiàn)文件存儲.該模塊以無線通信模塊為基礎(chǔ),建立在設(shè)備連接之后,擔(dān)任著連接無線通信模塊與人機交互模塊的角色,通過接收用戶的指令,利用無線通信模塊提供的網(wǎng)絡(luò)服務(wù)向用戶作出響應(yīng),對接收到的數(shù)據(jù)進行分類存儲.人機交互模塊包括UI顯示和用戶操作,UI顯示包含Wi-Fi Direct設(shè)備信息的顯示、連接狀態(tài)的顯示、傳輸開始以及完成時的提示和傳輸進度顯示等顯示內(nèi)容;用戶操作主要包含文件選擇操作以及手機觸碰操作等.
1.2 系統(tǒng)的工作流程
系統(tǒng)的軟件工作流程如圖2,總體工作流程可概括為先連接后傳輸.程序啟動后,開啟Wi-Fi P2P服務(wù),并將Wi-Fi Direct設(shè)備參數(shù)(Wi-Fi Direct名稱和MAC地址)存儲于模擬NFC中,等待手機NFC模塊相互靠近傳遞Wi-Fi Direct設(shè)備參數(shù),隨后,發(fā)送端手機向接收端手機發(fā)起Wi-Fi Direct連接.設(shè)備連接成功之后,接收方新建一個Socket服務(wù)端,發(fā)送方新建一個Socket客戶端并連接到服務(wù)端,Socket通信就此建立,雙方通過Socket通信的Read()和Write()方法實現(xiàn)數(shù)據(jù)的發(fā)送與接收,傳輸完畢后,雙方執(zhí)行close()方法關(guān)閉Socket通信.
圖2 軟件工作流程圖Figure 2 Flow chart of the software
2.1 設(shè)備的連接
設(shè)備的搜索與連接結(jié)合了NFC與Wi-Fi Direct兩種技術(shù).NFC有三種應(yīng)用模式分別為卡模擬模式、點對點模式和讀卡器模式[7].Android4.4已經(jīng)加入了卡仿真方法,基于主機的卡仿真HCE(Host-based Card Emulation)允許手機支持卡模擬模式,讓任何Android應(yīng)用程序來模擬卡直接和讀寫器進行通信.在HCE技術(shù)中,NFC讀卡器直接與模擬卡的主機CPU進行通信,如圖3.本模擬系統(tǒng)采用基于主機的卡仿真技術(shù)應(yīng)用開啟一個HCE服務(wù),將應(yīng)用程序模擬成一個NFC卡.NFC卡中的數(shù)據(jù)為本機的Wi-Fi Direct的設(shè)備參數(shù),數(shù)據(jù)被傳輸?shù)奖緳C的CPU中.發(fā)送端手機NFC通過與接收端手機CPU通信,從而讀取到接收端手機的設(shè)備Wi-Fi Direct名稱和MAC地址.使用NFC功能時需先在AndroidManifest.xml文件中加入NFC的硬件訪問權(quán)限android.permission.NFC,在發(fā)現(xiàn)NDEF_DISCOVERED的action之后調(diào)用NdefMassage相關(guān)的API讀取需要的NDEF數(shù)據(jù)[8].
圖3 基于主機的卡仿真HCE與NFC Reader通信原理圖 Figure 3 Communication principle diagram of Host-based simulation HCE card andNFC Reader
該系統(tǒng)的設(shè)備搜索與連接和傳統(tǒng)的Wi-Fi Direct連接應(yīng)用采用同樣的搜索機制,在一定范圍內(nèi)讀取到啟用了Wi-Fi P2P服務(wù)的設(shè)備的設(shè)備名、MAC地址和連接狀態(tài)等設(shè)備信息,設(shè)備信息以device列表的形式反饋.不同之處在于,傳統(tǒng)的Wi-Fi Direct連接應(yīng)用通過點擊device列表連接指定設(shè)備;該系統(tǒng)采用NFC傳遞設(shè)備參數(shù),與device列表進行自動匹配并發(fā)起連接.Wi-Fi Direct在連接過程中會確定其中一個設(shè)備作為Group Owner[9],其他的設(shè)備作為Clients,在協(xié)商好Group Owner之后,會調(diào)用DHCP相關(guān)的狀態(tài)機動態(tài)的為它的Clients成員分配IP.Group Owner自身的IP為"192.168.49.1",其值是固定的,Clients的IP為"192.168.49.X",X為動態(tài)分配值,每個Client分配的IP中,X互不相同.Wi-Fi Direct在連接成功之后,其連接對象的連接類型、MAC地址和IP地址等信息會存儲在的一個名為arp系統(tǒng)文件夾中,同時,設(shè)備的MAC地址信息在device列表中能夠被獲取到.因此,Group Owner可以通過MAC地址從arp文件中讀取到與其連接的任何一個Client的IP地址.
在Wi-Fi Direct的搜索與連接過程中加入NFC會存在兩個方面的優(yōu)勢:1)連接過程由手動變?yōu)樽詣?簡化操作;2)NFC信息的傳遞確定了文件傳輸?shù)陌l(fā)送方與接收方,無需用戶再次選擇文件發(fā)送的對象.用戶只需要一次“碰撞”就可迅速完成設(shè)備的連接以及確定發(fā)送對象.
2.2 數(shù)據(jù)傳輸
為了保證傳輸系統(tǒng)數(shù)據(jù)傳輸?shù)姆€(wěn)定性,本系統(tǒng)采用基于TCP/IP的可靠通信[10].Android的SDK中已經(jīng)為我們提供了Socket網(wǎng)絡(luò)通信的相關(guān)API,它們在Socket和ServerSocket兩個類中,分別供客戶端和服務(wù)器端調(diào)用.Socket通信中,首先由客戶端發(fā)起通信,服務(wù)器阻塞的等待客戶端發(fā)送數(shù)據(jù)過來并作出響應(yīng).該系統(tǒng)的客戶端與服務(wù)端是雙向的,實際傳輸中,將發(fā)送端手機作為Socket客戶端,接收端手機作為Socket服務(wù)器端.當(dāng)兩部手機的NFC靠近的時候,服務(wù)器端手機將會開啟一個Socket服務(wù)端的線程,該線程主要完成ServerSocket的創(chuàng)建,然后調(diào)用accept()方法阻塞的等待客戶端的連接.客戶端手機將開啟一個Socket客戶端線程,該線程調(diào)用Socket()發(fā)起對服務(wù)端的連接.
由于Wi-Fi Direct的底層實現(xiàn)機制中,Group Owner無法人為指定,本系統(tǒng)所建立的Socket服務(wù)端并不一定在Group Owner所在的主機上,因此,Socket通信的建立分三種情況:1)Socket服務(wù)端在Group Owner的主機上時,Socket客戶端連接到IP地址為"192.168.49.1"上的Socket服務(wù)端;2)Socket客戶端在Group Owner所在的主機上時,Socket服務(wù)端IP地址為"192.168.49.X",該IP地址為Wi-Fi Direct連接過程中DHCP所分配,通過Wi-Fi Direct的Clients的MAC地址從arp文件中獲取,獲取到IP地址后后,Socket客戶端向該IP地址上的Socket服務(wù)端發(fā)起連接;3)Socket服務(wù)端與客戶端均不在Group Owner上時,Socket服務(wù)端與客戶端的IP地址分別為"192.168.49.X"與"192.168.49.Y",對等設(shè)備均為Client,Client之間并不直接連接,而是存在與Group Owner建立的局域網(wǎng)當(dāng)中,Socket客戶端需要通過Group Owner才能獲取到Socket服務(wù)端的IP地址,Group Owner運用Broadcast機制將Socket服務(wù)端的IP地址傳遞到客戶端.
在Android的實現(xiàn)當(dāng)中,Socket數(shù)據(jù)流封裝成了輸出流OutputStream和輸入流InputStream,它們以字節(jié)為單位進行傳輸.本系統(tǒng)將文件封裝成DataInputStream和DataOutputStream,可以直接與Socket的字節(jié)流進行對接.數(shù)據(jù)封裝好之后即可調(diào)用Socket的Read()和Write()方法進行數(shù)據(jù)的傳輸.
2.3 文件管理
本系統(tǒng)文件的管理主要包括兩個主要的部分,即文件選擇與文件存儲.對于發(fā)送方,需要獲取所選發(fā)送文件的統(tǒng)一資源標(biāo)示符(Uniform Resource Identifier),程序調(diào)用Activity中的startActivityForResult()啟動Intent.Action_Get_Content幫助用戶跳轉(zhuǎn)到文件目錄,用戶完成文件選擇之后,執(zhí)行onActivityResult()回調(diào)方法返回主程序,并返回所選文件的URI,完成選擇之后文件的路徑會顯示在界面上.接收方接收到數(shù)據(jù)流之后,會指定一個路徑新建文件,用于裝載數(shù)據(jù)流還原文件,接收完成之后,系統(tǒng)提示用戶文件的存儲路徑及文件名,方便用戶查看.
系統(tǒng)采用NFC結(jié)合Wi-Fi Direct傳輸方案,針對傳統(tǒng)傳輸方案在設(shè)備連接上做出改進,相比常用的Wi-Fi Direct應(yīng)用,它在設(shè)備連接的過程中不需用戶手動進行設(shè)備的搜索和連接.如表1,為手機自帶的Wi-Fi Direct連接應(yīng)用與本系統(tǒng)應(yīng)用在設(shè)備連接上的耗時比較.智能設(shè)備在Wi-Fi Direct設(shè)備連接過程中會受到通信距離和手機配置等因素的影響,為了保證嚴謹性,測試在同一組手機中進行,且盡量保證等量的通信距離,此次測量過程均包含手動操作消耗的時間.測試機型為LG Nexus 5和索尼Xperia C3.由于受手指觸碰和點擊操作影響較大,為保證數(shù)據(jù)的可靠,測試中連續(xù)測量50組數(shù)據(jù)取平均值.
表1 NFC結(jié)合Wi-Fi Direct和Wi-Fi Direct的連接耗時對比
Table 1 Comparison of connection time consuming between NFC combined with Wi-Fi Direct and Wi-Fi Direct
方式NFC結(jié)合Wi-FiDirectWi-FiDirect連接時間/ms611212541
表1表明,Wi-Fi Direct在連接過程中加入NFC功能進行輔助能夠明顯的減少連接耗時,NFC“觸碰”相比于手動點擊操作具有較好的用戶體驗.
目前,手機中主流的文件傳輸應(yīng)用主要采用的是Wi-Fi熱點傳輸和藍牙傳輸兩種方式,Wi-Fi Direct由于出現(xiàn)時間較晚,其應(yīng)用并不廣泛,理論上,Wi-Fi Direct在傳輸速率上具有更好的性能.本系統(tǒng)采用Wi-Fi Direct作為主要數(shù)據(jù)的傳輸方式,與Wi-Fi熱點傳輸和藍牙傳輸兩種方式進行速率上的對比,對比測試數(shù)據(jù)如表2.由于實際測試中,傳輸開始與結(jié)束的采點存在誤差,為了盡量減小誤差,保證測量的準(zhǔn)確性,本次傳輸測試選擇較大的文件,并且測量了50組數(shù)據(jù)分別取其平均值,計算出相應(yīng)速度.
表2表明,傳輸同樣大小的文件,Wi-Fi Direct耗時比藍牙短得多,傳輸速率高出藍牙近10倍.苗振興[10]在文獻中采用Wi-Fi熱點方式進行傳輸,測試得到其傳輸速率在600 kB/s以上,排除設(shè)備的影響,我們測試得到的Wi-Fi熱點傳輸速率約1.5 MB/s,而采用NFC結(jié)合Wi-Fi Direct傳輸方案測得的傳輸速率約2.1 MB/s,高出Wi-Fi熱點傳輸近1/3.除了較高的傳輸速度之外,Wi-Fi Direct的有效傳輸距離也很遠,約200米.由于連接耗時和傳輸耗時都大大降低,傳輸一定大小的文件時,功耗也有所降低.經(jīng)比較,NFC結(jié)合Wi-Fi Direct的文件傳輸方案在文件傳輸應(yīng)用中具有連接快、體驗好、速率高的特性.
表2 Wi-Fi Direct、Wi-Fi熱點和藍牙傳輸速度對比
Table 2 Comparison of transmission speed between Wi-Fi Direct、Wi-Fi Hot and Bluetooth
文件大小/M方式時間/s速度/(m·s-1)48.8340Wi-FiDirect22.92.13Wi-Fi熱點31.51.55藍牙325.530.15Wi-FiDirect18.92.11Wi-Fi熱點27.11.48藍牙270.270.148
該研究通過將NFC與Wi-Fi Direct技術(shù)相結(jié)合,實現(xiàn)數(shù)據(jù)互傳,減少了整個傳輸過程的時間,操作簡便,同時降低功耗,并且改善了用戶體驗.經(jīng)測試,系能性能良好,具有實用性和創(chuàng)新性.該系統(tǒng)的運用需要設(shè)備同時具備Wi-Fi Direct功能和NFC功能,對設(shè)備的要求比較高,但隨著Android與移動設(shè)備的發(fā)展,具備這兩項功能的移動手機將普及,故具有一定推廣應(yīng)用價值.
[1] 馬捷,鄂金龍.用NFC技術(shù)快速建立藍牙安全連接問題研究[J].計算機應(yīng)用與軟件,2013,30(3):207-212. MA Jie, E Jinlong. Research on fast establishing Bluetooth secure connection with NFC technology[J].Computer Applications and Software,2013,30(3):207-212.
[2] 趙特木.基于Android平臺的NFC信息管理系統(tǒng)的設(shè)計與
實現(xiàn)[D].大連:大連理工大學(xué),2013. ZHAO Temu. Design and implementation of a NFC message manage system based on Android platform[D].Dalian:Dalian University of Technology,2013.
[3] 楊艾平.基于Wi-Fi Direct的Android文件傳輸研究與實現(xiàn)[D].上海:東華大學(xué),2014. YANG Aiping. Research and implementation of files’ transfer system which based on Android’s Wi-Fi Direct API[D].Shanghai:Donghua University,2014.
[4] 施金蘭.基于Android平臺的網(wǎng)絡(luò)共享研究與實現(xiàn)[D].上海:華東師范大學(xué),2011. SHI Jinlan. Study and implementation of network sharing based on Android[D].Shanghai: East China Normal University,2011.
[5] 馬捷,鄂金龍.基于近場通信的WiFi傳輸連接方案[J].計算機工程,2013,39(6):1-6. MA Jie, E Jinlong.Wi-Fi transmission connection scheme based on Near Field Communication[J].Computer Engineering,2013,39(6):1-6.
[6] 李靜遠.P2P系統(tǒng)結(jié)構(gòu)與數(shù)據(jù)傳輸策略研究與實現(xiàn)[D].安徽:中國科學(xué)技術(shù)大學(xué),2009. LI Jingyuan. Peer-to-peer system structures and data transmission strategies design and implementation[D].Anhui: University of Science and Technology of China,2009.
[7] 陸凱,孟旭東.NFC移動通信終端的研究與應(yīng)用[J].現(xiàn)代電信科技,2008,38(11):18-21. LU Kai, MENG Xudong. The research and application of NFC in mobile communication terminal[J].Modern Science Technology of Telecommunication,2008,38(11):18-21.
[8] 宋海燕.基于Android的NFC文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2012. SONG Haiyan. Design and implementation of NFC file transfer system based on Android[D].Beijing: Beijing University of Posts and Telecommunications,2012.
[9] 泰凱文.基于Android平臺利用Wi-Fi Direct設(shè)計并實現(xiàn)音視頻共享系統(tǒng)[J].軟件,2012,33(7):71-73. TAI Kaiwen. Design and implement the system to share audio and video using WiFi Direct based on the Android platform[J].Software,2012,33(7):71-73.
[10] 苗振興.基于Android平臺的WIFI文件傳輸系統(tǒng)的研究與實現(xiàn)[D].安徽:安徽工程大學(xué),2013. MIAO Zhenxing. Research and implementation of WIFI file transfer system based on Android platform[D].Anhui: Anhui Polttechnic University,2013.
Design of NFC and Wi-Fi Direct file transfer systems based on Android platforms
LU Yunmeng, XIA Zhelei
(College of Information Engineering, China Jiliang University, Hangzhou 310018, China)
In view of the problem of the long time needed to establish connection among traditional file transmission systems that is caused by the fussy operations of necessary search, match and connection of the users, this research proposed a method based on NFC transmission equipment parameters to help establish a Wi-Fi Direct connection. The method reduced the time and power needed for the connection establishment. Based on the thinking of modularization the system designed such founction modules as wireless communication, data transmission, human-computer interaction and so on. It used Wi-Fi Direct point to point wireless communication and established Socket network communication based on TCP to realize the function of data transmission in further distance at a higher speed. The transmission system was verified to have obvious advantages on the time of establishing connection and the speed of transmission. Moreover, the system is stable and reliable and has good user experience.
file transfer; near field communication; Socket communication
1004-1540(2015)02-0232-06
10.3969/j.issn.1004-1540.2015.02.020
2014-12-06 《中國計量學(xué)院學(xué)報》網(wǎng)址:zgjl.cbpt.cnki.net
浙江省自然科學(xué)基金資助項目(NO.LY12F01011).
TP393
A