




全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
使用Java藍牙無線通訊技術(shù)API(第一部分-API概覽)(2) 作者:C.Enriqu文章來源:SUNDeveloper點擊數(shù):11922更新時間:2005-5-14 數(shù)據(jù)元素類 一個服務(wù)可以有許多的屬性,一些是強制性的,其他的是可選的。一個服務(wù)屬性由一個數(shù)據(jù)元素對象來表現(xiàn),這個數(shù)據(jù)元素對象提供了設(shè)置并取得屬性值的方法。 強制性屬性是在注冊一個服務(wù)之后被自動設(shè)定的。這些屬性包括:ServiceRecordHandle,ServiceClassIDList, ServiceRecordState, ServiceID, 還有 ProtocolDescriptorList。 如果你想要的話,還可以設(shè)置可選屬性??蛇x屬性有很多,但是有三個值得關(guān)注:ServiceName,ServiceDescription, 和 ProviderName。 想得到更多的關(guān)于這些屬性的信息,請參看JABWT的文檔或藍牙規(guī)范。設(shè)備管理API 有3個主要的類來支持設(shè)備管理: .LocalDevice .RemoteDevice .DeviceClass 本地設(shè)備類LocalDevice類標(biāo)識了本地藍牙設(shè)備。藍牙應(yīng)用程序和LocalDevice之間的關(guān)系是典型的一對一關(guān)系:圖 10:本地設(shè)備類本地設(shè)備提供了方法來返回關(guān)于本地設(shè)備的信息,并且能夠進入Bluetooth manager: .getBluetoothAddress()返回藍牙設(shè)備地址。 .getDeviceClass()返回設(shè)備類。 .getFriendlyName()返回設(shè)備友好名稱,藍牙設(shè)備名通常是用戶在藍牙控制中心為其設(shè)置的我們將會在后面看到。 .getRecord()返回一個指定藍牙連接的服務(wù)記錄。 .updateRecord()方法用來為指定的ServiceRecord更新SDDB服務(wù)記錄。 .getDiscoverable()返回設(shè)備的可發(fā)現(xiàn)狀態(tài)。 .setDiscoverable()設(shè)置設(shè)備的可發(fā)現(xiàn)狀態(tài)。 .getDiscoveryAgent()返回一個參考給發(fā)現(xiàn)代理。 .getProperty()返回一個設(shè)備的藍牙屬性通過調(diào)用getProperty()方法你可以得到的屬性包括: .bluetooth.api.version,藍牙API版本 .bluetooth.sd.attr.retrievable.max,一次性能夠被獲得的服務(wù)記錄屬性的最大值 .bluetooth.connected.devices.max,支持的連接設(shè)備的最大值 .bluetooth.sd.trans.max,同時發(fā)生的服務(wù)發(fā)現(xiàn)處理的最大值 .bluetooth.l2cap.receiveMTU.max,L2CAP最大發(fā)射單元你可以在Javadoc文檔中或是規(guī)范中學(xué)習(xí)更多的有關(guān)藍牙屬性的內(nèi)容。遠端設(shè)備類 一個RemoteDevice的實例代表了一個遠端藍牙設(shè)備。在一個藍牙客戶端應(yīng)用程序可以進行服務(wù),消費之前,它必須發(fā)送一個設(shè)備請求來發(fā)現(xiàn)遠端設(shè)備。典型的藍牙應(yīng)用程序和遠端設(shè)備之間的關(guān)系是一對多:圖 11: 遠端設(shè)備類遠端設(shè)備(RemoteDevice)提供的方法中,有些很類似于本地設(shè)備(LocalDevice)里提供的方法: .getBluetoothAddress()返回藍牙地址。 .getFriendlyName()返回藍牙設(shè)備名。 .getRemoteDevice()返回相應(yīng)的被指定藍牙連接的遠端設(shè)備。 .authenticate()嘗試識別驗證遠端設(shè)備。 .authorize()為指定的藍牙連接去嘗試批準(zhǔn)遠端設(shè)備訪問本地設(shè)備。 .encrypt()嘗試為指定的藍牙連接開啟或關(guān)閉加密。 .isAuthenticated()測試是否遠端設(shè)備可以被驗證。 .isAuthorized()測試是否遠端設(shè)備已經(jīng)被藍牙控制中心授權(quán)訪問本地設(shè)備以進行藍牙連接。 .isEncrypted()測試是否本地設(shè)備和遠端設(shè)備之間的通信被加密。 .isTrustedDevice()測試是否遠端設(shè)備被藍牙控制中心指定為可信任的。DeviceClass類 一個DeviceClass對象代表一個設(shè)備的設(shè)備類(CoD),例如一個打印機或者一部電話。CoD包括一個主類,一個輔的類,和服務(wù)類型或服務(wù)類。DeviceClass提供了如下方法: .getMajorDeviceClass()方法獲取設(shè)備的主類。 .getMinorDeviceClass()方法獲取設(shè)備的輔類。 .getServiceClasses()獲取設(shè)備的服務(wù)類。當(dāng)一個設(shè)備被發(fā)現(xiàn),同時他的類也會被發(fā)現(xiàn);當(dāng)發(fā)現(xiàn)代理調(diào)用deviceDiscovered()時,其中一個參數(shù)就是DeviceClass。你可以通過它的getDeviceClass()方法找到本地設(shè)備的CoD。藍牙通信 JABWT連接是基于邏輯鏈路及適配層協(xié)議的。L2CAP是一個低級協(xié)議用來管理數(shù)據(jù)包,直到達到64k。L2CAP中的處理細節(jié)像消息分割和重組(SAR),多路連接。另外,串口Profile(SPP)提供RFCOMM,一個通過L2CAP層的串行模擬協(xié)議。 L2CAP和RFCOMM連接都是基于通用連接框架(GCF)的,直接通向接口和類的層次去創(chuàng)建連接和執(zhí)行IO命令。JABWT依靠L2CAP和RFCOMM協(xié)議擴展了通用連接框架(GCF)以分別支持通過L2CAPConnection 和StreamConnection類型連接。就在L2CAPConnection被JSR 82介紹的同時,StreamConnection在原始的javax.microedition.io的GCF中被定義了,它是依靠CLDC發(fā)展來的。注意,JABWT中L2CAPConnection僅支持面向連接的L2CAP連接。圖12顯示了以基于GCF形式的各接口通過藍牙網(wǎng)絡(luò)進行通信的過程:圖 12: 通用連接框架和藍牙連接類型 層次定義了L2CAP和Stream的連接和連接通知器。一個連接定義了一個連接終端,當(dāng)一個連接通知器執(zhí)行了服務(wù)行為時,它會等待并接受L2CAP連接處理。 處理L2CAP連接比處理流連接更復(fù)雜。使用L2CAP時,開發(fā)者們必須處理好最大消息的大?。醋畲髠鬏攩挝?,或叫做MTU)、打斷和重組等。這些復(fù)雜的事項在開發(fā)者使用流連接的時候被隱藏了,以使他們處理藍牙連通時獲得更好的效率。 如同所有的GCF連接類型,你可以通過調(diào)用GCF連接工廠方法javax.microedition.io.Connector創(chuàng)建藍牙連接。傳遞給Connector()方法的連接URL決定了要創(chuàng)建的連接類型:一個L2CAPConnection連接的URL格式:btspp:/hostname:CN | UUID;parameters一個RFCOMMStreamConnection連接的URL格式:btspp:/hostname:CN | UUID;parameters細節(jié)介紹: .btl2cap 是為L2CAPConnection設(shè)計的URL配置方案。 .btspp是為RFCOMM StreamConnection的URL配置方案。 .hostname 既可是localhost用于架設(shè)一個服務(wù)器連接,也可是一個用于創(chuàng)建客戶端連接的藍牙地址。 .PSM是協(xié)議/服務(wù)多路復(fù)用值,在一個客戶端連接服務(wù)器端時使用。在概念上是模擬一個TCP/IP端口。 .CN是信道數(shù)值,在一個客戶端連接服務(wù)器端時使用,也是模擬TCP/IP端口。 .UUID是UUID(通用唯一標(biāo)識符)值,在一個服務(wù)器上建立服務(wù)時使用。 .parameters(參數(shù))包括描述服務(wù)名稱的名字和有于安全的參數(shù):驗證、授權(quán)和加密。服務(wù)器連接和客戶端連接在連接的URL中,主機名稱告訴連接工廠是否它應(yīng)該創(chuàng)建一個客戶端異或服務(wù)器端。如果使用單詞localhost作為主機名將定義一個服務(wù)器連接??蛻舳讼胍B接到一個指定的的服務(wù)可以通過調(diào)用ServiceRecord.getConnectionURL()來找到該服務(wù)連接的URL。異常 javax.bluetooth核心API定義了三個異常類: .當(dāng)一個藍牙L2CAP、RFCOMM或是OBEX-over-RFCOMM連接不能被成功建立會拋出BluetoothConnectionException異常。 .一個試圖在錯誤狀態(tài)下進行藍牙操作時,會拋出BluetoothStateException異常。 .當(dāng)在本地服務(wù)發(fā)現(xiàn)數(shù)據(jù)庫(SDDB)中,添加或改變服務(wù)記錄失敗時,會拋出ServiceRegistrationException異常。藍牙安全 一個安全的藍牙連接應(yīng)該是經(jīng)過驗證、可選的獲得授權(quán)和被加密過的。這樣,藍牙連接在建立之初或以后就可以保證其安全性了。注意:不是所有的藍牙實現(xiàn)都提供了安全連接的。為了在建立一個藍牙連接時使其安全,就要給javax.microedition.io.Connector在連接URL字符串上提供適當(dāng)?shù)陌踩珔?shù): btspp:/hostname:CN | UUID;authenticate=true;authorize=true;encrypt=trueWhere: .authenticate驗證一個連接設(shè)備的身份。 .authorize授權(quán)一個連接中的設(shè)備(已被識別)是否被允許進入。 .encrypt指定連接需被加密。你已經(jīng)看到了想要連接到一個服務(wù)的客戶端可以通過調(diào)用ServiceRecord.getConnectionURL()方法以獲得服務(wù)連接的URL。該方法中的一個參數(shù)requiredSecurity,指定了返回的這個連接URL是否應(yīng)該包含可選的authenticate和encrypt等安全參數(shù)。關(guān)于requiredSecurity的有效值為:.ServiceRecord.NOAUTHENTICATE_NOENCRYPT意為authenticate=false; encrypt=false。.ServiceRecord.AUTHENTICATE_NOENCRYPT意為authenticate=true; encrypt=false。.ServiceRecord.AUTHENTICATE_ENCRYPT意為authenticate=true; encrypt=true。例如:.ServiceRecord sr = .;.String connURL = sr.getConnectionURL(ServiceRecord.AUTHENTICATE_ENCRYPT, false);. 如果不在建立一個連接的時候就使用這種方法保證安全性,你也可以在以后確保其安全性,這就要使用一組已知的遠端設(shè)備的安全方法:authenticate(),authorize()和 encrypt()。如果你這樣做了請注意,驗證必須在授權(quán)和加密之前進行。藍牙控制中心 藍牙控制中心(BCC)是設(shè)備上的一個管理軟件,它負責(zé)在作為授權(quán)中心改變本地藍牙的設(shè)置,包括:打開或關(guān)閉藍牙無線電,設(shè)置友好名稱以便在設(shè)備發(fā)現(xiàn)過程中進行廣播,開啟或屏蔽設(shè)備的發(fā)現(xiàn)模式,設(shè)置PIN碼,設(shè)置缺省安全屬性等等。BCC看上去表現(xiàn)如何全看實現(xiàn)的具體情況。在Sun Wireless Toolkit中對藍牙的支持 J2ME
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省訥河市實驗學(xué)校2025年八年級英語第二學(xué)期期中學(xué)業(yè)質(zhì)量監(jiān)測試題含答案
- 專用汽車培訓(xùn)
- 建筑工程技術(shù)規(guī)范知識題集
- 社區(qū)合作發(fā)展農(nóng)產(chǎn)品供應(yīng)協(xié)議
- 商業(yè)機密保護合同書
- 從課本中想到的議論文作文(14篇)
- 秋日的田野景色描寫作文5篇
- 詳盡月收入及全年獎金收入證明(6篇)
- 破碎機類型及特點
- 難忘的師生情深寫人作文14篇
- 國開《學(xué)前兒童語言教育活動指導(dǎo)》形考1-4試題及答案
- ???023綜合安防工程師認證試題答案HCA
- 濁度儀使用說明書
- GB/T 14404-2011剪板機精度
- GB/T 14294-1993組合式空調(diào)機組
- GA 1517-2018金銀珠寶營業(yè)場所安全防范要求
- 提高痰留取成功率PDCA課件
- 組合導(dǎo)航與融合導(dǎo)航解析課件
- 伊金霍洛旗事業(yè)編招聘考試《行測》歷年真題匯總及答案解析精選V
- 深基坑支護工程驗收表
- 顱腦CT影像課件
評論
0/150
提交評論