我正在使用 Bluecove API 为我的计算机构建一个简单的 Java 蓝牙服务器。我也在构建一个 Android 客户端应用程序,但问题似乎源于服务器端应用程序。
我确定有人已经在某个地方发布了任何答案,并且过去几天我已经严格尝试了不同的解决方案,并查看了每个可能的论坛,但我似乎无法保持套接字线程上的连接。
在建立从 android 到计算机的连接后,我可以交换消息,反之亦然,从计算机到 android,但在交换字节后,Bluecove 堆栈会立即关闭并关闭套接字连接,即使我没有明确告诉它连接.close()。
我尝试使用一段时间(某些陈述为真)循环来保持连接处于活动状态,并且在收到第一条消息后它不再关闭套接字,但它无法接收我从智能手机发送到计算机的任何后续消息任何一个。虽然它基本上还活着,但当我尝试从智能手机发送新消息时,它无法接收到任何新消息。不知道为什么。
对不起,这是我第一次发帖,我不确定为什么代码的第一部分不能正确显示在页面上。
代码制作连接:
public BluetoothServer() {
try {
service = (StreamConnectionNotifier)
Connector.open("btspp://localhost:" + new UUID(0x1101).toString() +
";name=SampleServer");
System.out.println("open connection");
while (runState == true) {
connection = (StreamConnection) service.acceptAndOpen();
//send a greeting across to android
outputStream = connection.openOutputStream();
String greeting = "JSR-82 RFCOMM server says hello";
outputStream.write(greeting.getBytes());
//run thread that listens for incoming bytes through socket connection
Thread t = new Thread(new ConnectedThread(connection));
t.start();
}
} catch(IOException e) {}
}
用于监听传入数据的线程代码
public void run() {
try {
//open input stream to listen to data
inputStream = connection.openInputStream();
byte buffer[] = new byte[1024];
int bytes_read = inputStream.read(buffer);
String received = new String(buffer, 0, bytes_read);
System.out.println("received: " + received);
} catch(IOException e) {}
}