Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 后ICS版本中的蓝牙连接问题_Java_Android_Sockets_Bluetooth_Android Bluetooth - Fatal编程技术网

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;
}
我已经跟踪了链接

没有一个解决方案能帮助我解决这个问题

任何帮助都将不胜感激


谢谢

实际的问题是,一旦连接了两个设备,插座就会打开。当其中一个套接字关闭时,另一个未关闭。当您尝试重新连接其他设备时,将不接受新套接字


解决方案是,当任何一个断开连接时,需要重新初始化两侧的连接服务,即需要正确关闭两侧的套接字。然后回到收听模式。然后,只有新的套接字连接才能接受。

我在构建一个涉及蓝牙连接的应用程序时遇到了类似的问题。经过长时间的寻找,我发现了

我们无法以编程方式重新初始化两端的连接,因为其中一个是外部硬件,而不是电话。您是否仍在获取套接字可能已关闭的异常?