我正在尝试在nexus 5(Android 6+)和Google Glass之间建立连接。 要连接的客户端代码:
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();
使用https://github.com/vicmns/BluetoothGlass作为参考。 我面临的问题是,在accept()返回后,连接会立即与以下错误断开连接:
02-15 16:20:42.769 2163-2414 /? E / bt_btif_sock_rfcomm: find_rfc_slot_by_id无法找到RFCOMM插槽ID:51 02-15 16:20:43.761 8345-8361 /? W / System.err:java.io.IOException:bt socket未处于侦听状态 02-15 16:20:43.762 8345-8361 /? W / System.err:在android.bluetooth.BluetoothSocket.accept(BluetoothSocket.java:453) 02-15 16:20:43.763 8345-8361 /? W / System.err:在android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:158) 02-15 16:20:43.763 8345-8361 /? W / System.err:在android.bluetooth.BluetoothServerSocket.accept(BluetoothServerSocket.java:144) 02-15 16:20:43.763 8345-8361 /? W / System.err:at knowles.com.serverapp.handlers.BluetoothConnectionHandler.doInBackground(BluetoothConnectionHandler.java:41) 02-15 16:20:43.763 8345-8361 /? W / System.err:at knowles.com.serverapp.handlers.BluetoothConnectionHandler.doInBackground(BluetoothConnectionHandler.java:16) 02-15 16:20:43.763 8345-8361 /? W / System.err:在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:在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:在java.lang.Thread.run(Thread.java:818)
我是蓝牙和玻璃的新手。任何帮助都非常感谢。没有得到现有帖子的帮助。 我在这里尝试的就是发送一个“你好”的#39;从客户端(Glass)到服务器(Mobile)的消息。
答案 0 :(得分:0)
在框架代码中,我们可以找到以下内容:
if (mSocketState != SocketState.LISTENING)
throw new IOException("bt socket is not in listen state");
很明显,如果套接字不在状态accept()
中,则方法LISTENING
会引发异常。
在大多数情况下,如果BluetoothServerSocket
的实例已经已关闭,则会发生这种情况。尝试接受连接之前,请确保BluetoothServerSocket
没有关闭。