gpt4 book ai didi

Android:BluetoothSocket readLine 超时

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

我应该在蓝牙输入流的 readLine 上插入超时。

    BluetoothDevice device = BluetoothAdapter.getDefaultAdapter()
.getRemoteDevice("00:00:00:00:00:00");

sock = device.createInsecureRfcommSocketToServiceRecord(UUID
.fromString(insecureUUID));
sock.connect();

in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String line = in.readLine(); //if no answer from device..i'll wait here forever

do { [...]

} while ((line = in.readLine()) != null);

连接工作正常,但我有一个连接到另一台设备的蓝牙串行转换器。如果第二个被关闭,我将永远等待 readLine。我有机会抛出异常或超时吗?谢谢!!

最佳答案

我遇到了同样的问题,我通过创建一个扩展 Thread 的 ResponderThread 解决了这个问题。该线程等待一定时间,然后检查输入流变量是否已更改。

try {
bufferedReader = new BufferedReader(new InputStreamReader(
bluetoothSocket.getInputStream()));

responderThread = new ResponderThread(bluetoothSocket, ACCESS_RESPONSE);
responderThread.start();
response= bufferedReader.read();

} catch (IOException ioe) {
// Handle the exception.
}

在我的例子中,如果 3 秒内没有响应,responderThread 将关闭套接字,并且执行进入我创建 responderThread 的类的 catch block 。然后处理异常。

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

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