Frage

Ich versuche, über Bluetooth eine Verbindung von einer Desktop-Anwendung (in Java geschrieben) zu einer Android-Anwendung herzustellen.
Für die Desktop-Anwendung, die ich verwende BlueCove API.
Wenn ich den Server (Desktop-Anwendung) und die Android-Anwendung starte, funktioniert die Verbindung einwandfrei.(d. h.Der Client sendet ein „Hello World“ und der Server gibt es in der Konsole aus.Aber wenn ich die Anwendung verlasse (durch Drücken der Zurück- oder Home-Taste) und zu ihr zurückkehre, scheint die Socket-Verbindung verloren zu sein.

Wie kann man prüfen, ob bereits eine Bluetooth-Buchse verbunden ist?
Ich würde gerne die Verbindung der Steckdose überprüfen, um sicherzustellen, dass keine Verbindung mehr hergestellt wird.

Was soll ich (falls es der Fall ist) in die schreiben? onPause, onResume Methoden?
Ich nehme an, dass in der onDestroy Methode sollte ich den Socket schließen.

Hier ist der Quellcode des Client-Servers:
Server
Klient

Ich habe es auch mit versucht IntentFilter um den Status der Verbindung zu überprüfen, aber es hat nicht funktioniert.

@Override
    public void onCreate(Bundle savedInstanceState) {
             // ..... 

        IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
        IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
        IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);
        this.registerReceiver(mReceiver, filter1);
        this.registerReceiver(mReceiver, filter2);
        this.registerReceiver(mReceiver, filter3);

}

//The BroadcastReceiver that listens for bluetooth broadcasts
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
           //Device found
            Toast.makeText(BluetoothClient.this, "Device not found", 2).show();
        }
        else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
          //Device is now connected
            Toast.makeText(BluetoothClient.this, "Device connected", 2).show();
        }
        else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
          //Done searching
            Toast.makeText(BluetoothClient.this, "Done searching", 2).show();
        }
        else if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) {
            //Device is about to disconnect
            Toast.makeText(BluetoothClient.this, "Device about to connect", 2).show();
        }
        else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
         //Device has disconnected
            Toast.makeText(BluetoothClient.this, "Device disconnected", 2).show();
        }           
    }
};
War es hilfreich?

Lösung

Server
Klient

Ich habe die beiden Quellcodedateien geändert.
Jetzt sollte es gut funktionieren.Es gibt einige kleine Fehler, wenn BT nicht vor dem Aufrufen der mobilen App geöffnet wird (es bleibt mit der Zeit zu oft hängen). Diejenigen, die diesen Client/Server verwenden möchten, sollten einen Blick darauf werfen onPause(), onResume(), onDestroy() Funktionen.

Das Problem war, dass ich die Steckdose nicht richtig verwendet habe.

Ich hoffe, dass es für diejenigen nützlich sein wird, die eine solche Anwendung mit BT implementieren möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top