1

作为问题标题的延续,我通过从配对设备中选择一个BluetoothDevice设备并执行以下操作来获取 BluetoothSocket:

bSocket = device.createInsecureRfcommSocketToServiceRecord(myUUID);
bSocket.connect();

我的问题是这样的:假设在通过 UUID 进行通信的通道配对时被记录为通道 2,但在连接时,另一个设备已将其侦听器切换到通道 3,并在通道 3 上为相同的 myUUID。

当我进行连接时,它会尝试连接到通道 2(在缓存中,请参阅我的另一个问题)还是会(.connect 命令)执行新的 SDP 以获取当前通道,即 3 并尝试连接到频道 3(和 myUUID)。

是否可以通过connect命令查看尝试了哪个通道。

谢谢。

4

1 回答 1

1

Android 上有一些用于蓝牙的隐藏(模糊)功能可能会有所帮助。它被称为 IBluetooth。 这里是如何使用它的描述。

一旦你让它运行,尝试getRemoteServiceChannel函数和onRfcommChannelFound回调 - 它会得到正确的通道并分别显示为你的 UUID 找到的通道。

通常,由于您的错误,我希望您在第一次连接时获得通道 2,然后什么也得不到。这意味着 Android 很懒惰,没有进行另一次 SDP 浏览。

如何让它们正确连接?也许运气好的话,在通道 2 连接后,调用这些隐藏函数会刷新它的 SDP 数据库?!另一种方法是解除绑定并以编程方式重新绑定它们 - 我怀疑这将使它进行另一个 SDP 浏览......

有用别忘了点赞

于 2012-11-05T12:50:02.490 回答