数据元素类
一个服务可以有许多的属性,一些是强制性的,其他的是可选的。一个服务属性由一个数据元素对象来表现,这个数据元素对象提供了设置并取得属性值的方法。
强制性属性是在注册一个服务之后被自动设定的。这些属性包括:
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。