999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android平臺的WiFi文件傳輸系統的設計

2013-01-06 11:28:20苗振興安徽工程大學計算機與信息學院安徽蕪湖241000
長江大學學報(自科版) 2013年7期
關鍵詞:系統

苗振興 (安徽工程大學計算機與信息學院,安徽 蕪湖241000)

馬幼鳴 (北京理工大學信息與電子學院,北京100081)

周鳴爭 (安徽工程大學計算機與信息學院,安徽 蕪湖241000)

智能手機除了基本的通話功能以外,還具備PDA的主要功能,包括辦公、上網、學習、游戲等。智能手機之間的通信除了移動運營商提供的GPRS或3G方式以外,通常還有紅外、藍牙和WiFi方式,而這3種通信方式中目前最常用于手機之間直接互傳文件的仍然是藍牙。藍牙技術 (Bluetooth,802.15標準)是一種短距離無線通信技術,其傳輸最大速率為1Mb/s,最遠傳輸距離為10m。然而,智能手機硬件性能的提高和存儲容量的提升日新月異,藍牙的傳輸效率就難以滿足用戶日益增長的使用需求。無線局域網的WiFi技術[1](Wireless Fidelity,802.11b標準)也是一種用于短距離無線網絡傳輸的標準,相對于藍牙技術,WiFi有著更加強大的優勢,主要表現在傳輸速度更快和傳輸距離更遠。如今WiFi技術已經不僅用于電腦的聯網方式,它同時也被集成于各種終端設備中,用于互聯網的連接。如果能夠實現用WiFi替代藍牙的短距離文件傳輸功能,將會給用戶帶來煥然一新的體驗,同時推動WiFi在終端設備中更加廣泛的應用。

作為目前最受歡迎的智能手機操作系統,Android OS[2]是一個應用非常廣泛的平臺,除了智能手機之外,搭載該系統的設備還包括平板電腦、智能相機、智能電視機等,故在該平臺下實現通過WiFi方式的文件傳輸系統更具有實際意義。

1 系統設計的框架

1.1 系統結構設計

正如藍牙傳輸的方案一樣,該系統首先也要將2部設備之間建立起點對點的連接,連接方式為WiFi無線局域網[3]。Android智能手機上都配置有WiFi掃描連接的功能,只要在手機上建立無線AP,另一部手機就可以連接到這個WiFi網絡與之組成一個無線局域網。目前已有部分手機支持無線AP的建立,系統沒有集成該功能的手機同樣可以通過安裝第三方軟件的方式實現。然后,在該局域網中就通過Socket進行通信,通信規則按照自定義的一套協議就可以實現文件的傳輸與管理等功能。系統分為服務端和客戶端2個部分,分別運行于多臺手機之上。服務端只有一個,客戶端可以有多個,根據Android的多線程可以同時進行多個客戶端的操作,客戶端軟件作為人機交互的主要操作界面,服務器會自動解析用戶的指令并作出響應。最后將軟件打包為安卓程序安裝包 (Android package,Apk)的格式,以便安裝使用。Apk是一種壓縮格式,它包含由Java類編譯后的二進制文件集合dex文件和程序使用的圖片、音頻、配置文件、界面布局文件、C/C++靜態庫等資源文件。

1.2 Android軟件平臺

Android OS是Google公司最新推出的面向下一代以移動互聯網業務為核心的智能終端開源平臺,它本身是一套軟件堆層 (Software Stack),堆層的具體構成框架如圖1所示。其中,標準庫包括Android封裝好的核心類庫以及Java語言API中的基本類庫;Dalvik虛擬機是谷歌改進的Java虛擬機,是基于寄存器的而不是傳統的基于棧的虛擬機,它同時改進了內存資源使用的優化以及支持多個虛擬機的特點,Android系統下的每一個程序在運行時都有一個Dalvik虛擬機的實例;應用程序框架層,封裝了Android應用程序開發所需要用到的API,為開發者提供可重用的組件;應用層是Android系統的表面層,負責用戶與手機之間的可視化交互,集成了Android OS堆層的具體構成框架Android的所有核心應用程序與開發者開發的應用程序。由圖1可見,應用程序雖然表面是用Java語言寫的,但當涉及到本地庫或者內核層時,便會用到JNI技術調用本地程序,也就會編譯成NDK應用程序。

