我被困在我的 Android 手机(三星 Galaxy)必须打开 2 个(或更多)连接到我的 PC(服务器)的地方,这是一个配对设备。为此,我在 PC 上使用 UUID 启动 SDP 服务器:00001101-0000-1000-8000-00805F9B34FB 和通道 2,在第一次连接后,我在 PC 上取消注册 SDP 服务并在通道 3 上再次注册(和相同的 UUID)并期望我的 android 手机“连接”到它以建立第二个蓝牙连接。第二个失败。
我发现的问题是,由于配对,“BluetoothSocket.connect”设备的通道编号和 UUID 是从缓存中提供服务的,并且没有被更新,所以我在服务器端的通道编号中的 SDP 发生了变化此处不可见,因为它仍在尝试连接到通道 2(旧通道)。
这个问题的解决方法(经过多次令人沮丧的尝试后发现)可能是通过在 getRemoteServiceChannel() 和 fetchRemoteUuids() 返回之前引入 updateDeviceServiceChannelCache(addr) 来更改 android.server.BluetoothService.java 文件,以便更新每个函数调用的通道号。
上述解决方案很可能是错误的,请原谅我。如果正确,请提出任何进一步的更改以及如何在 Eclipse 中使此更改永久化,或者在其他情况下(错误的解决方案),正确的方法。
注意:我有 android 2.3.5,来自设备的请求实际上来自我转发到 PC 的浏览器。我希望他们在不同的频道上。
谢谢。