12

我已经发现了另一个设备并且我已经配对了它。至少我在我的 Android 手机上的配对设备列表中有它。

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

  1. 远程设备已关闭或不可用

  2. 远程设备忘记了配对,因为它只能配对另一台设备并且已与另一部手机配对

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

是否可以检查已经配对的设备是否真的可用记住它已与我的手机配对但未连接到它?这与检测设备是否已连接无关。配对和可见不等于已连接。

4

3 回答 3

4

我很抱歉报告,但您的设备无法知道另一个设备在范围内,除非尝试连接它。而且,要知道远程设备是否删除了配对,必须询问它,例如连接并查看它是否要求配对。

其他方法是让用户在连接之前确认这些,或者可能使用外部通道 TCP/IP 或 WiFi 或 NFC。如果这些都没有,那么魔法力量将是唯一的选择。:-,)

于 2013-02-11T20:52:04.947 回答
1
  1. 记住连接的设备实际上很简单。成功绑定到设备后,您将获得BluetoothDevice对象。你可以用 查询它的唯一mac地址getAddress()。获得地址后,将其保存到共享首选项。这包括“是否配对”——下次我们使用BluetoothAdapter并接收绑定设备列表时,我们可以在其中搜索保存的设备地址。
  2. 既然我们知道了设备的确切地址,我们如何判断它是否“真的可用”?好吧,如果您尝试发现设备startDiscovery ()(如果您发现设备是可发现的,并且您需要测试设备的完全连接性,则必须打开一个新套接字并查看它是否顺利。

根据我的经验,我处理了 3 种不同的可能的 BT 设备情况:

  1. 设备未绑定
  2. 设备绑定 - 但未连接
  3. 设备绑定 - 并连接
于 2013-02-10T21:42:56.010 回答
0

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

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

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

于 2013-02-15T11:09:52.007 回答