Android軟件開發平臺的安裝支持3種主流操作系統:Windows、Mac OS和Linux。筆者選擇Linux系統,因為Linux下可以更方便使用編譯工具,如NDK[4]。安裝Android的開發平臺,首先要在官網下載Android SDK,這個開發包中包含了各種必備的調試命令和應用程序的API;然后下載較新版本的Eclipse,并且給它安裝Android的開發插件ADT;由于Eclipse用于編寫和編譯Java代碼,故Linux系統必須安裝好Java環境;然后在官網下載NDK工具;最后配置一下Linux的環境變量就完成了開發環境的搭建。

圖1 Android OS堆層的具體構成框架

2 系統功能的實現

2.1 軟件設計結構

軟件設計結構采用MVC模式來進行構建 (見圖2)。模型是應用程序的主體部分,代表了業務數據和業務邏輯,當數據發生改變時,它負責通知視圖部分。由于同一個模型可以被多個視圖重用,所以提高了應用的可重用性。視圖是用戶看到并與之交互的界面,它向用戶顯示相關的數據,并能接收用戶的輸入數據,但是它并不進行任何實際的業務處理。視圖能接受模型發出的數據更新事件,從而對用戶界面進行同步更新,還可以向模型查詢業務狀態,但不能改變模型。控制器負責邏輯處理、控制實體數據在視圖上展示、調用模型處理業務請求。

在Android程序開發過程中,控制部分采用Java語言編寫,針對不同的數據模型和控制程序可以定義在不同的包中。另外,Android對數據的存儲方式[5]有Shared Preference、Content Provider和SQLite等來屏蔽底層具體的存儲細節,從而使應用系統具有良好的數據遷移性。視圖層則可以通過定義XML文件的方式來設計用戶界面。用戶界面通常設計為觸摸、按鍵和其他感應器共同操控的交互方式。由于每一個Xml布局文件都是單獨編寫的文件,故與數據模型和控制部分完全分離,提高 了程序的易讀性和可重用性。

圖2 客戶端MVC結構圖

2.2 基于Socket的網絡通信

Socket通信是采用客戶機/服務器(Client/Server) 的 工 作 模 式[6], 利 用Socket網絡通信接口來實現客戶機和服務器的通信。Socket接口是TCP/IP網絡的API,它在OSI(開放式系統互聯參考模型)中主要集中在傳輸層和會話層。Socket通常也稱為 “套接字”,用于描述IP地址和端口,是一個通信連接句柄,應用程序的通信是通過Socket向網絡發出請求或者應答網絡請求。Socket根據所采用的協議可以分為面向連接和面向非連接2種操作方法,采用TCP/IP協議的Socket操作方法是面向連接的可靠通信;采用UDP協議的Socket操作方法是面向非連接的不可靠通信。由于面向連接的可靠通信方式更能保證客戶機與服務器的數據同步性與一致性,故系統采用的是面向連接的方式。Android中提供了Socket和Server Socket 2個類,并實現了所有的Socket客戶端和服務器雙向連接。面向連接的Socket網絡通信的實現流程如圖3所示。

圖3 面向連接的Socket網絡通信的實現流程

2.3 通信協議的設計

在Socket網絡通信的過程中,服務器端建立的初始狀態是阻塞等待接收客戶端的數據流,接收完之后返回數據流到客戶端,故這種通信的模型必須是由客戶端首先發起請求數據,然后與服務器之間形成數據往返循環進行的交互形式。這種交互必須建立在一套完整的通信協議之下才能保證數據傳輸的健全性與高效性。Java語言中的Socket數據流被封裝成為輸出流 (OutputStream)和輸入流 (InputStream),傳輸的基本單位是字節,因此,通信協議的定義與傳輸的數據都被編排成字節數組的格式。對于字符串類型(String),由于在傳輸的文件名稱包含中文字符時,必須用16位長度的編碼格式,故筆者采用的是UTF-16LE的編碼格式,這種格式下字符串中的字符占用2個字節,在Java語言中通過String.getBytes(“utf-16le”)方法將字符串中的字符依次轉換成對應的字節,從而返回字符串對應的字節數組;通過new String(byteArray,“utf-16le”)的方法將字節數組中的字節依次轉換成對應的字符,從而返回一個完整的字符串。對于整型數據類型 (Integer),在Java語言中占4個字節的長度,通過4次移位相與的方法轉換成一個4個字節數組;同樣地,對于一個整型數據轉換成的4字節數組,也可以通過4次移位相與的方法轉換成一個整型數據。對于文件的數據類型,在Android中可以通過FileInputStream和FileOutputStream的方法來構造文件輸入流和文件輸出流,這種數據流也是以字節為單位,故可以直接與Socket網絡數據流對接,無需轉換或包裝。

