Bluecove:检查设备是否配对?

时间:2015-02-26 11:07:48

标签: java bluetooth bluecove

我是使用Bluecove API的新手,似乎在经过大量研究之后,我仍然无法找到一种方法来检查RemoteDevice是否已经与正在运行的机器配对。

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

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

为什么找到答案很难?该文档几乎没有说配对,虽然我设法配对我知道没有通过RemoteDevice.authenticate()配对的设备。

无论如何要总结:

  1. 如何仅在发现模式下开始扫描设备?
  2. 如何确定设备是否已配对?
  3. 注意: 无论配对状态如何,使用RemoteDevice.isAuthenticated()RemoteDeviceHelper.implIsAuthenticated(remoteDevice)始终都会返回false

    注2: 此外,从http://bluecove.googlecode.com/svn/trunk/bluecove/src/main/java/com/intel/bluetooth/RemoteDeviceHelper.java查看RemoteDeviceHelper.javaboolean paired有一个私人财产。

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

    在调试器模式下,查看特定的RemoteDevice,甚至更奇怪,更令人沮丧,我可以看到这个属性的值。当设备未配对时确实是错误的,如果设备配对,则确实如此! 那么为什么API不能这么说呢?

    我该怎么办?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

配对设备列表:

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

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

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

一些意见:

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