gpt4 book ai didi

Android 蓝牙套接字连接挂起

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:18 29 4
gpt4 key购买 nike

我遇到一个问题,当我调用 sock.connect() 时它会无限期地挂起。没有异常,没有超时。

try
{
Method m = dev.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
sock = (BluetoothSocket) m.invoke(dev, 1);
sock.connect();
Thread.sleep(100);
in = sock.getInputStream();
out = sock.getOutputStream();
}
catch(ConnectTimeoutException ex)
{
return false;
}
catch(IOException ex)
{
return false;
}
catch(Exception ex)
{
return false;
}

原因是另一个应用程序已经在使用蓝牙设备。我试图让我的连接失败,至少抛出异常或其他东西让我知道该设备已被另一个应用程序使用。

还有其他解决此问题的建议吗?

谢谢。

最佳答案

为什么要调用 Thread.Sleep? BluetoothSocket.connect 是一个阻塞调用。这意味着您的 Thread.Sleep 将不会被调用,直到 connect 返回成功连接或抛出异常。

你是在 Activity 中调用它吗?因为这会挂起你的 Activity 。你应该有 3 个线程来处理蓝牙,一个接受线程,一个连接线程和一个连接线程。就像这里的 BluetoothChat 示例一样:

http://developer.android.com/resources/samples/BluetoothChat/index.html

关于Android 蓝牙套接字连接挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510948/

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