如何检测已发现和配对的设备是否可用?

时间:2012-11-29 12:52:31

标签: android bluetooth

我已经发现了其他设备,我已经将它配对了。至少我把它放在Android手机上的配对设备列表中。

现在在 BluetoothSocket.connect()上可能会出现两个问题:

  1. 远程设备已关闭或无法使用
  2. 远程设备忘记配对,因为它只能配对另一台设备,并且已与其他手机配对

    =>然后在一定的超时后连接失败。

  3. 是否可以检查已经配对的设备是否真的可用并且会记住它是否与我的手机配对而没有连接到它?这与检测设备是否已连接无关。配对和可见与连接不同。

3 个答案:

答案 0 :(得分:3)

我很遗憾,但是除了试图连接它之外,你的设备无法知道另一个是否在范围内。并且,为了知道远程设备是否已经移除了配对,人们将不得不询问它,例如,连接,看看它是否要求配对。

其他方式是让用户在连接之前确认这些,或者使用外部通道TCP / IP或WiFi或NFC。如果那些神奇的力量都不是唯一的选择。 : - , - )

答案 1 :(得分:1)

  1. 记住连接的设备实际上有点简单。成功绑定到设备后,您将获得BluetoothDevice个对象。您可以使用 getAddress() 查询其唯一的mac地址。获得地址后,将其保存为共享首选项。这包括“它是否配对” - 下次我们使用BluetoothAdapter并接收绑定设备列表时,我们可以在其中搜索保存的设备地址。
  2. 现在我们知道了设备的确切地址,我们怎么知道它是否“真的可用”?好吧,如果它足以让您尝试发现设备(startDiscovery ())以检查它是否在“发现”级别中可用 - 那么您就知道了这个技巧(列表项1)。如果您发现设备可以被发现,则需要测试设备是否完全连接,您必须打开一个新的插座并查看它是否顺利。
  3. 根据我的经验,我会处理3种不同的BT设备情况:

    1. 设备未绑定
    2. 设备绑定 - 但未连接
    3. 设备绑定 - 已连接

答案 2 :(得分:0)

您可以获取已配对的设备列表,并使用当前可发现的设备进行交叉验证。因此,这将为您提供处于可发现模式的配对设备。

但对于不可发现的设备,您必须与它们连接。如果成功发送远程设备的数据处于活动状态,请尝试在它们之间创建套接字连接。

此外,您可以使用远程设备的getBondState()来检查绑定状态并注册ACTION_BOND_STATE_CHANGED接收器以获取绑定状态更改的回调。