在用戶的操作過程中,以客戶端作為主要人機交互端,它包含查看服務器的文件列表、進入文件夾、下載、發送和刪除文件或文件夾等操作。服務器則被動地響應客戶端的請求操作,但無需用戶手動操作,它會自動循環解析客戶端的請求指令,然后回復相應的返回指令和數據。指令是一個由整型數字轉換成的4字節數組,所有的指令所對應的數字代碼都是唯一的。客戶端的請求指令與服務器回復的指令所采用的格式是不同的。客戶端發送的完整請求數據格式為:指令+數據長度+數據內容,其中數據長度也是一個整型數組轉換成的4字節數組,它指示的是后面數據內容的長度,后面的數據內容可能是文件名稱或者文件信息數據。服務端回復的完整數據格式為:回復指令+數據內容,其中回復指令為16字節的數組,它的格式為:指令+錯誤信息+結束符+數據長度,這4個部分都是4字節數組,錯誤信息指示服務器在作出回應過程中的錯誤類型 (沒有錯誤回復0);結束符指示當前信息是第幾條文件,當前文件路徑返回1,結束返回0;數據長度指示后面的數據內容長度,可能是文件名稱或者文件信息數據。

2.4 文件操作與管理

在Android編程中,對文件的操作仍然遵循Java語言中的方法。該系統對文件和文件夾的管理包括創建、刪除、修改和傳輸,對文件夾的操作實際上是對其目錄下的所有文件依次進行操作,其中操作最復雜的也是該系統最重要的部分便是文件的傳輸功能。由于在傳輸過程中,網絡數據流和文件數據流都是以字節數組的形式包裝的,而這些字節數組需要占用Dalvik虛擬機中大量的內存空間,當文件過大時,虛擬機就會因無法給對象分配足夠的內存空間而導致內存溢出的錯誤。本設計對此問題采取了以下的解決方案:對文件的傳輸設定一個傳輸塊,大小設定為5MB,若文件所占空間小于傳輸塊,那么就可以一次讀取或寫入,不會引起內存溢出的問題;若文件所占空間大于傳輸塊,則大文件按照傳輸塊分成若干次分組發送或者接收,每組發送過后都要調用System.gc()方法來回收不用的內存空間。為了便于將一個文件分成多次讀取或者寫入內容,使用了RandomAccessFile類,這是一個支持斷點續傳的文件類,它建立在一個文件的基礎上,創建的時候要申明讀寫權限,它可以直接讀取或寫入字節流,并可以設置標記,實現對文件的斷點續傳。

在文件的傳輸過程中,需要消耗大量的機器資源和時間,而Android系統對程序設置了一個響應時間,如果超出這個時間沒有響應系統就會提醒用戶關閉程序。由于人機交互界面視圖工作在主線程,若在主線程處理大量的操作,就會出現界面無響應的現象,若使用子線程,必須用到Handler方法(Android中線程消息的管理者),才能間接訪問到界面視圖,增加了程序的復雜度。針對這種耗時長的操作Android系統設計了異步任務 (AsyncTask)的方法,異步任務的設計很好地解決了匿名線程存在的問題。對文件的傳輸操作都是放在異步任務中執行的,實現了友好的人機交互界面。

2.5 權限控制

在Android應用程序開發中,應用程序對手機重要功能組件的訪問有著嚴格的權限控制方法,對涉及到手機安全[7]的操作 (如使用電話和短信服務、訪問網絡或者內存等)以授權的方式控制。每一個Android工程目錄下都有一個清單文件AndroidManifest.xml,清單可以定義應用程序及其組件的結構和元數據,包括軟件安全模型中的訪問權限控制。在清單中必須添加uses-permission標簽來創建所需要的權限定義之后,程序才可以使用這些受保護的組件。在安裝程序的時候,就會請求用戶授權清單文件中設定的權限,當用戶同意授權之后才可以安裝運行程序。該系統所使用到的權限有:網絡訪問、WiFi狀態訪問、手機振動、內存卡訪問以及喚醒鎖的權限。權限解釋:網絡與WiFi權限用于訪問無線局域網;手機振動用于提醒用戶狀態的改變;內存卡的訪問是文件管理的前提;喚醒鎖是為了防止系統進入休眠狀態。

