java二分搜查法的原理_利用Java蓝牙无线通信技巧API(第一局部 -API概览)(2)....

作者:C.Enriqu 文章起源:SUNDeveloper

数据元素类

一个服务能够有众多的属性,一些是迫使性的,其他的是可选的。一个服务属性由一个数据元素对象来出现,这个数据元素对象供给了设置并获得属性值的措施。

迫使性属性是在登记一个服务尔后被积极设定的。这些属性包括:ServiceRecordHandle,ServiceClassIDList,

ServiceRecordState, ServiceID, 还有 ProtocolDescriptorList。

万一你想要的话,还能够设置可选属性。可选属性有许多,然而有三个划算关怀:ServiceName,ServiceDescription,

和 ProviderName。

想获得更多的关于这些属性的消息,请比照JABWT的文档或蓝牙规范。

装备管教API

有3个重要的类来扶持装备管教:

.LocalDevice

.RemoteDevice

.DeviceClass

本地装备类

LocalDevice类标识了本地蓝牙装备。蓝牙利用过程和LocalDevice之间的联系是标兵的一对一联系:图

10:本地装备类本地装备供给了措施来归来关于本地装备的消息,并且能够进去Bluetooth manager:

.getBluetoothAddress()归来蓝牙装备地址。

.getDeviceClass()归来装备类。

.getFriendlyName()归来装备友好名目,蓝牙装备名等闲是用户在蓝牙扼制中心为其设置的我们将会在后面看到。

.getRecord()归来一个指定蓝牙连接的服务登记。

.updateRecord()措施用来为指定的ServiceRecord更新SDDB服务登记。

.getDiscoverable()归来装备的可觉察事态。

.setDiscoverable()设置装备的可觉察事态。

.getDiscoveryAgent()归来一个参看给觉察代办。

.getProperty()归来一个装备的蓝牙属性

穿越调用getProperty()措施你能够获得的属性包括:

.bluetooth.api.version,蓝牙API版本

.bluetooth.sd.attr.retrievable.max,顺次性能够被获得的服务登记属性的最大值

.bluetooth.connected.devices.max,扶持的连接装备的最大值

.bluetooth.sd.trans.max,同时发生的服务觉察处理的最大值

.bluetooth.l2cap.receiveMTU.max,L2CAP最大发射单元

你能够在Javadoc文档中或是规范中学习更多的有关蓝牙属性的内容。

远端装备类

一个RemoteDevice的实例代表了一个远端蓝牙装备。在一个蓝牙客户端利用过程能够举行服务,花费之前,它定然发送一个装备哀求来觉察远端装备。标兵的蓝牙利用过程和远端装备之间的联系是一对多:图

11:

远端装备类远端装备(RemoteDevice)供给的措施中,有些很相仿于本地装备(LocalDevice)里供给的措施:

.getBluetoothAddress()归来蓝牙地址。

.getFriendlyName()归来蓝牙装备名。

.getRemoteDevice()归来相应的被指定蓝牙连接的远端装备。

.authenticate()试探分辨检讨远端装备。

.authorize()为指定的蓝牙连接去试探批准远端装备拜会本地装备。

.encrypt()试探为指定的蓝牙连接开启或关闭加密。

.isAuthenticated()测验是否远端装备能够被检讨。

.isAuthorized()测验是否远端装备曾经被蓝牙扼制中心授权拜会本地装备以举行蓝牙连接。

.isEncrypted()测验是否本地装备和远端装备之间的通信被加密。

.isTrustedDevice()测验是否远端装备被蓝牙扼制中心指定为相可信的。

DeviceClass类

一个DeviceClass对象代表一个装备的装备类(CoD),例如一个打印机可能一部电话。CoD包括一个主类,一个辅的类,和服务种类或服务类。DeviceClass供给了如下措施:

.getMajorDeviceClass()措施获得装备的主类。

.getMinorDeviceClass()措施获得装备的辅类。

.getServiceClasses()获得装备的服务类。

当一个装备被觉察,同时他的类也会被觉察;当觉察代办调用deviceDiscovered()时,其中一个参数即便DeviceClass。你能够穿越它的getDeviceClass()措施找到本地装备的CoD。

蓝牙通信

JABWT连接是基于逻辑链路及适配层协议的。L2CAP是一个低级协议用来管教数据包,直到到达64k。L2CAP中的处理细节像消息瓜分和重组(SAR),多路连接。另外,串口Profile(SPP)供给RFCOMM,一个穿越L2CAP层的串行模仿协议。

L2CAP和RFCOMM连接都是基于通用连接框架(GCF)的,直接通往接口和类的层次去创立连接和厉行IO号召。JABWT攀附L2CAP和RFCOMM协议伸展了通用连接框架(GCF)以离别扶持穿越L2CAPConnection

和StreamConnection种类连接。就在L2CAPConnection被JSR

