




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用Java蓝牙无线通讯技术API(第一部分-API概览)(2) 作者:C.Enriqu文章来源:SUNDeveloper点击数:11922更新时间:2005-5-14 数据元素类 一个服务可以有许多的属性,一些是强制性的,其他的是可选的。一个服务属性由一个数据元素对象来表现,这个数据元素对象提供了设置并取得属性值的方法。 强制性属性是在注册一个服务之后被自动设定的。这些属性包括: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连接工厂方法javax.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=trueWhere: .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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自卸车辆维修合同范本
- 2025至2030中国紫外线感染控制装置行业项目调研及市场前景预测评估报告
- 2025至2030中国硫化黑染料市场销售模式与竞争前景分析报告
- 超声专业考试试题及答案
- 旅游专业考试试题及答案
- 商用网站委托开发合同
- 英语专业阅读试题及答案
- 护理药理知识与技能题库及答案解析
- 门诊护理专科考试题库及答案解析
- 心理护理问答题库及答案解析
- 抽油机井示功图分析判断1
- GB/T 39141.3-2022无机和蓝宝石手表玻璃第3部分:定性标准和试验方法
- 特劳特《定位》PPT通用课件
- GB/T 1732-1993漆膜耐冲击测定法
- 二十四节气演讲稿
- GA/T 2000.7-2014公安信息代码第7部分:实有人口管理类别代码
- 2023年安徽国贸集团控股有限公司招聘笔试模拟试题及答案解析
- 初中作文指导-景物描写(课件)
- 植物灰分的测定
- 实验室资质认证评审准则最新版本课件
- 《横》书法教学课件
评论
0/150
提交评论