Java 后ICS版本中的蓝牙连接问题
我能够第一次连接到外部配对蓝牙硬件。之后,如果我重复连接/断开连接过程,有时会出现异常Java 后ICS版本中的蓝牙连接问题,java,android,sockets,bluetooth,android-bluetooth,Java,Android,Sockets,Bluetooth,Android Bluetooth,我能够第一次连接到外部配对蓝牙硬件。之后,如果我重复连接/断开连接过程,有时会出现异常 Exception = read failed, socket might closed or timeout, read ret: -1 经过多次试验后,他们能够再次连接。有时第二次试验本身就是成功的 该问题在以下设备中观察到:Nexux7(版本4.3)和MotoG(Kitkat) 连接代码: private static final UUID MY_UUID = UUID.fromString("000
Exception = read failed, socket might closed or timeout, read ret: -1
经过多次试验后,他们能够再次连接。有时第二次试验本身就是成功的
该问题在以下设备中观察到:Nexux7(版本4.3)和MotoG(Kitkat)
连接代码:
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(devAddress);
socket = device.createRfcommSocketToServiceRecord(MY_UUID);
并从asynctask调用socket.connect()
关闭插座的代码:主题
if (in != null) {
Logger.loge(CLASS_NAME + "." + "resetConnection", "in != null");
try {
in.close();
} catch (Exception e) {
// Log.d(TAG,"exception in closing inputstream - " + e.getMessage());
}
in = null;
}
if (out != null) {
Logger.loge(CLASS_NAME + "." + "resetConnection", "out != null");
try {
out.close();
} catch (Exception e) {
// Log.d(TAG,"exception in closing outputstream - " + e.getMessage());
}
out = null;
}
if (socket != null) {
Logger.loge(CLASS_NAME + "." + "resetConnection", "socket != null");
try {
socket.close();
} catch (Exception e) {
//Log.d(TAG,"exception in closing socket - " + e.getMessage());
}
socket = null;
}
我已经跟踪了链接
没有一个解决方案能帮助我解决这个问题
任何帮助都将不胜感激
谢谢实际的问题是,一旦连接了两个设备,插座就会打开。当其中一个套接字关闭时,另一个未关闭。当您尝试重新连接其他设备时,将不接受新套接字
解决方案是,当任何一个断开连接时,需要重新初始化两侧的连接服务,即需要正确关闭两侧的套接字。然后回到收听模式。然后,只有新的套接字连接才能接受。我在构建一个涉及蓝牙连接的应用程序时遇到了类似的问题。经过长时间的寻找,我发现了 我们无法以编程方式重新初始化两端的连接,因为其中一个是外部硬件,而不是电话。您是否仍在获取套接字可能已关闭的异常?