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

时间:2015-10-15 09:59:43

标签: android sockets bluetooth

所以我收到了这个错误:W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1

我正在尝试使用三星Galaxy S4(API 21)和S2(API 16)通过蓝牙连接到自定义设备。有时它有效。我不知道会发生什么。

我知道答案还有其他问题,但我觉得我已经看过了所有问题。

  • 我不能使用" createRfCommSocket"来自BluetoothDevice的方法。
  • 我的UUID是正确的,因为我知道自定义设备中的UUID。
  • 我无法以编程方式启用和禁用BluetoothAdapter。
  • 我尝试清除App Cache。
  • 清除蓝牙缓存后,有时可以正常工作。

所以我的连接代码:

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()上发生错误。

1 个答案:

答案 0 :(得分:0)

我的手机离设备太远无法正确连接。