蓝牙套接字:读取失败,套接字可能已关闭或超时

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) 通过蓝牙连接到自定义设备。有时它有效。我不知道会发生什么。

我知道还有其他有答案的问题,但我觉得我都看过了。

所以我的连接代码:

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 距离设备太远,无法正确连接。