Как я могу достичь «подключенного состояния» при подключении к другому устройству Bluetooth? - PullRequest
0 голосов
/ 03 июня 2019

Мне удалось, чтобы Бонд (и я думаю, подключил) мой планшет и мой смартфон через Bluetooth. Я использовал это для помощи.

Мое текущее состояние таково, что mSocket.connect(); не выдает никаких исключений, и мой код перемещается в поток Connected.

Но я не хочу сейчас передавать данные, я просто хочу соединение, поэтому я установил run () из ConnectedThread в while(true){;}.

Моя проблема в том, что Brodcastreceiver из BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED не перемещается в STATE_CONNECTED, когда мое приложение не падает.

Может быть, потому, что я использую неправильный UUID? Нужен ли UUID моего телефона? Когда я пытаюсь подключиться к BluetoothDongle, нужен ли специальный UUID от Dongle?

Кстати: я не прошивал никаких программ на своем телефоне, я просто прошил приложение на своем планшете.

Код ConnectedThread, доступен только тогда, когда устройство # connect (); без исключения

private class ConnectedThread extends Thread{
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;
        private final OutputStream mmOutStream;

        public ConnectedThread(BluetoothSocket socket) {
            this.mmSocket= socket;
            InputStream tmpIn =null;
            OutputStream tmpOut =null;

            mProgressDialog.dismiss();

            try {
                tmpIn =this.mmSocket.getInputStream();
                tmpOut= this.mmSocket.getOutputStream();
            } catch (IOException e) {
                e.printStackTrace();
            }

            mmInStream =tmpIn;
            mmOutStream =tmpOut;
        }

        public void run() {
            byte[] buffer = new byte[1024];
            int bytes;
            while (true)
            {
                ;
            }
        }

        public void write(byte[] bytes) {
            String text = new String(bytes, Charset.defaultCharset());
            Log.d(TAG, "write: Writing to outputstream: " + text);
            try {
                mmOutStream.write(bytes);
            } catch (IOException e) {
                Log.e(TAG, "write: Error writing to output stream. " + e.getMessage() );
            }
        }

        public void cancel(){
            try {
                mmSocket.close();
            } catch (IOException e) { }
        }
    }

Я проверил mSocket.isConnected (); он вернул false.

...