999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java藍牙無線技術應用程序開發

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

任繼濤,劉麗娜

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

關鍵詞:藍牙;Java;JSR82

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

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

1 JSR82規范

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

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

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

2 藍牙應用程序模型

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

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

2.1 初始化

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

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

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

示例代碼如下:

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

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

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

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

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

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

2.2 服務端操作

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

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

2.3 客戶端操作

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

首先通過LocaIDevice取得DiscoveryAgent 對象。利用該對象發起一次設備查詢,設備找到后會調用DiscoveryListener接口對應的方法,記錄下遠端設備RemoteDevice。再次通過DiscoveryAgent 對象,并提供剛剛找到的遠端設備,發起一次服務查詢來查詢感興趣的遠端服務。服務找到后會調用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。這樣就可根據服務的類型選擇創建對應SPP 的StreamConnection 或對應L2CAP 的L2CAPConnection來進行數據通信了。

2.4 藍牙連接

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

sheme://host:port;parameters

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

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

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

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

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

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

然后調用acceptAndOpen()方法,該方法會自動將服務注冊到藍牙發現數據庫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 結束語

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

參考文獻:

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

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

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

主站蜘蛛池模板: 日本成人福利视频| 无码精品国产dvd在线观看9久| 国内精自线i品一区202| 国产国产人在线成免费视频狼人色| 婷婷伊人五月| 亚洲人成网站在线观看播放不卡| 欧美高清三区| 国产99视频精品免费观看9e| 国产精品一区二区在线播放| 在线免费亚洲无码视频| 国产sm重味一区二区三区| 国产成人免费高清AⅤ| 国产AV毛片| 亚洲浓毛av| 国产在线观看成人91| 中字无码av在线电影| 亚洲国产成人久久精品软件| 欧美在线一二区| 大香伊人久久| 国产成人综合久久精品下载| 免费看一级毛片波多结衣| 91精品人妻一区二区| 免费国产高清视频| 亚洲高清在线天堂精品| 国产欧美日韩综合在线第一| 成人综合在线观看| 白浆视频在线观看| 91精品视频播放| 亚洲第一色视频| 全午夜免费一级毛片| 狠狠干欧美| 亚洲欧美日韩中文字幕在线一区| 国产小视频在线高清播放| 中美日韩在线网免费毛片视频 | 日韩第一页在线| 久久成人免费| 精品少妇三级亚洲| 国产在线拍偷自揄拍精品| 国产人人射| 久久国产免费观看| 亚洲丝袜中文字幕| 波多野结衣一区二区三区AV| 国产精品视频猛进猛出| 欧美精品在线免费| 中文字幕亚洲无线码一区女同| 污视频日本| 国产精品妖精视频| 亚洲综合经典在线一区二区| 人妻少妇乱子伦精品无码专区毛片| 日韩午夜福利在线观看| 成年人福利视频| 久久www视频| 国产v欧美v日韩v综合精品| 亚洲成人黄色在线| 免费一级全黄少妇性色生活片| 中文国产成人精品久久一| 影音先锋丝袜制服| 亚洲区视频在线观看| 国产精品久久久久鬼色| 婷婷综合亚洲| 国产亚洲男人的天堂在线观看| 久久精品最新免费国产成人| 免费无遮挡AV| 国产精品亚洲精品爽爽| 国模视频一区二区| 国产网友愉拍精品视频| 日韩欧美高清视频| 国产精品欧美日本韩免费一区二区三区不卡| 丝袜高跟美脚国产1区| 亚洲永久色| 亚洲中文久久精品无玛| 欧美成人一级| 久久一色本道亚洲| 色综合天天视频在线观看| 亚洲高清无码久久久| 日本三级黄在线观看| 成人综合网址| 亚洲h视频在线| 欧美成人怡春院在线激情| 久久香蕉国产线| 亚洲最猛黑人xxxx黑人猛交 | 日本午夜影院|