久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

在J2ME中開發(fā)藍牙無線軟件 - ZDNet China 網絡與安全

 ShangShujie 2007-05-21
越來越多的移動話機開始支持Java軟件,但是你知道其實很多設備也可以支持Java 2 Micro Edition(J2ME)軟件的運行么,?

適用于藍牙無線技術的JABWT標準(Java APIs for Bluetooth wireless technology),由JSR 82規(guī)范所定義,,支持藍牙應用軟件的快速開發(fā),,并保證其輕便,安全,,以及具有高 度的可用性,。而無線設備制造商們對該標準的回應就是——已經紛紛宣布移動話機以及其他產品將支持JABWT程序的運行。

本文將回顧一下在移動設備上開發(fā)藍牙Java的原理,,并說明一下如何為藍牙通訊書寫一個Java程序,。

Java藍牙API
Java藍牙API主要依賴于Java普通連接架構,該架構長期將其限制在J2ME之內,;不過,,也有建議將GCF包含進J2SE的。Java藍牙API可被用于一個相當廣泛的系統(tǒng)之內,。

藍牙Java API定義了兩個包:javax.bluetoothe,,用于核心Java藍牙API,以及Javax.obex,,用于目標交換協(xié)議(OBEX,,Object Exchange)?;贘SR 82規(guī)范,,潛在藍牙系統(tǒng)必須 支持一個藍牙控制中心(BCC,,Bluetooth Control Center),它作為一個控制面板類似程序,,允許用戶或者OEM制造商,,根據堆棧中的特定配置參數定義特定的值。特定情況下,, 它將被用于一個堆棧的初始化,。任何藍牙程序都有這些成分:棧初始化,設備管理,,設備發(fā)現(xiàn),,服務發(fā)現(xiàn),以及通訊,。

棧初始化
在預備開始無線通訊時,,你需要根據制造商指定的方式,對藍牙設備進行初始化,。(要談到具體的正確堆棧初始化步驟,,則超出了藍牙API規(guī)范所覆蓋的范圍)

在一篇關于“藍牙和Java起步 ”的Java.net文章中,Bruce Hopkins(藍牙Java的作者)演示了在Atinav Java藍牙SDK開發(fā)包中,,這一系列的設定是如何完成的(可以查看表格A),。有一點很重要,就是這些調用并不是JSR 82規(guī) 范的一部分,。其他的JSR 82部署可能會混合其他的方式,,來初始化堆棧。

設備管理
JSR 82規(guī)范引進了兩個類,,你可以用在設備管理方面:LocalDevice(本地設備)以及RemoteDevice(遠程設備),。

LocalDevice(本地設備)允許你獲取關于藍牙設備的靜態(tài)信息。它依賴于javax.blutetooth.DeviceClass類,,來去的設備的類型,,以及它所要求的服務種類。

RemoteDevice(遠程設備)允許你獲取有關附近藍牙設備的信息(比方說,,一個遠程藍牙設備的地址),。它描繪一個遠程設備(也就是說,在一定范圍內的某臺設備),,并提供獲 取該設備有關信息的方法,,包括該設備的藍牙地址以及名稱。

每臺藍牙設備都有一個獨一無二的硬件地址,,就像電腦的MAC地址一樣,。你可以設定設備發(fā)現(xiàn)的級別,并通過調用在LocalDevice對象中的setDiscoverable()方法(查看表格B),讓其他藍牙設備找到該設備,。

設備發(fā)現(xiàn)
無線設備需要一種機制,,允許他們發(fā)現(xiàn)其他設備,并獲得對它們的訪問權,。核心藍牙API的DiscoveryAgent類,,以及DiscoveryListener接口提供了必要的發(fā)現(xiàn)設備。一共有三種方 法來獲取可訪問設備的列表,。DiscoveryAgent.startInquiry()方法將設備放入一種調查模式,。要利用這種模式,應用程序必須定義一個事件聆聽器,,從而對和聆聽有關的事件做出 響應,。每當聆聽發(fā)現(xiàn)了一臺設備,就會調用DiscoveryListener.deviceDiscovered(),。當該聆聽完成或者被取消后,,就會調用DiscoveryListener.inquiryCompleted()。

如果該設備不希望被動等待發(fā)現(xiàn)其他設備,,它可以使用DiscoveryAgent.retrieveDevices()方法,,來獲取一個現(xiàn)存的列表。根據傳遞的參數不同,,該方法可以返回一個先前聆聽所 發(fā)現(xiàn)的設備列表,,或者返回一個本地設備告知藍牙控制中心的,它將經常聯(lián)系的已知設備列表,。表格C顯示了最簡單的方法,,當發(fā)現(xiàn)一臺新藍牙設備時,就向DiscoveryAgent要求一個對象,,通過DiscoveryListener接口來通知你。

服務發(fā)現(xiàn)
服務發(fā)現(xiàn)可以運行你發(fā)現(xiàn)的附近服務,,而不管到底是何種設備提供了它們,。DiscoveryAgent提供了方法,用來在一臺藍牙服務器設備上發(fā)現(xiàn)服務,,并初始化“發(fā)現(xiàn)服務”事務,。在 一個服務可以被發(fā)現(xiàn)之前,它必須被在一臺藍牙服務器設備上注冊或者廣告,。該服務器對一系列事務進行響應,,包括建立一個服務記錄,以說明所提供的服務,,接受來自客戶端的 連接,,以及向服務器的服務發(fā)現(xiàn)數據庫(SDDB,server‘s Service Discovery Database)添加一條服務記錄。一般情況下,,它工作起來很像網頁服務,。表格D就是一個服務注冊的示例。

通訊
兩臺設備必須共享一個通用通訊協(xié)議,。為了程序可以訪問多種不同類型的藍牙服務,,藍牙Java API提供了一種允許連接到任意使用RFCOMM, L2CAP, OBEX協(xié)議服務的機制。如果一個 服務使用了另一種協(xié)議(比如TCP/IP),,屬于這些協(xié)議的上一層,,那么該程序可以訪問服務,但是僅當它在程序中部署了其他協(xié)議后,,才可以使用CLDC通用連接架構,。

URL則使用了一種服務記錄,由數字和字母組成,,看起來就像是這樣:btspp://508031205080110F1B1B1D1C100:8,。這意味著一個客戶端應當使用一個藍牙串行接口類型(btspp:// )來和服務器上的頻道8建立連接,連接的設備地址是508031205080110F1B1B1D1C100,。設備地址和電腦的物理地址類似,。表格E顯示了簡單的RFCOMM連接看起來是怎樣的。

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多