Соединение Bluetooth Socket не работает в классе AsyncTask - PullRequest
0 голосов
/ 27 мая 2020

У меня проблема с подключением к сопряженному устройству Bluetooth. Я пробовал много решений на этом сайте, но ни одно из них не работает.

Сценарий таков, что я отображал список сопряженных Bluetooth-устройств в виде списка. И добавляет на него onItemClickListener для подключения к выбранному устройству. Я создал асинтез, чтобы отделить задачу подключения от основного потока, но я обнаружил ошибку. это говорит.

W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
I/System.out: read failed, socket might closed or timeout, read ret: -1

вот моя AsyncTask, которая выполняет соединение.

 private class BluetoothConnect extends AsyncTask<Void,Void,Void>{
        private BluetoothSocket mmSocket;
        private final BluetoothDevice mmDevice;

        private BluetoothConnect(BluetoothDevice device) {
            BluetoothSocket tmp = null;
            mmDevice = device;
            try {
                    tmp = device.createInsecureRfcommSocketToServiceRecord(mUUID);
            } catch (IOException e) {
                e.printStackTrace();
            }
            mmSocket = tmp;
        }

        @Override
        protected Void doInBackground(Void... voids) {
            bluetoothAdapter.cancelDiscovery();
                try {
                    // Connect to the remote device through the socket. This call blocks
                    // until it succeeds or throws an exception.
                    mmSocket.connect();
                } catch (IOException connectException) {
                    // Unable to connect; close the socket and return.
                    try {
                        mmSocket.close();
                    } catch (IOException closeException) {
                        Log.e(TAG, "Could not close the client socket", closeException);
                    }
                }
            return null;
        }
    }

Я использовал общий UUID для bluetooth, static final UUID mUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");.

Спасибо заранее, если кто-то может сказать, что я делаю не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...