蓝牙套接字:读取失败,套接字可能已关闭或超时
Bluetooth Socket: read failed, socket might closed or timeout
所以我收到了这个错误:W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
我正在尝试使用 Samsung Galaxy S4 (API 21) 和 S2 (API 16) 通过蓝牙连接到自定义设备。有时它有效。我不知道会发生什么。
我知道还有其他有答案的问题,但我觉得我都看过了。
- 我无法使用 BluetoothDevice 的 "createRfCommSocket" 方法。
- 我的 UUID 是正确的,因为我知道我的自定义设备的 UUID。
- 我无法以编程方式启用和禁用蓝牙适配器。
- 我尝试清除应用程序缓存。
- 清除蓝牙缓存后有时会起作用。
所以我的连接代码:
private class ConnectAsyncTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
try {
Thread.sleep(5000);
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(params[0]);
mBluetoothSocket = mBluetoothDevice
.createRfcommSocketToServiceRecord(uuid);
mBluetoothSocket.connect();
mOutputStream = mBluetoothSocket.getOutputStream();
mInputStream = mBluetoothSocket.getInputStream();
return true;
} catch (Exception e) {
e.printStackTrace();
try {
mBluetoothSocket.close();
} catch (Exception e1) {
e1.printStackTrace();
}
return false;
}
}
@Override
protected void onPostExecute(Boolean aBoolean) {
if (aBoolean) {
connectDeviceCallback.onDeviceConnected(null);
startReceiverThread();
startSendingThread();
} else {
connectDeviceCallback.onError("An error occured");
}
}
}
mBluetoothSocket.connect()
发生错误。
我的 phone 距离设备太远,无法正确连接。
所以我收到了这个错误:W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
我正在尝试使用 Samsung Galaxy S4 (API 21) 和 S2 (API 16) 通过蓝牙连接到自定义设备。有时它有效。我不知道会发生什么。
我知道还有其他有答案的问题,但我觉得我都看过了。
- 我无法使用 BluetoothDevice 的 "createRfCommSocket" 方法。
- 我的 UUID 是正确的,因为我知道我的自定义设备的 UUID。
- 我无法以编程方式启用和禁用蓝牙适配器。
- 我尝试清除应用程序缓存。
- 清除蓝牙缓存后有时会起作用。
所以我的连接代码:
private class ConnectAsyncTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
try {
Thread.sleep(5000);
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(params[0]);
mBluetoothSocket = mBluetoothDevice
.createRfcommSocketToServiceRecord(uuid);
mBluetoothSocket.connect();
mOutputStream = mBluetoothSocket.getOutputStream();
mInputStream = mBluetoothSocket.getInputStream();
return true;
} catch (Exception e) {
e.printStackTrace();
try {
mBluetoothSocket.close();
} catch (Exception e1) {
e1.printStackTrace();
}
return false;
}
}
@Override
protected void onPostExecute(Boolean aBoolean) {
if (aBoolean) {
connectDeviceCallback.onDeviceConnected(null);
startReceiverThread();
startSendingThread();
} else {
connectDeviceCallback.onError("An error occured");
}
}
}
mBluetoothSocket.connect()
发生错误。
我的 phone 距离设备太远,无法正确连接。