freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的wifi文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2024-11-07 22:12本頁面

【導(dǎo)讀】市場上有很多文件分享的軟件,但其傳輸?shù)姆绞蕉即嬖谝欢ǖ娜毕荨]斝枰髁炕蚓W(wǎng)絡(luò)連接,WiFi熱點(diǎn)傳輸時不能使用WiFi上網(wǎng)等問題。含了文件的搜索,管理,刪除,文件/消息傳輸?shù)裙δ堋W疃嘀С?個文件同時。發(fā)送,在連接設(shè)備后,可以瀏覽對方設(shè)備的文件目錄。發(fā)展和相關(guān)知識。通過對系統(tǒng)的運(yùn)行測試得出可以發(fā)現(xiàn):系統(tǒng)運(yùn)行流暢,多文件。應(yīng)用的數(shù)據(jù)存儲.

  

【正文】 的接口即可。 實(shí)際運(yùn)行截圖如圖 44 所示。 西南科技大學(xué)本科生畢業(yè)論文 23 圖 44 移除要發(fā)送的文件截圖 查看文件屬性 查看文件的基本屬性,以確定該文件是否是自己需要發(fā)送的文件。用例描述如表 44 所示。 表 44 查看文件屬性用例描述 功能描述 前置條件 參與者 基本操作流 可選操作流 查看文件的一些基本屬性 ,如大小修改日期等 進(jìn)入應(yīng)用主界面 用戶 1) 找到需要查看屬性的文件 2) 長按彈出上下文菜單 3) 點(diǎn)擊屬性菜單顯示文件基本屬性 1) 找到需要查看屬性的文件 2) 長按彈出上下文菜單 3) 點(diǎn)擊其他位置取消查看文件屬性 技術(shù)關(guān)鍵:知道文件的路徑即可獲得文件的一些基本屬性,如文件名,大小等,最后修改日期等。通過 File 類可以獲取文件的大小,路徑,文件名,最后修改日期等信息。獲取到的日期是毫秒的形式表示的,所需要要 Date 類來轉(zhuǎn)化為西南科技大學(xué)本科生畢業(yè)論文 24 年月日等。關(guān)鍵代碼如圖 45 所示。 圖 45 顯示文件屬性關(guān)鍵代碼 實(shí)際運(yùn)行截圖如圖 45 所示。 圖 46 查看文件屬性截圖 打開音樂,視頻等文件 調(diào)用手機(jī)上對應(yīng)的應(yīng)用打開音樂,視頻,文件, ppt, word,圖片等文件,進(jìn)行文件預(yù)覽。用例秒速如表 45 所示。 西南科技大學(xué)本科生畢業(yè)論文 25 表 45 打開文件用例描述 功能描述 前置條件 參與者 基本操作流 可選操作流 打開手機(jī)上的文件進(jìn)行預(yù)覽 進(jìn)入應(yīng)用主界面 用戶 1) 找到需要查看屬性的文件 2) 長按彈出上下文菜單 3) 點(diǎn)擊“打開”菜單進(jìn)行文件預(yù)覽 4) 選擇 Activity 來打開 1) 找到需要查看屬性的文件 2) 長按彈出上下文菜單 3) 點(diǎn)擊其他位置取消打開文件操作 技術(shù)關(guān)鍵:根據(jù)不同類型的文件,設(shè)置不同的 Intent 來啟動對應(yīng)的 Activity預(yù)覽文件。如視頻文件,需要為 intent 設(shè)置 type 為 video/*,為 intent 設(shè)置 data為要打開的文件路徑 。 系統(tǒng)會自動匹配能夠接收這個 Intent 的 Activity,如果有多個 Activity,系統(tǒng)會給出列表讓用戶選擇 ,由用戶來決定使用哪個 Activity 打開所選的文件 。 關(guān)鍵代碼如圖 47 所示 。 圖 47 打開文件關(guān)鍵代碼 西南科技大學(xué)本科生畢業(yè)論文 26 實(shí)際運(yùn)行截圖如圖 48 所示: 圖 48 打開本機(jī)音樂截圖 遍歷手機(jī)文件 瀏覽手機(jī)的目錄結(jié)構(gòu),查看目錄中的文件,并且可以進(jìn)行查看文件相關(guān)屬性,或者打開文件,或者加入發(fā)送列表等操作。用例描述如表 46 所示。 表 46 遍歷手機(jī)文件用例描述 功能描述 前置條件 參與者 基本操作流 可選操作流 打開手機(jī)上的文件進(jìn)行預(yù)覽 進(jìn)入應(yīng)用主界面 用戶 1) 進(jìn)入“瀏覽”分頁界面 2) 點(diǎn)擊內(nèi) 置 SD 卡或者外置 SD 卡開始瀏覽手機(jī)目錄 技術(shù)關(guān)鍵:根據(jù)不同的文件夾獲取其子文件夾和子文件列表并排序顯示。子文件夾和子文件列表要分開,然后現(xiàn)將子文件夾列表加入最終列表,然后再將子文件列表加入最終列表,這樣可以保證文件夾在文件前面。當(dāng) 2 臺設(shè)備連接,可以瀏覽對方的文件夾內(nèi)容,其實(shí)就是把對方的設(shè)備先獲取自己指定文件夾下的子文件夾和子文件列表 ,然后發(fā)送到這邊的設(shè)備,這邊的設(shè)備接收到了列表之后在本地顯示。 實(shí)際運(yùn)行截圖如圖 49 所示: 西南科技大學(xué)本科生畢業(yè)論文 27 圖 49 瀏覽文件夾截圖 設(shè)備連接管理模塊 這個模塊的功能就是管理管理設(shè)備這塊,提供周圍可用的設(shè)備列表,在用戶點(diǎn)擊時鏈接設(shè)備,在退出時斷開設(shè)備連接等。這個模塊時文件傳輸模塊的基礎(chǔ),沒有先建立連接,設(shè)備之間就不能交換數(shù)據(jù)了。 這個模塊涉及的源文件主要是包括: 1) ..src/p2p/ 2) ..src/fragment/ 這里的 也是文件 /數(shù)據(jù)傳輸?shù)闹饕次募?,由于這 2 個模塊關(guān)系太過緊密,所有大部分代碼寫在了一起。 下面是這個模塊的一些主要功能代碼 : 1) 開始發(fā)現(xiàn)設(shè)備 public void discoverDevice(ActionListener listener) { (TAG, WifiP2pHelperdiscoverDevice())。 if (!isWifiOn()) { toggleWifi(true)。 } 西南科技大學(xué)本科生畢業(yè)論文 28 //如果當(dāng)前已連接到了設(shè)備,中止本次搜索 if (isConnected) { (TAG, WifiP2pHelperdiscoverDevice endedisConnected=true)。 return。 } //通知 Activity 更新界面 (WIFIP2P_DEVICE_DISCOVERING)。 //通知底層開始搜索周圍的設(shè)備 (channel, listener)。 } 首先是查找周圍的設(shè)備,上面的 manager 是 WifiP2pManger,這是 Android系統(tǒng)提供的一個類,主要輔助 WifiP2p 的管理,并且提供了一系列的方法。如這里的 方法。由于設(shè)備的查找,連接等等都需要一定的時間,所以 discoverPeers 這個方法并不能直接返回結(jié)果,而是在查找到新設(shè)備是發(fā)送一個廣播( ) ,所以需要接收這個廣播,在這時,就可以獲取到已經(jīng)發(fā)現(xiàn)的設(shè)備了。 2) 連接設(shè)備 public void connectDevice(WifiP2pDevice device, ActionListener listener) { WifiP2pConfig config = new WifiP2pConfig()。 = 。//設(shè)置連接設(shè)置的地址 = 。//設(shè)置連接配置 WPS (channel, config, listener)。//調(diào)用系統(tǒng) API 開始連接設(shè) 備 connectedDevice = device。 } 這個方法的作用就是連接設(shè)備了,和發(fā)現(xiàn)設(shè)備一樣,需要花費(fèi)一些時間,所以這個方法也不會立刻返回連接結(jié)果,而是在連接成功 /失敗的時候發(fā)送一個廣播( ),所以我們需要接收這個廣播,并且根據(jù)廣播附帶的信息來判斷是否連接上了設(shè)備,還是斷開連接設(shè)備了。 連接其他設(shè)備 設(shè)備之間需要先建立 WiFiDirect 連接 ,才能夠使用 Socket 進(jìn)行通信,傳輸 文西南科技大學(xué)本科生畢業(yè)論文 29 件等。用例描述如表 47 所示。 表 47 連接其他設(shè)備用例描述 功能描述 前置條件 參與者 基本操作流 可選操作流 連接其他WifiDirect設(shè)備 進(jìn)入應(yīng)用主界面 用戶 1) 點(diǎn)擊界面右下角的 ”傳 ”按鈕進(jìn)入搜索設(shè)備界面 2) 點(diǎn)擊搜索到的設(shè)備開始連接 3) 連接設(shè)備成功 ,自動返回主界面 1) 選擇幾個文件加入發(fā)送列表 ,然后點(diǎn)擊 ”發(fā)送文件 ”按鈕 ,進(jìn)入設(shè)備搜索界面 2) 點(diǎn)擊搜索到的設(shè)備開始連接 3) 連接設(shè)備成功 ,自動返回主界面 技術(shù)關(guān)鍵:利用系統(tǒng)的 WifiP2pManager 類中的方法來發(fā)現(xiàn),連接設(shè)備 。這個類又會通知 WifiP2p 相關(guān)后臺的系統(tǒng)服務(wù)來進(jìn)行操作,而且操作比較耗時,所以在調(diào)用方法時需要相關(guān)的監(jiān)聽。當(dāng)后臺異步操作執(zhí)行完了會調(diào)用這些監(jiān)聽而不讓主線程堵塞。 實(shí)際運(yùn)行截圖如圖 410 所示: 圖 410 連接其他設(shè)備截圖 西南科技大學(xué)本科生畢業(yè)論文 30 重命名本機(jī)設(shè)備 重命名本機(jī)的 WifiDirect 設(shè)備,方便其他用戶識別自己。用例描述如表 48所示。 表 48 連接其他設(shè)備用例描述 功能描述 前置條件 參與者 基本操作流 可選操作流 修改本機(jī)WifiDirect名 進(jìn)入應(yīng) 用主界面 用戶 1) 點(diǎn)擊菜單鍵進(jìn)入側(cè)滑菜單 ,點(diǎn)擊設(shè)備名進(jìn)入編輯模式 2) 輸入新的設(shè)備名, 然后保存 技術(shù)關(guān)鍵: WifiP2pManager 里面提供了修改本機(jī) WifiDirect 名的方法,但是其對外值隱藏的,所以要 利用 java 的 反射機(jī)制 來 調(diào)用 WifiP2pManager 類中的setDeviceName()方法,來設(shè)置設(shè)備名稱 。 實(shí)際運(yùn)行截圖如圖 411 所示: 圖 4 11 修改本機(jī)設(shè)備名截圖 西南科技大學(xué)本科生畢業(yè)論文 31 文件 /數(shù)據(jù)傳輸模塊 這是本程序的核心模塊,真正實(shí)現(xiàn)數(shù)據(jù)發(fā)送 /接收到的地方,這里傳輸帶數(shù)據(jù)可以是一個數(shù)字 ,或者一串字符,或者一個文件,并沒有什么限制。在發(fā)送數(shù)據(jù)的時候是以字節(jié)為單位發(fā)送的,不能以字符為單位,因?yàn)橛行┪募⒉皇亲址募绻宰址麨樽钚挝话l(fā)送,會使接收到底的文件發(fā)送一些錯誤。 由于可能存在很多個要發(fā)送的文件,如果同時發(fā)送的文件過多,會增大系統(tǒng)功耗,而且傳輸速度也會因此而降低,所有應(yīng)用會有個相應(yīng)的限制,當(dāng)然應(yīng)用也給用戶添加了界面借口可以規(guī)定同時最大的傳輸文件個數(shù)。但要發(fā)送的文件過多時,這些文件會在一個發(fā)送隊(duì)列中等待,當(dāng)有一個發(fā)送任務(wù)結(jié)束之后,應(yīng)用會自動檢查發(fā)送隊(duì)列是否為空,不為空則繼續(xù)出隊(duì)前面的 文件并開始發(fā)送任務(wù),但是整個過程中同時存在的發(fā)送任務(wù)個數(shù)不會超過規(guī)定的最大發(fā)送個數(shù)的。 文件的傳輸需要發(fā)送方和接收方約定好發(fā)送的數(shù)據(jù)的格式,應(yīng)用中約定如圖412 所示: 圖 412 傳輸數(shù)據(jù)格式示意圖 第一個字節(jié)表明自己想干嘛,程序中定義了如下的一些意圖: public static final byte TRANSPORT_INTENT_SENDFILE = 1。 //設(shè)備交互意圖—————— 傳文件 public static final byte TRANSPORT_INTENT_CMD_ASK_FOR_SUB_DIRS = 2。 //設(shè)備交互意圖 —————— 發(fā)送命令,請求獲取文件夾下所有的子文件夾和子文件 public static final byte TRANSPORT_INTENT_CMD_ASK_FOR_DOWNLOAD_FILE = 3。 //請求下載文件 public static final byte TRANSPORT_INTENT_REPLAY_CMD_ASK_FOR_DOWNLOAD_FILE = 4。 //回復(fù)請求下載文件的結(jié)果 public static final byte TRANSPORT_INTENT_DATA_DIRS = 5。 //設(shè)備交互意圖—————— 與 TRANSPORT_INTENT_CMD_ASK_FOR_SUB_DIRS 對應(yīng) public static final byte TRANSPORT_INTENT_SEND_TEXT_MSG = 7。 //設(shè)備交互意圖西南科技大學(xué)本科生畢業(yè)論文 32 —————— 發(fā)送文本消息 如果是傳文件,那么意圖碼為 TRANSPORT_INTENT_SENDFILE,即 1。第一字節(jié)之后的其他信息里面又包括了其他的約定,如圖 413 所示: 圖 413 文件傳輸數(shù)據(jù)格式示意圖 即如果是文件,發(fā)送信息依次如下: 1) 意圖代碼( 1byte) 2) 附加文件信息的長度,假設(shè)這個值為 X( 4byte 即 1 個 int) 3) 附加文件信息(長度為 X) 4) 文件真正的內(nèi)容 接 收方接收文件的時候也會根據(jù)這個約定來接收,即接收文件的過程如下: 1) 接收意圖代碼 2) 接收文件附加信息的長度,這個長度用于告知下一步該接收多少個字節(jié) 3) 接收文件附件信息,用于本地創(chuàng)建和發(fā)送方一樣名字的文件,保持文件發(fā)送前后名稱一致。 4) 接收文件內(nèi)容 其他的幾個意圖碼都是在一個功能中用到 的:瀏覽對方文件夾,并可以下載文件到本地。一次最簡單但是完整的過程如圖 415 所示。 根據(jù)上面的介紹,傳輸模塊的構(gòu)架很清晰簡單 ,所有具有很強(qiáng)的擴(kuò)展性,例如想在 2 臺設(shè)備之間實(shí)現(xiàn)簡單的文字聊天功能,只需對傳輸模塊做如下步驟: 1) 添加意圖碼(如 TRANSPORT_INTENT_SENDMSG) 2) 發(fā)送和接收的地方做約定,如圖 414 所示: 約定格式也很簡單: 1) 第一個字節(jié)為意圖碼 2) 剩下的所有內(nèi)容即為消息內(nèi)容 發(fā)送文本消息相比想發(fā)送文件要簡單許多。 西南科技大學(xué)本科生畢業(yè)論文 33 圖 414 消息傳輸數(shù)據(jù)格式示意圖 手機(jī) A 手機(jī) B1 : 請求設(shè)備連接 ()2 : 設(shè)備連接成功 ()3 : 請求瀏覽對方文件夾 ()4 : 同意,并返回子文件夾列表 ()5 : 請求下載文件 ()
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1