Все, что я хочу сделать, это отправить "привет" на первое входящее соединение 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 ().
У кого-нибудь есть идея? Если вам нужна дополнительная информация, пожалуйста, укажите.