Android Bluetooth Socket Connect зависает - PullRequest
4 голосов
/ 01 марта 2012

У меня проблема, когда при вызове sock.connect () он просто зависает на неопределенное время.Нет никаких исключений и нет таймаута.

try
    {
        Method m = dev.getClass().getMethod("createRfcommSocket", new     Class[] {int.class});          
        sock = (BluetoothSocket) m.invoke(dev, 1); 
        sock.connect();
        Thread.sleep(100);
        in = sock.getInputStream();
        out = sock.getOutputStream();
    }
    catch(ConnectTimeoutException ex)
    {
        return false;
    }
    catch(IOException ex)
    {
        return false;
    }
    catch(Exception ex)
    {
        return false;
    }

Причина в том, что другое приложение уже использует устройство Bluetooth.Я пытаюсь вызвать сбой подключения и, по крайней мере, выдать исключение или что-то еще, чтобы сообщить мне, что устройство уже используется другим приложением.

Есть ли еще какие-либо предложения по этому вопросу?.

1 Ответ

0 голосов
/ 20 апреля 2012

Почему вы звоните Thread.Sleep?BluetoothSocket.connect - это блокирующий вызов.Это означает, что ваш Thread.Sleep не будет вызываться до тех пор, пока соединение не вернется с успешным соединением или не выдаст исключение.

Вы вызываете это в действии?Как это повредит вашей активности.У вас должно быть 3 потока для обработки Bluetooth, принимающая нить, соединительная нить и связанная нить.Как в примере BluetoothChat здесь:

http://developer.android.com/resources/samples/BluetoothChat/index.html

...