3 結 語

在Android平臺下采用WiFi方式實現設備之間文件互傳,大大提高了短距離通信的效率。不僅如此,該系統支持最低版本Android1.5平臺,而目前市場上的Android設備所使用的系統版本基本在此版本之上,因此,該系統基本可以安裝運行于所有的Android智能手機和平板電腦。智能終端上的WiFi應用日益廣泛,相信不久的將來一定可以給廣大的消費者帶來更多便捷的服務。

[1]吳功宜 .計算機網絡高級教程 [M].北京:清華大學出版社,2007:133-144.

[2]Google.Android official website [EB/OL].http://www.android.com/index.html,2012-09-05.

[3]張琨 .基于Android平臺的WLAN解決方案 [D].濟南:山東大學,2010.

[4]Google.Android NDK | Android Developers[DB/OL].http://developer.android.co m/tools/sdk/ndk/index.html,2012-09-05.

[5]Meier R.Android高級編程 [M].王鵬杰,霍建同 譯 .北京:清華大學出版社,2010:187-209.

[6]蔣敏,單家芳,孔軍 .基于socket的多平臺通信研究 [J].計算機工程與應用,2005(36):135-141.

[7]Burns J.Developing secure mobile applications for android [DB/OL].http://www.isecpartner s.com/white-papers/,2012-09-05.

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 国产在线视频福利资源站| 国产日韩丝袜一二三区| 国产亚洲第一页| 欧美无专区| 91热爆在线| 老司机精品一区在线视频| 高清国产在线| 91午夜福利在线观看| 日本国产在线| 99在线小视频| 中文字幕欧美日韩高清| 黄片在线永久| a级毛片免费网站| 亚洲av综合网| 亚洲成人免费在线| 美女无遮挡拍拍拍免费视频| 婷婷综合缴情亚洲五月伊| 欧美一区二区三区欧美日韩亚洲 | 久久久无码人妻精品无码| 99er精品视频| 国产人成乱码视频免费观看| 亚洲第一福利视频导航| 日韩成人免费网站| 中文字幕中文字字幕码一二区| 国产精品任我爽爆在线播放6080| 日本欧美在线观看| 国产欧美专区在线观看| 国产91高跟丝袜| 亚洲成人动漫在线| 国产丝袜丝视频在线观看| 欧美日韩另类在线| 国产浮力第一页永久地址| 欧美不卡视频一区发布| 精品综合久久久久久97超人该| 91丝袜美腿高跟国产极品老师| 综合网天天| 精品国产网站| 国产精品99久久久| 亚洲综合色婷婷中文字幕| 国产精品久久久久久搜索| 久久精品丝袜| 免费人成网站在线高清| 亚洲一级毛片免费观看| 欧美日韩国产高清一区二区三区| 亚洲精品色AV无码看| 91在线中文| 91久久国产热精品免费| 久久五月视频| 中文字幕亚洲电影| 丁香亚洲综合五月天婷婷| 亚洲乱亚洲乱妇24p| 色悠久久久久久久综合网伊人| 国产一区在线视频观看| 国产午夜不卡| 国产毛片高清一级国语| 亚洲永久视频| 久久黄色毛片| 激情综合网址| www成人国产在线观看网站| 高潮毛片无遮挡高清视频播放 | 国产91丝袜在线播放动漫 | 欧美一级色视频| WWW丫丫国产成人精品| 97国产在线观看| 福利在线一区| 夜精品a一区二区三区| 亚洲精品图区| 国产日本一区二区三区| 香蕉视频在线精品| 国产激情无码一区二区APP| 午夜国产大片免费观看| 免费无码AV片在线观看中文| 亚洲中文字幕国产av| 日本少妇又色又爽又高潮| 97se亚洲| 55夜色66夜色国产精品视频| 日韩精品无码免费一区二区三区| 国产亚洲精品在天天在线麻豆| 国产迷奸在线看| 亚洲国产综合精品一区| 亚洲欧美自拍中文| 久久国产精品电影|