Почему мой код Bluetooth J2ME зависает после входящего соединения RFCOMM? - PullRequest
1 голос
/ 13 сентября 2010

Все, что я хочу сделать, это отправить "привет" на первое входящее соединение RFCOMM Bluetooth и затем выйти. Мой код работает на Nokia N73, но не на более современных устройствах, таких как Nokia E52. В Nokia E52 приложение зависает сразу после:

streamConnectionNotifier.acceptAndOpen();

Вот код:

Весь код внутри метода run () моей темы:

public class BTTest extends Thread {
    public void run() {
    ...
    }
}

Сначала я установил обнаруживаемое устройство Bluetooth:

try {
    LocalDevice localDevice = LocalDevice.getLocalDevice();
    localDevice.setDiscoverable(DiscoveryAgent.GIAC);
} catch (BluetoothStateException exception) {
    System.out.println(exception.toString());
}

Затем я готовлю свой сокет сервера:

StreamConnectionNotifier streamConnectionNotifier = null;
try {
    String url = "btspp://localhost:" + new UUID(0x1101).toString() + ";name=SampleServer";
    streamConnectionNotifier = (StreamConnectionNotifier)Connector.open(url);
    if (streamConnectionNotifier == null) {
        System.out.println("Error: streamConnectionNotifier is null");
        return;
    }
} catch (IOException exception) {
    System.out.println(exception.toString());
}

Затем я ожидаю входящего соединения RFCOMM Bluetooth:

StreamConnection streamConnection = null;
try {
    System.out.println("Waiting for incoming connection...");
    streamConnection = streamConnectionNotifier.acceptAndOpen();
    if (streamConnection == null) {
        System.out.println("Error: streamConnection is null");
    } else {
        System.out.println("Connection received.");
    }
} catch (IOException exception) {
    System.out.println(exception.toString());
}

Как только я получаю объект StreamConnection, я отправляю "привет" и затем закрываю соединение:

try {
    OutputStream out = streamConnection.openOutputStream();
    String s = "hello";
    out.write(s.getBytes());
    out.flush();
    streamConnection.close();
} catch (IOException exception) {
    System.out.println(exception.toString());
}

В Nokia N73 появляется сообщение «Соединение получено». на логи и я получаю «привет» на стороне клиента. Но на Nokia E52, Nokia 5230, Nokia E71 приложение зависает сразу после streamConnectionNotifier.acceptAndOpen ().

У кого-нибудь есть идея? Если вам нужна дополнительная информация, пожалуйста, укажите.

1 Ответ

0 голосов
/ 02 января 2011

Вместо использования SPU UUID (0x1101) вы должны указать свой 128-битный UUID (используя uuidgen или аналогичный инструмент). На телефонах, где висит приложение, возможно, запущена другая служба SPP.

...