亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java藍牙無線技術應用程序開發(fā)

        2009-09-30 05:54:42任繼濤,劉麗娜
        電腦知識與技術 2009年34期
        關鍵詞:藍牙

        任繼濤,劉麗娜

        摘要:介紹了Java藍牙無線技術API規(guī)范JSR82,并給出了采用JSR82規(guī)范開發(fā)藍牙無線應用程序的具體實現方法和部分實例代碼。

        關鍵詞:藍牙;Java;JSR82

        中圖分類號:TP393文獻標識碼:A 文章編號:1009-3044(2009)34-9855-02

        藍牙是一種低成本、短距離的無線通信技術,主要是為手機、PDA,GPS等移動設備提供相互通信的能力。藍牙標準是一項開放標準,由藍牙技術聯(lián)盟負責管理。藍牙技術目前的最新版本為2.1,相比Wi-Fi、WiMAX、3G等無線技術,藍牙芯片在功耗、成本和體積上占有優(yōu)勢。目前藍牙技術在手機、GPS和車載設備應用上越來越廣泛,發(fā)展?jié)摿薮?目前大多數手機已集成藍牙芯片并支持Java應用,使得采用Java技術開發(fā)手機藍牙無線應用程序極為方便。

        1 JSR82規(guī)范

        2002年,Java開發(fā)社區(qū)發(fā)布了基于Java平臺的藍牙API規(guī)范JSR82。JSR82規(guī)范對支持JAVA嵌入式設備的JAVA應用編程接口做出了明確規(guī)定,提供了一系列的標準API,可以幫助JAVA嵌入式設備無縫集成藍牙環(huán)境。

        Java藍牙無線技術API包含兩個包,javax.bluetooth和javax.obex。javax.bluetooth包含了核心的藍牙API,如藍牙設備管理,藍牙設備發(fā)現,藍牙服務查找、L2CAP等類。javax.obex屬于高級API,是一個不依賴于藍牙核心API的數據交換包。

        javax.bluetooth包定義了4個接口,6個類和3個異常。其中LocalDevice類、RemoteDevice類和DeviceClass類屬于設備管理API;UUID類、DataElement類、Discorylistener接口、DiscoveryAgent類和SeviceRecord接口屬于服務發(fā)現API;L2CAPconnection接口和L2CAPconnectionNotifier接口屬于連接API。

        2 藍牙應用程序模型

        每一個藍牙應用都表現為一個藍牙服務,提供服務的一方為服務端,消費服務的一方為客戶端。藍牙客戶端的行為包括初始化、發(fā)現周圍服務和設備、消費服務等,藍牙服務端的行為包括初始化、創(chuàng)建服務、注冊服務、等待客戶端訪問、創(chuàng)建連接提供客戶端消費等。

        具備藍牙功能的應用程序必須先要初始化藍牙堆棧,一個客戶端對遠端服務進行消費時首先要發(fā)現所有附近的設備,然后對每一個發(fā)現的設備搜索它感興趣的服務,而提供服務的服務端在服務發(fā)現數據庫(SDDB,Service Discovery Database)中對客戶端進行注冊,對他們進行有效廣播,然后等待引入的連接,在他們進入時接受他們并為他們提供服務。最后,當不再需要服務時,應用程序會在服務發(fā)現數據庫中將他們移除。

        2.1 初始化

        無論藍牙客戶端還是服務端,都首先要進行初始化,通常為初始化UUID類、獲得LocalDevice類等操作。服務端需要設置LocalDevice,讓設備處于可發(fā)現狀態(tài),設置發(fā)現模式,而客戶端不用設置發(fā)現模式。

        在javax.bluetooth中,UUID類用來唯一識別一個藍牙服務,每一個這樣的標識符都要在時空上保證唯一。UUID類有16位或32位的簡短UUID或128位的完整UUID。一般在創(chuàng)建時要生成自己的UUID,在服務搜索時要同時給出指定的UUID和通信協(xié)議的UUID。

        設備管理API中的LocalDevice類代表本地藍牙設備,初始化時首先通過getLocalDevice()方法取得LocalDevice對象實例,然后調用setDiscoverable()方法設置發(fā)現模式。有三種發(fā)現模式:DiscoveryAgent.GIAC代表無時間限制模式,DiscoveryAgent.LIAC代表在規(guī)定的時間內可被搜索,超時就進入不可搜索狀態(tài),DiscoveryAgent.NOT_DISCOVERABLE代表不可搜索狀態(tài)。

        示例代碼如下:

        uuid = new UUID("F0E0D0C0B0A000908070605040302010", false);//設置UUID

        ld=LocalDevice.getLocalDevice();//取得本地設備實例

        ld.setDiscoverable(DiscoveryAgent.GIAC);//設置可發(fā)現模式為無時間限制模式

        localBTAddress=ld.getBluetoothAddress(); //取得藍牙設備地址

        localBTName= ld.getFriendlyName(); //取得藍牙設備名稱

        RemoteDevice類代表了遠端設備,它提供了讀取遠端設備藍牙地址和藍牙名稱的方法。

        2.2 服務端操作

        1)創(chuàng)建服務并注冊:利用UUID計算URL,創(chuàng)建L2CAPConnectionNotifier 連接(對應L2CAP)或StreamConnectionNotifier連接(對應SPP)。利用LocaIDevice取得對應此L2CAPConneCtionNotifier 連接的服務ServiceRecord。如有必要,可以使用DataElement 來設置ServiceRecord的屬性。

        2)等待客戶訪問:調用ConnectionNotifier 的方法,等待連接。

        2.3 客戶端操作

        1)發(fā)現周圍設備和服務:在藍牙網絡中,客戶端通常不能直接得到服務端的藍牙地址,要使用服務發(fā)現API搜索周圍的設備和服務。為消費一項指定的服務,客戶端需要經過三個步驟:搜索設備、搜索服務和連接通信。服務發(fā)現API包括DataElement類、Discoverylistener接口、DiscoveryAgent類和ServiceRecord接口。

        首先通過LocaIDevice取得DiscoveryAgent 對象。利用該對象發(fā)起一次設備查詢,設備找到后會調用DiscoveryListener接口對應的方法,記錄下遠端設備RemoteDevice。再次通過DiscoveryAgent 對象,并提供剛剛找到的遠端設備,發(fā)起一次服務查詢來查詢感興趣的遠端服務。服務找到后會調用DiscoveryListener接口對應的方法,將ServiceRecord服務記錄下來。至此,一次完整的搜索結束,得到了感興趣的ServiceRecord列表。

        示例代碼如下:

        try {

        con=(StreamConnection)Connector.open(url);//打開連接

        remoteDevice=RemoteDevice.getRemoteDevice(con);//取得遠端設備

        remoteBTAddress=remoteDevice.getBluetoothAddress();//取得遠端設備藍牙地址

        remoteBTName=remoteDevice.getFriendlyName(false);//取得遠端設備名稱

        }

        catch(Exception e){…} ;//異常處理

        2)消費服務:通過ServiceRecord的相應方法可以取得遠端服務的URL。這樣就可根據服務的類型選擇創(chuàng)建對應SPP 的StreamConnection 或對應L2CAP 的L2CAPConnection來進行數據通信了。

        2.4 藍牙連接

        藍牙支持RFCOMM和L2CAP兩種類型的連接。藍牙API使用通用連接框架的StreamConnection和 StreamConnectionNotifier支持RFCOMM,連接類型L2CAPConnection和 L2CAPConnectionNotifier用于支持L2CAP。創(chuàng)建連接需要使用Connection.open(String urlName)方法,參數urlName代表了連接的URL,格式如下所示:

        sheme://host:port;parameters

        其中scheme 代表了連接的類型,對應RFCOOM為btspp,對應L2CAP為btl2cap。

        host對應服務端為localhost,對應客戶端為遠端藍牙地址。

        port對應服務端為UUID,對應客戶端為服務端口。

        parameters 指定了可選的設置,如服務名稱或MTU大小。

        使用服務端連接時,首先通過L2CAPConnectionNotifier或StreamConnectionNotifier建立連接,同時創(chuàng)建一個藍牙服務。

        L2CAPConnectionNotifier notifier = (L2CAPConnectionNotifier) Connector.open(url);

        然后調用acceptAndOpen()方法,該方法會自動將服務注冊到藍牙發(fā)現數據庫SDDB中,之后就可以被客戶端搜索了。

        L2CAPConnection con = notifier.acceptAndOpen();

        使用客戶端連接時,也是通過Connector.open(url)建立連接,參數url通過serviceRecord.getConnectionURL()取得,例如:

        String url = serviceRecord.getConnectionURL(int requiredSecurity,boolean mustBeMaster);

        L2CAPConnection con=(L2CAPConnection)Connector.open (url);

        3 結束語

        藍牙技術擁有連接簡單、互操作性強的特點,在無線辦公、電子支付、汽車工業(yè)、信息家電、醫(yī)療設備等領域中有著廣泛的應用。基于Java的JSR82規(guī)范開發(fā)無線藍牙應用程序,繼承了Java語言優(yōu)秀的平臺無關特性,可以大大增加程序的可移植性。

        參考文獻:

        [1] 詹建飛.J2ME開發(fā)精解[M].北京:電子工業(yè)出版社,2006.

        [2] 詹建飛.JavaME核心技術與最佳實踐[M].北京:電子工業(yè)出版社,2007.

        [3] 馬毅華,馮恩信.基于JSR-82規(guī)范的J2ME藍牙應用及其實現[J].工程應用,2004,(8).

        猜你喜歡
        藍牙
        藍牙音箱的直線之美
        簡單、易用,可玩性強Q AcousticsBT3藍牙音箱
        適合自己的才是最好的 德生(TECSUN) BT-50藍牙耳機放大器
        終于等到你 Shure舒爾藍牙耳機
        緊急:藍牙指尖陀螺自燃!安全隱患頻出
        玩具世界(2017年8期)2017-02-06 03:01:38
        多彩的極簡設計——OLI藍牙音響
        未发育成型小奶头毛片av| 中文字幕日韩人妻在线| 日韩欧美亚洲国产一区二区三区| 亚洲综合色婷婷七月丁香| 亚洲中文字幕一区二区在线| 日本精品少妇一区二区三区| 色婷婷亚洲精品综合影院| 无限看片在线版免费视频大全| 亚洲AⅤ无码片一区二区三区| 久久国产免费观看精品| 亚洲中文字幕精品一区二区| 一级二级三一片内射视频| 亚洲av午夜福利精品一区不卡| 亚洲一区二区三区尿失禁| 国产肉丝袜在线观看| 亚洲无码中文字幕日韩无码| 色妞一区二区三区免费视频| 国产精品毛片极品久久| 亚洲 另类 小说 国产精品| 免费人成视频在线| 激情人妻在线视频| 在线女同免费观看网站| 亚洲精品中文幕一区二区| 中文字幕+乱码+中文字幕一区| 99热这里只有精品4| 东京热无码人妻中文字幕| 青青草原综合久久大伊人精品 | 丁香婷婷激情俺也去俺来也| 不卡的av网站在线观看| 国产精品a免费一区久久电影| 欧美饥渴熟妇高潮喷水水| 精品久久久久久久久久久aⅴ| 美女福利一区二区三区在线观看| 日本三区在线观看视频| 国产自拍视频在线观看网站| 国产精品成人免费视频一区 | 亚洲依依成人综合在线网址| 国产精品成人久久一区二区| 国产精品国产高清国产专区| 午夜精品久久久久久久久久久久| 国产精品无码专区视频|