版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京電子科技職業(yè)學(xué)院移動(dòng)應(yīng)用軟件開(kāi)發(fā)(基于Android平臺(tái))01藍(lán)牙Socket通訊藍(lán)牙Socket通訊簡(jiǎn)介
藍(lán)牙同樣可以使用Socket來(lái)實(shí)現(xiàn)客戶端和服務(wù)器程序。對(duì)于客戶端來(lái)說(shuō),首先需要選擇要連接的服務(wù)器(作為服務(wù)器的藍(lán)牙設(shè)備),選擇藍(lán)牙設(shè)備后,會(huì)關(guān)閉設(shè)備列表,這時(shí)需要在onActivityResult方法中獲得所選的藍(lán)牙設(shè)備,并連接設(shè)備。在連接服務(wù)器時(shí)必須使用在服務(wù)端注冊(cè)的UUID。服務(wù)器需要啟動(dòng)一個(gè)監(jiān)聽(tīng)線程來(lái)處理客戶端的請(qǐng)求,最后在onCreate方法中調(diào)用serverWorker.start()啟動(dòng)服務(wù)端。藍(lán)牙Socket通訊實(shí)現(xiàn)藍(lán)牙Socket服務(wù)器藍(lán)牙Server端就是通過(guò)線程來(lái)注冊(cè)一個(gè)具有名稱和唯一識(shí)別的UUID號(hào)的BluetoothServerSocket,然后就一直監(jiān)聽(tīng)Client端(BluetoothSocket)的請(qǐng)求,并對(duì)這些請(qǐng)求做出相應(yīng)的處理。如果打算建議兩個(gè)藍(lán)牙設(shè)備之間的連接,則必須實(shí)現(xiàn)服務(wù)器端與客戶端的機(jī)制。當(dāng)兩個(gè)設(shè)備在同一個(gè)RFCOMM
channel下分別擁有一個(gè)連接的BluetoothSocket,這兩個(gè)設(shè)備才可以說(shuō)是建立了連接。服務(wù)器設(shè)備與客戶端設(shè)備獲取BluetoothSocket的途徑是不同的。服務(wù)器設(shè)備是通過(guò)accepted一個(gè)incoming
connection來(lái)獲取的,而客戶端設(shè)備則是通過(guò)打開(kāi)一個(gè)到服務(wù)器的RFCOMM
channel來(lái)獲取的。藍(lán)牙Socket通訊服務(wù)器端的實(shí)現(xiàn)通過(guò)調(diào)用BluetoothAdapter的listenUsingRfcommWithServiceRecord(String,
UUID)方法來(lái)獲取BluetoothServerSocket(UUID用于客戶端與服務(wù)器端之間的配對(duì))
調(diào)用BluetoothServerSocket的accept()方法監(jiān)聽(tīng)連接請(qǐng)求,如果收到請(qǐng)求,則返回一個(gè)BluetoothSocket實(shí)例(此方法為block方法,應(yīng)置于新線程中)
如果不想在accept其他的連接,則調(diào)用BluetoothServerSocket的close()方法釋放資源(調(diào)用該方法后,之前獲得的BluetoothSocket實(shí)例并沒(méi)有close。但由于RFCOMM一個(gè)時(shí)刻只允許在一條channel中有一個(gè)連接,則一般在accept一個(gè)連接后,便close掉BluetoothServerSocket)藍(lán)牙Socket通訊客戶端的實(shí)現(xiàn)
通過(guò)搜索得到服務(wù)器端的BluetoothService調(diào)用BluetoothService的listenUsingRfcommWithServiceRecord(String,UUID)方法獲取BluetoothSocket(該UUID應(yīng)該同于服務(wù)器端的UUID)調(diào)用BluetoothSocket的connect()方法(該方法為block方法),如果UUID同服務(wù)器端的UUID匹配,并且連接被服務(wù)器端accept,則connect()方法返回注意:在調(diào)用connect()方法之前,應(yīng)當(dāng)確定當(dāng)前沒(méi)有搜索設(shè)備,否則連接會(huì)變得非常慢并且容易失敗。藍(lán)牙Socket通訊連接管理(數(shù)據(jù)通信)
分別通過(guò)BluetoothSocket的getInputStream()和getOutputStream()方法獲取InputStream和OutputStream
使用read(bytes[])和write(bytes[])方法分別進(jìn)行讀寫操作
注意:read(bytes[])方法會(huì)一直block,知道從流中讀取到信息,而write(bytes[])方法并不是經(jīng)常的block(比如在另一設(shè)備沒(méi)有及時(shí)read或者中間緩沖區(qū)已滿的情況下,write方法會(huì)block)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 校本課程國(guó)際課程設(shè)計(jì)
- 2025年山東淄博市市屬事業(yè)單位綜合類崗位招聘工作人員65人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)寧市屬事業(yè)單位“優(yōu)才”選聘歷年管理單位筆試遴選500模擬題附帶答案詳解
- 年會(huì)董事長(zhǎng)致辭
- 2025年山東濟(jì)南市槐蔭區(qū)所屬事業(yè)單位招聘51人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東濟(jì)南信息工程學(xué)校招聘人員17人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東棗莊工程技師學(xué)院招聘?jìng)浒钢乒ぷ魅藛T30人管理單位筆試遴選500模擬題附帶答案詳解
- 2025年山東文化廳所屬事業(yè)單位招考工作人員管理單位筆試遴選500模擬題附帶答案詳解
- 機(jī)械原理課程設(shè)計(jì)網(wǎng)球
- 微課程設(shè)計(jì)花鐘
- 個(gè)人租房合同協(xié)議書(5篇)
- 新修訂中華人民共和國(guó)行政許可法全文解讀學(xué)習(xí)
- 廣東省廣州市花都區(qū)2024年七年級(jí)上學(xué)期期末數(shù)學(xué)試題【附答案】
- 期末測(cè)試模擬練習(xí) (含答案) 江蘇省蘇州市2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)上冊(cè)
- 上海市徐匯區(qū)2024-2025學(xué)年高一語(yǔ)文下學(xué)期期末試題含解析
- 品質(zhì)年度總結(jié)及來(lái)年計(jì)劃
- 學(xué)生體質(zhì)健康存在的主要問(wèn)題及改進(jìn)措施
- 2024年執(zhí)業(yè)藥師資格繼續(xù)教育定期考試題庫(kù)(附含答案)
- 建筑幕墻工程檢測(cè)知識(shí)考試題庫(kù)500題(含答案)
- 鋼棚鋼結(jié)構(gòu)施工方案
- 新版第三類醫(yī)療器械分類目錄
評(píng)論
0/150
提交評(píng)論