藍牙是一種低成本、短距離的無線通信技術(shù)。對于那些希望創(chuàng)建個人局域網(wǎng)(PANs)的人們來說,藍牙技術(shù)已經(jīng)越來越流行了。每個個人局域網(wǎng)都在獨立設(shè)備的周圍被動態(tài)地創(chuàng)建,并且為蜂窩式電話和PDA等設(shè)備提供了自動連接和即時共享數(shù)據(jù)的能力。
為了在Java平臺上開發(fā)支持藍牙技術(shù)的軟件,JCP定義了JSR82標準--Java藍牙無線技術(shù)APIs(JABWT)。
在這篇文章中,我將介紹一些關(guān)于藍牙技術(shù)的背景,概述一下支持藍牙技術(shù)的MIDlet應(yīng)用程序的典型要素,然后介紹給你核心的Java藍牙APIs。最后我們展示一些代碼來演示如何使用這些APIs。
實際上JSR82定義了兩個獨立的可選包:核心藍牙API和對象交換(OBEX)API。這篇文章將對這兩個中更為普遍的部分--核心藍牙包javax.bluetooth進行詳細地闡述,而OBEX API(對象交換),我們留到以后去討論。
藍牙無線電技術(shù)基于在工業(yè)、科學以及醫(yī)學(ISM)上公用的2.45GHz開放頻段,這一頻段無需授權(quán)并全球通用。當藍牙設(shè)備互相連接時,他們將組成一個微微網(wǎng)(piconet),即以一個主設(shè)備和7個從設(shè)備的形式動態(tài)創(chuàng)建網(wǎng)絡(luò)。藍牙也支持piconet網(wǎng)之間的連接:當一個piconet中的主設(shè)備成為另一個piconet的從設(shè)備時,piconet與piconet間將形成橋接。
藍牙協(xié)議棧提供了一組的高層協(xié)議和API以完成發(fā)現(xiàn)服務(wù)和模擬串行I/O,還有一個關(guān)于包分割和重組的低層協(xié)議以及多路技術(shù)協(xié)議和質(zhì)量服務(wù)。藍牙互操作性profiles--不要與J2ME profiles搞混--它是用來描述跨平臺互操作性和一致性需求的。
藍牙互操作性profiles包括三方面內(nèi)容:通用訪問profile(GAP)定義了設(shè)備管理功能性;服務(wù)發(fā)現(xiàn)應(yīng)用profiles定義了服務(wù)發(fā)現(xiàn)方面的內(nèi)容,串口profiles定義了互操作設(shè)備和模擬串口電纜的能力。你可以通過藍牙規(guī)范(Bluetooth specification)學習這些和其它的profiles。藍牙棧包含一個軟件棧來映射一個固件棧(firmware),由圖1所示:
JSR82揭示了藍牙軟件棧給Java平臺的開發(fā)者。其中引起我們興趣的是服務(wù)發(fā)現(xiàn)協(xié)議(SDP),用來模擬串口的串口profile RFCOMM,向上層協(xié)議提供諸如分割和重組等導向性連接的數(shù)據(jù)轉(zhuǎn)換操作的邏輯鏈路控制及適配profile(L2CAP),以及多路技術(shù)協(xié)議。注意JABWT不支持無連接L2CAP。
JABWT也包括對象交換API。OBEX也是高層API,它用來交換對象數(shù)據(jù),諸如電子商業(yè)卡和日歷標簽之間以vCard和vCalendar的格式進行數(shù)據(jù)傳輸。在藍牙上,對象交換通過RFCOMM發(fā)生。OBEX在最開始時是由紅外(IrDA)引入的,并且它可以在IrDA協(xié)議、TCP/IP或者是其他協(xié)議的頂層實現(xiàn)。
為了在Java平臺上開發(fā)支持藍牙技術(shù)的軟件,JCP定義了JSR82標準--Java藍牙無線技術(shù)APIs(JABWT)。
在這篇文章中,我將介紹一些關(guān)于藍牙技術(shù)的背景,概述一下支持藍牙技術(shù)的MIDlet應(yīng)用程序的典型要素,然后介紹給你核心的Java藍牙APIs。最后我們展示一些代碼來演示如何使用這些APIs。
實際上JSR82定義了兩個獨立的可選包:核心藍牙API和對象交換(OBEX)API。這篇文章將對這兩個中更為普遍的部分--核心藍牙包javax.bluetooth進行詳細地闡述,而OBEX API(對象交換),我們留到以后去討論。
藍牙無線電技術(shù)基于在工業(yè)、科學以及醫(yī)學(ISM)上公用的2.45GHz開放頻段,這一頻段無需授權(quán)并全球通用。當藍牙設(shè)備互相連接時,他們將組成一個微微網(wǎng)(piconet),即以一個主設(shè)備和7個從設(shè)備的形式動態(tài)創(chuàng)建網(wǎng)絡(luò)。藍牙也支持piconet網(wǎng)之間的連接:當一個piconet中的主設(shè)備成為另一個piconet的從設(shè)備時,piconet與piconet間將形成橋接。
藍牙協(xié)議棧提供了一組的高層協(xié)議和API以完成發(fā)現(xiàn)服務(wù)和模擬串行I/O,還有一個關(guān)于包分割和重組的低層協(xié)議以及多路技術(shù)協(xié)議和質(zhì)量服務(wù)。藍牙互操作性profiles--不要與J2ME profiles搞混--它是用來描述跨平臺互操作性和一致性需求的。
藍牙互操作性profiles包括三方面內(nèi)容:通用訪問profile(GAP)定義了設(shè)備管理功能性;服務(wù)發(fā)現(xiàn)應(yīng)用profiles定義了服務(wù)發(fā)現(xiàn)方面的內(nèi)容,串口profiles定義了互操作設(shè)備和模擬串口電纜的能力。你可以通過藍牙規(guī)范(Bluetooth specification)學習這些和其它的profiles。藍牙棧包含一個軟件棧來映射一個固件棧(firmware),由圖1所示:
JSR82揭示了藍牙軟件棧給Java平臺的開發(fā)者。其中引起我們興趣的是服務(wù)發(fā)現(xiàn)協(xié)議(SDP),用來模擬串口的串口profile RFCOMM,向上層協(xié)議提供諸如分割和重組等導向性連接的數(shù)據(jù)轉(zhuǎn)換操作的邏輯鏈路控制及適配profile(L2CAP),以及多路技術(shù)協(xié)議。注意JABWT不支持無連接L2CAP。
JABWT也包括對象交換API。OBEX也是高層API,它用來交換對象數(shù)據(jù),諸如電子商業(yè)卡和日歷標簽之間以vCard和vCalendar的格式進行數(shù)據(jù)傳輸。在藍牙上,對象交換通過RFCOMM發(fā)生。OBEX在最開始時是由紅外(IrDA)引入的,并且它可以在IrDA協(xié)議、TCP/IP或者是其他協(xié)議的頂層實現(xiàn)。

