gpt4 book ai didi

Android BluetoothSocket.connect 超时

转载 作者:太空狗 更新时间:2023-10-29 13:38:17 24 4
gpt4 key购买 nike

我遇到了这种罕见的情况,在这种情况下,我尝试将 BluetoothSocket 连接到服务器,但连接方法不会返回。这是我的代码:

            device = _adapter.getRemoteDevice(_address);
socket = device.createInsecureRfcommSocketToServiceRecord(_uuid);
_adapter.cancelDiscovery();
socket.connect();

这是在 AsyncTask 中运行的,任务永远不会完成,因为连接永远被阻塞...这也阻止了重新连接到服务器(我还没有弄清楚我是不能完全使用 BT 还是不能使用相同的目标地址和 UUID 重新连接)。有超时连接的方法吗?

最佳答案

解决您的问题的一种方法是让另一个线程通过调用 cancel(true)(这将中断 AsyncTask 线程)或通过在 Socket 上调用 close() 来中断 AsyncTask。例如,它可以由主线程完成,方法是在 socket.connect() 之前向其处理程序发送延迟回调,并在之后直接将其删除。

所以在你的情况下

post timeout callback to handler, with reference to socket or to this (AsyncTask)
try {
socket.connect();
} catch (IOException e) { // and/or InterruptedException
couldn't connect
} finally {
remove callback (this must be done here as the IO exception might be caused by something other than the timeout callback)
}

关于Android BluetoothSocket.connect 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com