【问题标题】:Bluecove : check if device is paired?Bluecove:检查设备是否配对?
【发布时间】:2016-01-11 06:07:57
【问题描述】:

我刚开始使用Bluecove API,似乎经过大量研究后,我仍然无法找到一种方法来检查RemoteDevice 是否已经与跑步机配对。

首先,我成功地开始了扫描,但是,我觉得奇怪的是Bluecove 没有提供仅查找处于可发现模式的设备的方法,因此需要检查是否配对.. .

更准确地说,我正在“翻译”一个我用 C# 开发的项目,使用 InTheHand.dll 进行蓝牙管理。这个组件很棒,帮助我实现了我想做的事情:扫描处于可发现模式和范围内的设备,启动配对过程,通过Bluetooth streams 处理数据。 我需要对 Bluecove 做同样的事情

为什么很难找到答案?尽管我设法配对了一个我知道未通过 RemoteDevice.authenticate() 配对的设备,但文档中几乎没有提及配对。

总之总结一下:

  1. 如何仅对处于发现模式的设备开始扫描?
  2. 如何判断设备是否已经配对?

注意: 无论配对状态如何,同时使用 RemoteDevice.isAuthenticated()RemoteDeviceHelper.implIsAuthenticated(remoteDevice) 始终返回 false

注 2: 此外,看看RemoteDeviceHelper.javafrom http://bluecove.googlecode.com/svn/trunk/bluecove/src/main/java/com/intel/bluetooth/RemoteDeviceHelper.javaboolean paired 有一个私有属性。

似乎没有公共方法会使用它 ...

更奇怪,更令人沮丧的是,在调试器模式下,查看特定的RemoteDevice,我可以看到这个属性的值。设备未配对时确实为假,设备已配对时为真! 那么为什么 API 不能告诉我呢?

我该怎么办?感谢您的帮助!

【问题讨论】:

    标签: java bluetooth bluecove


    【解决方案1】:

    配对设备列表:

    import javax.bluetooth.*
    ...
    RemoteDevice[] rdList = LocalDevice.getLocalDevice().getDiscoveryAgent().retrieveDevices(DiscoveryAgent.PREKNOWN);
    

    获取配对设备的名称和地址:

    rdList[0].getBlueToothAddress();
    rdList[0].getFriendlyName(true);
    

    一些cmets:

    1. 配对设备列表可以包含多个同名设备
    2. getFriendlyName() 的布尔参数表示代理是否应向设备查询其名称,但如果设备不可用则返回缓存名称(至少我的测试表明)

    【讨论】:

      猜你喜欢
      • 2021-12-04
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多