82推荐的同时,StreamConnection在原始的javax.microedition.io的GCF中被定义了,它是攀附CLDC进展来的。当心,JABWT中L2CAPConnection仅扶持面向连接的L2CAP连接。图12揭示了以基于GCF形式的各接口穿越蓝牙网络举行通信的过程:图

12: 通用连接框架和蓝牙连接种类

层次定义了L2CAP和Stream的连接和接连贯知器。一个连接定义了一个连接终端,当一个接连贯知器厉行了服务行动时,它会期待并接受L2CAP连接处理。

处理L2CAP连接比处理流连接更混杂。利用L2CAP时,开发者们定然处理好最大消息的大小(即最大传输单位,或叫做MTU)、打断和重组等。这些混杂的事项在开发者利用流连接的时候被隐藏了,以使他们处理蓝牙连贯时获得更好的效率。

好像所有的GCF连接种类,你能够穿越调用GCF连接工厂措施javaxwww.myki7.info.microedition.io.Connector创立蓝牙连接。递交给Connector()措施的连接URL定夺了要创立的连接种类:

一个L2CAPConnection连接的URL款式:

btspp://hostname:[CN |

UUID];parameters

一个RFCOMMStreamConnection连接的URL款式:

btspp://hostname:[CN |

UUID];parameters

细节推荐:

.btl2cap 是为L2CAPConnection设计的URL搭配计划。

.btspp是为RFCOMM StreamConnection的URL搭配计划。

.hostname 既然而localhost用于架设一个服务器连接,也然而一个用于创立客户端连接的蓝牙地址。

.PSM是协议/服务多路复用值,在一个客户端连接服务器端时利用。在观念上是模仿一个TCP/IP端口。

.CN是信道数值,在一个客户端连接服务器端时利用,也是模仿TCP/IP端口。

.UUID是UUID(通用单一标识符)值,在一个服务器上发生服务时利用。

.parameters(参数)包括描写服务名目的名字和有于平安的参数:检讨、授权和加密。

服务器连接和客户端连接

在连接的URL中,主机名目告诉连接工厂是否它该当创立一个客户端异或服务器端。万一利用单词localhost作为主机名将定义一个服务器连接。客户端想要连接到一个指定的的服务能够穿越调用ServiceRecord.getConnectionURL()来找到该服务连接的URL。

失常

javax.bluetooth中心API定义了三个失常类:

.当一个蓝牙L2CAP、RFCOMM或是OBEX-over-RFCOMM连接不能被获胜发生会抛出BluetoothConnectionException失常。

.一个试图在讹谬事态下举行蓝牙垄断时,会抛出BluetoothStateException失常。

.当在本地服务觉察数据库(SDDB)中,增加或改换服务登记失利时,会抛出ServiceRegistrationException失常。

蓝牙平安

一个平安的蓝牙连接该当是穿越检讨、可选的获得授权和被加密过的。这么,蓝牙连接在发生之初或尔后就能够保证其平安性了。

当心:不是所有的蓝牙告终都供给了平安连接的。

为了在发生一个蓝牙连接时使其平安,即将给javax.microedition.io.Connector在连接URL字符串上供给贴切的平安参数:

btspp://hostname:[CN |

UUID];authenticate=true;authorize=true;encrypt=true

Where:

.authenticate检讨一个连接装备的身份。

.authorize授权一个连接中的装备(已被分辨)是否被批准进去。

施华蔻> .encrypt指定连接需被加密。

你曾经看到了想要连接到一个服务的客户端能够穿越调用ServiceRecord.getConnectionURL()措施以获得服务连接的URL。该措施中的一个参数requiredSecurity,指定了归来的这个连接URL是否该当包括可选的authenticate和encrypt等平安参数。关于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);

...

万一不在发生一个连接的时候就利用这种措施保证平安性,你也能够在尔后确保其平安性,这即将利用一组已知的远端装备的平安措施:authenticate(),authorize()和

encrypt()。万一你这么做了请当心,检讨定然在授权和加密之前举行。

蓝牙扼制中心

蓝牙扼制中心(BCC)是装备上的一个管教软件,它负责在作为授权中心改换本地蓝牙的设置,包括:敞开或关闭蓝牙无线电,设置友好名目以便在装备觉察过程中举行广播,开启或屏障装备的觉察形式,设置PIN码,设置缺省平安属性等等。BCC看上去出现如何全看告终的翔事实况。

在Sun Wireless Toolkit中对蓝牙的扶持

J2ME Wireless Toolkit 2.2扶持JABWT。toolkit的Preferences

Utility(利用溺爱)供给了新的Bluetooth/OBEX标签以举行蓝牙参数设置。在此栏下OBEX设置和三个蓝牙子标签,它们离别是:Internal

Properties(内部属性)标签批准你设置装备搜查的超随工夫,System

Properties(系统属性)标签批准你定义一些调用LocalDevice.getProperty()措施便可获得蓝牙属性。BCC

Propertiesimport java.awt.Dimension; /***Example class.The x and

y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值