快速业务通道

使用JSR-82 API实现OBEX图像传输 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
     ...

可以看到,如果用户选择了一个文件夹,FileNavigator 将遍历该文件夹,返回另一个列表并显示它 。然后,如果该用户选择一个文件,FileNavigator 内部类将打开到该文件的 FileConnection 并以名为 “file”的字节数组读取其内容。

ImageSender.BTUtility

使用JSR-82 API实现OBEX图像传输 - 编程入门网

ImageSender Midlet 使用的第二个辅助类是 BTUtility。您可能会猜到,BTUtility 内部类封装了其 余代码所调用的所有 JSR-82 蓝牙 API 方法。BTUtility 主要向 ImageSender Midlet 提供两个领域的 功能:发现附近的远程蓝牙设备,并对这些设备执行服务搜索。图 5 为显示 ImageSender 如何使用 BTUtility 的程序图。

使用JSR-82 API实现OBEX图像传输 - 编程入门网

图 5:描述 ImageSender 和 BTUtility 之间交互的程序图

如上所示,ImageSender 获得了 BTUtility 的新实例之后,该实例包含对 LocalDevice 和 DiscoveryAgent 类的引用。为了发现附近的蓝牙设备,必须调用 DiscoveryAgent.startInquiry()。该 实现将异步调用在该区域发现的每台蓝牙设备的 deviceDiscovered() 方法。最后,如果没有发现更多蓝 牙设备,JVM 将调用 inquiryCompleted() 方法。图 6 显示了 BTUtility 类发现的启用蓝牙技术的设备 列表。

使用JSR-82 API实现OBEX图像传输 - 编程入门网

图 6:BTUtility 类所发现的蓝牙设备

使用JSR-82 API实现OBEX图像传输(4)

时间:2011-07-28 Bruce Hopkins

BTUtility 执行的另一项工作是搜索远程蓝牙设备上的服务。如以下图 7 所示,搜索服务过程比发现 设备需要占用更多 CPU 时间。这就是为什么设备发现过程可以从 BTUtility 的构造函数发起,但是服务 搜索部分必须以 Thread 启动。

使用JSR-82 API实现OBEX图像传输 - 编程入门网

图 7:使用 BTUtility 搜索远程蓝牙设备上的服务。

幸运的是,BTUtility 扩展了 Thread 类,因此可防止该用户接口挂起。当 BTUtility 调用 DiscoveryAgent.searchServices() 时,如果发现匹配的服务,JVM 将异步调用其 serviceDiscovered() 方法。服务搜索过程完成时,JVM 将调用其 serviceSearchCompleted() 方法。作为备用方式,可以调用 DiscoveryAgent.selectService(),但是根据 JSR-82 规范,它只能返回附近一个服务提供商的 connectionURL。回顾上面的图 6 可知,在大多数环境中,您不知道文件将发送给谁。下面是完整的 BTUtility 清单:

  /**    * This is an inner class that is used for finding    * Bluetooth devices in the vicinity    *    */    class BTUtility extends Thread implements DiscoveryListener {      Vector remoteDevices = new Vector();      Vector deviceNames = new Vector();      DiscoveryAgent discoveryAgent;      // obviously, 0x1105 is the UUID for      // the Object Push Profile      UUID[] uuidSet = {new UUID(0x1105) };      // 0x0100 is the attrubute for the service name element      // in the service record      int[] attrSet = {0x0100};      public void run(){        try {          RemoteDevice remoteDevice = (RemoteDevice)remoteDevices.elementAt (get_devicesList().getSelectedIndex());          discoveryAgent.searchServices(attrSet, uuidSet, remoteDevice , this);        } catch(Exception e) {          e.printStackTrace();        }      }      public BTUtility() {        // clear the list out, just in case it''s not        get_devicesList().deleteAll();        try {          LocalDevice localDevice = LocalDevice.getLocalDevice();          discoveryAgent

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号