1

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

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

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

为什么这么难找到答案?尽管我设法配对了一个我知道没有通过RemoteDevice.authenticate().

无论如何总结:

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

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

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

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

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

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

4

1 回答 1

1

配对设备列表:

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

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

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

一些评论:

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