Bluecove API を使用して、コンピューター用の単純な Java Bluetooth サーバーを構築しています。Androidクライアント側アプリも構築していますが、問題はサーバー側アプリに起因しているようです。
誰かがすでにどこかに回答を投稿していると確信しており、過去数日間、さまざまなソリューションを厳密に試し、考えられるすべてのフォーラムを調べましたが、ソケットスレッドの接続を維持できないようです。
Android からコンピューターへ、またはコンピューターから Android への接続が確立された後、メッセージを交換できますが、バイトが交換された直後に、Bluecove スタックがシャットダウンし、明示的に指示しなくてもソケット接続を閉じます。 connection.close()。
while(some statement is true) ループを使用して接続を維持しようとしましたが、最初のメッセージを受信した後にソケットをシャットダウンしなくなりましたが、スマートフォンからコンピューターに送信する後続のメッセージを受信できませんまた。基本的には生きているのですが、スマートフォンからメッセージを送ろうとすると、新しいメッセージを受信できません。理由がわからない。
申し訳ありませんが、初めての投稿で、コードの最初の部分がページに正しく表示されない理由がわかりません。
コード作成接続:
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) {}
}