Android : Bluetooth Socket Verbindung schlägt bei schon gepaired Devices fehl

Fasibio

Mitglied
Hallo,
ich kämpfe jetzt schon seit längerem mit Folgendem Fehler:

Ich öffne mit Java einen Socket.
Wenn das Androidgerät und meine PC noch nicht gepaired sind funktioniert alles, so wie ich das möchte.
Bevor sich dann, das Androidhandy mit PC verbindet, Popt ein Fenster auf in dem ich die Beiden Geräte Pairen muss.
Wenn ich dies tue, verbindet sich der Client mit dem Server.

Starte ich jedoch das Androidprogramm, nachdem die Beiden Geräte schon gepaired sind. Bekomme ich ein IOException:
Java:
BT_socket = choosedDevice.createRfcommSocketToServiceRecord(uuid);
if (BT_socket.isConnected()){
	BT_socket.close();
}
			
adapter.cancelDiscovery(); 

BT_socket.connect();// <--  hier bekomme ich ein IO Exception "read failed, socket might closed or timeout, read ret: -1"
Ich habe das hier ausversucht:

Java:
if (one.getName().toLowerCase().equals(deviceName.toLowerCase())){
    BluetoothDevice dev  = adapter.getRemoteDevice(one.getAddress());
		    
    choosedDevice = dev;
    return;
}

Jedoch hat das nicht funktioniert.

Hat jemand eine Idee woran das liegen kann ?

Danke schonmal für eure Hilfe.
Gruß
Fabian
 
Zuletzt bearbeitet:

Fasibio

Mitglied
Ich habe rausgefunden, das es sich bei dem Problem um einen Bug in Android handelt.
Die Fehlermedung "read failed, socket might closed or timeout, read ret: -1" weist darauf hin.
Jedoch habe ich noch keine Lösung für das Problem gefunden.
Immoment umgehe ich es, indem ich wenn das Gerät schon gepaired ist, dieses unbounde und anschließend wieder neu paire.
Das funktioniert zwar, kann jedoch nicht die Lösung des Problems sein, da der User immer wieder aufgefordert wird der Kopplung zuzustimmen.
Vielleicht hat ja jemand noch eine bessere Lösung.

Gruß
Fabian