Android, BluetoothSocket - как узнать, существует ли уже соединение или мне нужно позвонить? - PullRequest
1 голос
/ 19 мая 2011

Привет Я пытаюсь реализовать библиотеку bluetooth, и в ней я хочу подключить сокет rfcomm один раз, а затем повторно использовать его для всех вызовов. Я хочу знать, подключен ли он или нет, чтобы узнать, должен ли я вызывать метод connect . Я не могу найти ничего в исходном коде для сокетов Bluetooth, так как это все нативные вызовы и в API не определен метод isConnected ... У кого-нибудь есть опыт с этим?

Ответы [ 3 ]

1 голос
/ 03 июля 2012

Я ответил на аналогичный вопрос здесь .Начиная с уровня API 14, в классе BluetoothSocket доступен метод isConnected.Для более низких уровней API вы можете открыть сокет, выполнить свою работу и снова закрыть его.Однако есть кое-что, что вам, возможно, придется рассмотреть, подробнее в связанном ответе.

1 голос
/ 08 июня 2013

isConnected () никогда не работает для меня. Попробуйте что-то вроде этого:

try {
  mSocket.connect()
} catch (IOException e) {
  // Create a new socket
  // mSocket.connect();
}
1 голос
/ 19 мая 2011

Я думаю, у вас есть переменная-член, поддерживающая состояние вашего соединения. при успешном соединении установите для него значение true, запустите поток, который всегда будет читать байты из входного потока сокетов, и, если вы получаете IOException в этом потоке, установите для флага значение false.

...