【问题标题】:Blackberry bluetooth pairing to undiscoverable device黑莓蓝牙配对到无法发现的设备
【发布时间】:2009-07-21 21:26:00
【问题描述】:

blackberry api 或 j2me 中是否有任何内容允许使用 MAC 地址与蓝牙设备进行通信和/或配对? (假设设备不可发现)

【问题讨论】:

    标签: blackberry java-me


    【解决方案1】:

    您想知道一般如何连接到给定 MAC 地址的设备,或者您对如何规避黑莓特定的安全/权限问题感兴趣?我不知道后一种情况,但对于第一种情况,这是一种方法:

    要在远程设备上进行服务搜索,您需要一个 javax.bluetooth.RemoteDevice 类的实例,您通常使用 DiscoveryAgent 通过设备搜索来检索该实例。如果已经有设备地址,则不能直接创建 RemoteDevice 实例,因为 RemoteDevice 对应的构造函数是受保护的。

    要避免这种情况,您可以创建一个扩展 RemoteDevice 的新类。在这个派生类中声明一个 public 构造函数,它接受设备地址。然后这个公共构造函数就可以调用受保护的超级构造函数:

    public class MyRemoteDevice extends RemoteDevice {
        public MyRemoteDevice(String addr) {
            super(addr);
        }
    }
    

    现在您无需进行设备扫描,也无需查询已知设备列表,即可获得特定设备地址的 RemoteDevice。

    注意:虽然这种方法根据我的经验有效,但如果 R​​IM 在 RemoteDevice 类中实现了一些隐藏功能,如果 RemoteDevice 实例被创建为显示在这里。

    【讨论】:

    • 这会给我一个设备,但我将如何去获取实际的“连接”。 (我可以在哪里进行发送/接收操作)我实际上发现我可以使用 Connector.open("btspp://MAC_ADDRESS:Channel_ID");所以这实际上对我有用。这是最好的方法吗?
    • 如果您现在有了 Channel_ID,那么以这种方式创建连接就完美了。如果您现在是设备地址而不是通道(因为它是动态分配并由服务发现协议 - SDP 发布),则如上所述创建设备很有用。在这种情况下,您可以使用设备进行服务搜索,最终获得用于特定 SPP 服务的通道。但是,使用恒定的频道 ID,您的方法就可以了。
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    相关资源
    最近更新 更多