8

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) {}
}
4

1 に答える 1