我是使用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.java看RemoteDeviceHelper.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/