Как я могу отключить устройство BT в Java, используя bluecove? - PullRequest
0 голосов
/ 24 июня 2019

Я новичок в связи Bluetooth с использованием Java.Глядя на документацию по bluecove, я сделал следующее, чтобы иметь возможность связаться с устройством Bluetooth:

  1. Discover It
  2. Получить StreamConnection через Connector.open`
  3. Используйте InputStream и OutputStream для связи

Единственное, что я не нашел в документации, это как закрыть связь.

КодЯ реализовал, догадываясь о стратегии отключения, следующее:

    public void Connect() throws IOException
    {
        final int service = 5;        
        String conString = "btspp://"+Dev.getBluetoothAddress()+":"+service;

        Connection = (StreamConnection) Connector.open(conString);        
        inStream = Connection.openInputStream();
        outStream = Connection.openOutputStream();
    }

    public void Disconnect() throws IOException
    {        
        Connection.close();
    }

Dev - это RemoteDevice, полученный от Discovery.

Когда вызов функции Connect происходит после Disconnect, я всегда получаю следующее исключение:

javax.bluetooth.BluetoothConnectionException: Failed to connect; [10048] Only one usage of each socket address (protocol/network address/port) is normally permitted.

Может кто-нибудь сказать мне, как закрыть соединение?

1 Ответ

0 голосов
/ 24 июня 2019

Я нашел решение.Вызов Connection.close() должен быть выполнен после закрытия потоков, полученных при вызове функции Connection.openInputStream() и Connection.openOutputStream()

Функция отключения теперь следующая:

    public void Disconnect() throws IOException
    {        
        inStream.close();
        outStream.close();
        Connection.close();
        inStream = null;
        outStream = null;
        Connection = null;
    }
...