• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的藍(lán)牙全雙工通信技術(shù)研究與實踐

      2023-03-20 04:44:20趙敏涯
      無線互聯(lián)科技 2023年1期
      關(guān)鍵詞:全雙工服務(wù)端監(jiān)聽

      趙敏涯

      (蘇州市職業(yè)大學(xué) 計算機(jī)工程學(xué)院,江蘇 蘇州 215104)

      0 引言

      藍(lán)牙技術(shù)有效地簡化了移動通信終端設(shè)備之間的無線短距離通信問題,使得數(shù)據(jù)傳輸更加迅速高效。藍(lán)牙技術(shù)工作在全球通用的2.4 GHz的ISM頻段,使用無須申請許可證,不需要支付任何費(fèi)用,同時具備小體積、低功耗、低成本、高傳輸速率、抗干擾強(qiáng)、組網(wǎng)簡單等特點(diǎn)。因此,藍(lán)牙技術(shù)被廣泛應(yīng)用于手機(jī)、電腦、汽車醫(yī)療等智能電子產(chǎn)品終端設(shè)備中[1-2]。

      藍(lán)牙技術(shù)發(fā)展至今已有20余年,早期的傳統(tǒng)經(jīng)典藍(lán)牙BR/EDR的設(shè)計意圖是打電話時播放音樂,功耗高、數(shù)據(jù)量大、傳輸距離短,主要應(yīng)用于早期的藍(lán)牙耳機(jī)和藍(lán)牙音箱等。隨著藍(lán)牙4.0技術(shù)的出現(xiàn),低功耗藍(lán)牙BLE成為主流,它更省電、低延遲、傳輸距離更長,區(qū)別于BR/EDR,BLE分為單模和雙模兩種設(shè)備。單模藍(lán)牙稱為Bluetooth Smart,有專有的logo,應(yīng)用于功耗要求低的手表、共享單車鎖、防丟器等小型傳感器穿戴設(shè)備中。雙模藍(lán)牙稱為Bluetooth Smart Ready,也有專有的logo,支持BR/EDR和BLE,應(yīng)用于智能手機(jī)、降噪耳機(jī)、智能電視遙控器等供電穩(wěn)定的移動設(shè)備中。

      1 藍(lán)牙通信基本流程

      藍(lán)牙技術(shù)建立了一個通用的無線電空中連接平臺級數(shù)據(jù)通信的公共標(biāo)準(zhǔn),大大促進(jìn)了計算機(jī)技術(shù)和無線通信技術(shù)的融合,讓不同的電子設(shè)備之間可以進(jìn)行近距離連接與數(shù)據(jù)傳輸,而不再需要通信電纜就可實現(xiàn)互聯(lián)互通功能。

      藍(lán)牙通信采用時分全雙工傳輸技術(shù),可以實現(xiàn)點(diǎn)對點(diǎn)或點(diǎn)對多點(diǎn)的無線交互功能。

      一個藍(lán)牙終端理論上可以同時連接最多7個藍(lán)牙設(shè)備。要在支持藍(lán)牙技術(shù)的設(shè)備之間進(jìn)行通信,基本的工作流程如圖1所示。

      圖1 藍(lán)牙設(shè)備之間的基本通信流程

      任何無線通信技術(shù)都存在被監(jiān)聽和破解的可能,因此在進(jìn)行通信之前,設(shè)備之間需要進(jìn)行配對和連接。配對是兩個藍(lán)牙設(shè)備之間的首次通信認(rèn)證,而配對成功之后的通信則不再需要每次確認(rèn)。

      2 全雙工藍(lán)牙通信技術(shù)實踐

      2.1 整體設(shè)計思路

      各藍(lán)牙設(shè)備開啟藍(lán)牙功能,對于沒有配對的設(shè)備,先進(jìn)行兩兩配對。已經(jīng)配對成功的設(shè)備可以作為服務(wù)器開啟服務(wù)端線程,監(jiān)聽一個或多個客戶端設(shè)備的連接請求,連接成功后可以作為服務(wù)端進(jìn)行消息的發(fā)送和接收。同時,配對成功的設(shè)備也可以作為客戶端向指定服務(wù)端設(shè)備發(fā)送連接請求,連接成功后可以作為客戶端進(jìn)行消息的發(fā)送和接收。對于同一個設(shè)備,可以同時扮演客戶端和服務(wù)端的角色。基本通信流程如圖2所示。一個設(shè)備作為客戶端只能同時連接一個服務(wù)端,作為服務(wù)端則可以同時連接多個客戶端。

      圖2 藍(lán)牙通信流程

      其中,藍(lán)牙的開關(guān)、掃描發(fā)現(xiàn)、配對和連接狀態(tài)通過Android組件的廣播接收器Broadcast Receiver來注冊監(jiān)聽。

      2.2 界面設(shè)計

      主界面如圖3所示。藍(lán)牙開關(guān)、掃描、服務(wù)端開啟、消息發(fā)送通過按鈕單擊事件設(shè)計實現(xiàn),發(fā)送雙方的消息顯示在界面中部,所有已配對的、掃描到的未配對設(shè)備顯示在列表控件ListView中,列表項的長按事件改變設(shè)備的配對狀態(tài),短按即單擊事件用于當(dāng)前設(shè)備作為客戶端向列表中設(shè)備發(fā)送連接請求。

      圖3 應(yīng)用主界面

      2.3 通信模塊設(shè)計與實現(xiàn)

      藍(lán)牙設(shè)備兩兩配對以后就可以進(jìn)行連接通信了。

      Android的藍(lán)牙通信系統(tǒng)和Socket套接字密切相關(guān),藍(lán)牙端的監(jiān)聽接口和TCP的端口類似,都是使用了Socket和ServerSocket類。在服務(wù)端使用Bluetooth ServerSocket類來創(chuàng)建一個開放式監(jiān)聽服務(wù)接口,在客戶端使用一個單獨(dú)的BluetoothSocket類去初始化一個連接并管理該連接。當(dāng)一個BluetoothSocket類的連接對象被BluetoothServerSocket類接收,則返回一個新的BluetoothSocket連接并管理該連接。

      連接都是阻塞式的,所以要放在線程里去執(zhí)行。連接成功后,兩臺設(shè)備在相同的串行端口規(guī)范RFCOMM通道通過各自的BluetoothSocket對象中的輸入、輸出流進(jìn)行數(shù)據(jù)傳輸[3]。

      2.3.1 消息發(fā)送與接收控制

      不管是作為服務(wù)端還是客戶端進(jìn)行消息發(fā)送與接收,基本的處理機(jī)制是一樣的,文章提供兩個通用的類方法分別完成消息內(nèi)容的發(fā)送和接收。

      消息的基本處理步驟如下:

      通用消息收發(fā)工具類MsgUtil{

      void sendMsg(String 消息字符串msg){//發(fā)送消息方法頭

      開啟線程Thread{

      獲取輸出流getOutputStream();

      調(diào)用輸出流方法write(msg);

      調(diào)用輸出流方法flush()提交數(shù)據(jù);

      Android子線程不能直接更新UI,所以返回主線程runOnUiThread(){

      在當(dāng)前設(shè)備界面上顯示發(fā)送的msg;

      }

      }

      }

      void getMsg(){//接收消息方法頭

      開啟線程Thread{

      獲取輸入流getInputStream();

      循環(huán)讀取輸入字節(jié)流并保存于StringBuffer容器對象中;

      Android子線程不能直接更新UI,所以返回主線程runOnUiThread(){

      在當(dāng)前設(shè)備界面上顯示接收到的msg;

      }

      }

      }

      }

      2.3.2 服務(wù)端設(shè)計

      作為服務(wù)端主要是監(jiān)聽客戶端連接請求,連接成功后接收來自客戶端的數(shù)據(jù),需要在線程中進(jìn)行?;咎幚聿襟E如下:

      線程類{

      構(gòu)造方法{

      初始化BluetoothAdapter對象;

      獲取BluetoothServerSocket對象;

      }

      run方法{

      監(jiān)聽連接請求accept(),返回BluetoothSocket對象;

      調(diào)用MsgUtil類方法getMsg()方法接收客戶端數(shù)據(jù)

      }

      cancel方法{

      圖4 設(shè)備A和設(shè)備C之間的消息收發(fā)

      資源釋放;

      }

      }

      2.3.3 客戶端設(shè)計

      作為客戶端主要是向服務(wù)端發(fā)送連接請求,連接成功后接收來自服務(wù)端的數(shù)據(jù),需要在線程中進(jìn)行?;咎幚聿襟E如下:

      線程類{

      構(gòu)造方法{

      獲取服務(wù)端設(shè)備BluetoothDevice對象

      獲取BluetoothSocket對象;

      }

      run方法{

      發(fā)送連接請求connect();

      調(diào)用MsgUtil類方法getMsg()方法接收服務(wù)端數(shù)據(jù)}

      cancel方法{

      資源釋放;

      }

      }

      3 藍(lán)牙通信測試

      筆者使用一臺Android 11系統(tǒng)的vivo X60手機(jī)作為設(shè)備A,一臺HarmonyOS 2.0.0系統(tǒng)的華為平板電腦M6作為設(shè)備C進(jìn)行通信測試。

      兩臺設(shè)備都可以具備服務(wù)端和客戶端雙重角色。如圖4所示,任何一臺設(shè)備都可以作為服務(wù)端或者客戶端發(fā)送和接收消息,并能正確地顯示在界面上,從而實現(xiàn)了雙向全雙工數(shù)據(jù)通信,而且即使設(shè)備沒有互聯(lián)網(wǎng)連接,也可以進(jìn)行消息收發(fā)。

      4 結(jié)語

      藍(lán)牙作為短距離無線傳輸技術(shù)之一,有其自己的優(yōu)勢和應(yīng)用領(lǐng)域,如無需互聯(lián)網(wǎng)連接實現(xiàn)數(shù)據(jù)交換,支持較大的文件傳輸,成本低,安全性高等。Android系統(tǒng)從4.3開始支持低功耗藍(lán)牙,有完備的協(xié)議棧和應(yīng)用程序框架層的SDK包,使得基于Android藍(lán)牙技術(shù)的開發(fā)越來越便捷。文章就是在此基礎(chǔ)上設(shè)計實現(xiàn)了具備一定社交功能的藍(lán)牙全雙工通信功能模塊,并盡可能簡化代碼,提高程序復(fù)用性,實踐結(jié)果表明效果良好,在缺乏網(wǎng)絡(luò)等情況下有一定的應(yīng)用價值。

      猜你喜歡
      全雙工服務(wù)端監(jiān)聽
      對抗全雙工主動竊聽的安全高效D2D通信策略
      無線電工程(2024年5期)2024-07-20 00:00:00
      千元監(jiān)聽風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
      云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
      新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
      RLS算法在同時同頻全雙工系統(tǒng)中的自干擾抑制性能分析
      在Windows Server 2008上創(chuàng)建應(yīng)用
      網(wǎng)絡(luò)監(jiān)聽的防范措施
      電子制作(2017年20期)2017-04-26 06:58:02
      同頻同時全雙工數(shù)字自干擾抵消算法
      5G全雙工技術(shù)淺析
      移動通信(2015年15期)2015-12-26 08:52:40
      應(yīng)召反潛時無人機(jī)監(jiān)聽航路的規(guī)劃
      安多县| 阿克陶县| 延川县| 舟山市| 尼勒克县| 东安县| 平舆县| 叶城县| 宿松县| 莱州市| 平凉市| 金乡县| 祁阳县| 郯城县| 大新县| 渝中区| 双柏县| 东乡族自治县| 赤峰市| 马关县| 应用必备| 焉耆| 山西省| 手机| 平罗县| 哈巴河县| 增城市| 寿光市| 乌鲁木齐市| 灵宝市| 开封县| 来凤县| 富阳市| 磴口县| 哈密市| 交城县| 渝北区| 镇坪县| 垦利县| 廊坊市| 英德市|