代码只在第一次工作正常,如果我再次尝试连接它,它会抛出这个异常:
读取失败,套接字可能关闭或超时,读取ret:-1
这是我用来连接蓝牙打印机的函数:
public boolean openBT(Context context) throws IOException {
try {
// Standard SerialPortService ID
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mBluetoothAdapter.cancelDiscovery();
mmSocket.connect();
mmOutputStream = new DataOutputStream(mmSocket.getOutputStream());
mmInputStream = new DataInputStream(mmSocket.getInputStream());
} catch (NullPointerException e) {
e.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
发布于 2015-09-02 23:36:40
您应该在使用后关闭您的socket:
public boolean openBT(Context context) throws IOException {
try {
// Standard SerialPortService ID
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mBluetoothAdapter.cancelDiscovery();
mmSocket.connect();
mmOutputStream = new DataOutputStream(mmSocket.getOutputStream());
mmInputStream = new DataInputStream(mmSocket.getInputStream());
mmSocket.close(); //Socket closed
} catch (NullPointerException e) {
e.printStackTrace();
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;}
发布于 2018-08-25 05:23:47
如果您不知道UUID,请检查您的UUID并尝试执行以下操作:
UUID uuidSting = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
uuidSting = bluetoothDevice.getUuids()[0].getUuid();
}
请改用:
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
https://stackoverflow.com/questions/32357306
复制相似问题