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

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

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

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

无论如何总结:


如何仅在发现模式下开始扫描设备?
如何确定设备是否已经配对?


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

笔记2 :
此外,从http://bluecove.googlecode.com/svn/trunk/bluecove/src/main/java/com/intel/bluetooth/RemoteDeviceHelper.javaRemoteDeviceHelper.java,还有boolean paired的私有属性。

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

甚至在调试器模式下,通过查看特定的RemoteDevice,都非常奇怪和令人沮丧,我可以看到此属性的值。如果设备未配对,则确实为false;如果设备未配对,则为true!那么,为什么API不能告诉我呢?

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

最佳答案

配对设备列表:

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


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

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


一些评论:


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

关于java - Bluecove:检查设备是否配对?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28740810/

10-12 06:01