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

      圖2:一個典型的具有藍牙功能的實際用例
    對這些用例的簡要介紹:
        .初始化--所有具備藍牙功能的應用程序必須先要初始化藍牙棧。
        .客戶端-- 一個客戶對遠端服務進行消費。首先它要發現所有四周的設備,然后對于每一個發現的設備搜索它感愛好的服務。
        .服務器端-- 一個為客戶端提供服務的服務器。它在服務發現數據庫(SDDB)中對客戶端進行注冊,對他們進行有效廣播。然后等待引入的連接,在他們進入時接受他們并為他們提供服務。最后,當不再需要服務時,應用程序會在服務發現數據庫(SDDB)中將他們移除。
 
    圖三:用例中參與活動的圖表:
新聞熱點
疑難解答