java.io.IOException:bt套接字未处于侦听状态[Android棉花糖]
我正试图在Nexus5(Android 6+)和谷歌眼镜之间建立连接。 要连接的客户端代码:java.io.IOException:bt套接字未处于侦听状态[Android棉花糖],java,android,android-6.0-marshmallow,google-glass,android-bluetooth,Java,Android,Android 6.0 Marshmallow,Google Glass,Android Bluetooth,我正试图在Nexus5(Android 6+)和谷歌眼镜之间建立连接。 要连接的客户端代码: try { bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord( BluetoothParametersHolder.uuids[0]); } catch (Exception e) { e.printStackTrace(); } //In a thread blueto
try {
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(
BluetoothParametersHolder.uuids[0]);
} catch (Exception e) {
e.printStackTrace();
}
//In a thread
bluetoothSocket.connect();
服务器端代码:
mmServerSocket = bluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(
BluetoothParametersHolder.NAME, BluetoothParametersHolder.uuids[0]);
//In a thread
socket = mmServerSocket.accept();
用作参考。
我面临的问题是,在accept()返回后,连接立即断开,出现以下错误:
02-15 16:20:42.769 2163-2414/?E/bt\U btif\U sock\U rfcomm:
按\u id查找\u rfc\u插槽\u找不到RFCOMM插槽id:51
02-15 16:20:43.761 8345-8361/? W/System.err:java.io.IOException:bt套接字未处于侦听状态
02-15 16:20:43.762 8345-8361/? W/System.err:at-android.bluetooth.BluetoothSocket.accept(BluetoothSocket.java:453)
02-15 16:20:43.763 8345-8361/? W/System.err:at-android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:158)
02-15 16:20:43.763 8345-8361/? W/System.err:at-android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:144)
02-15 16:20:43.763 8345-8361/? W/System.err:位于knowles.com.serverapp.handlers.BluetoothConnectionHandler.doInBackground(BluetoothConnectionHandler.java:41)
02-15 16:20:43.763 8345-8361/? W/System.err:位于knowles.com.serverapp.handlers.BluetoothConnectionHandler.doInBackground(BluetoothConnectionHandler.java:16)
02-15 16:20:43.763 8345-8361/? W/System.err:at-android.os.AsyncTask$2.call(AsyncTask.java:295)
02-15 16:20:43.764 8345-8361/? W/System.err:at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-15 16:20:43.764 8345-8361/? W/System.err:at-android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
02-15 16:20:43.764 8345-8361/? W/System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
02-15 16:20:43.764 8345-8361/? W/System.err:at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
02-15 16:20:43.782 8345-8361/? W/System.err:at java.lang.Thread.run(Thread.java:818)
我不熟悉蓝牙和玻璃。非常感谢您的帮助。没有从现有的帖子中得到太多帮助。
我在这里尝试的只是从客户端(Glass)向服务器(Mobile)发送一条“hello”消息。查看框架代码,我们可以找到以下内容:
if (mSocketState != SocketState.LISTENING)
throw new IOException("bt socket is not in listen state");
显然,如果套接字未处于侦听状态,则方法accept()
会引发异常
在大多数情况下,如果BluetoothServerSocket
的实例已关闭,则会发生这种情况。在尝试接受连接之前,请确保未关闭BluetoothServerSocket