2017-02-15 4 views
0

Ich versuche, eine Verbindung zu einem HC-06 über Bluetooth von einem Android-Gerät herzustellen. Ich habe es geschafft zu arbeiten, bevor Sie:Android BluetoothSocket Verbindungsfehler

bluetoothSocket = (BluetoothSocket) bluetoothDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class}).invoke(this.bluetoothDevice,1); 

das Problem ist, dass es nur einmal funktioniert. wenn ich die Ein- und Ausgangsströme trennen und schließen und dann die Fassung, und dann versuchen, es gibt mir diesen Fehler wieder zu verbinden:

D/BluetoothSocket: connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[55]} 
D/BluetoothSocket: close() in, this: [email protected], channel: 1, state: INIT 
D/BluetoothSocket: close() this: [email protected], channel: 1, mSocketIS: [email protected], mSocketOS: [email protected]: [email protected] impl:[email protected] fd:FileDescriptor[55] 
D/BluetoothSocket: Closing mSocket: [email protected] impl:[email protected] fd:FileDescriptor[55] 
W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1 
W/System.err:  at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:739) 
W/System.err:  at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:716) 
W/System.err:  at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:482) 
W/System.err:  at com.example.work.dmm.clientBluetoothConnection.run(clientBluetoothConnection.java:65) 

ich für das Problem zu suchen versucht und verschiedene Einträge gefunden sagen, dass createRfcommSocketToServiceRecord() sollte stattdessen verwendet werden. Ich habe es versucht:

ParcelUuid[] uuids = bluetoothDevice.getUuids(); 
UUID uuid = uuids[0].getUuid(); 
bluetoothSocket = bluetoothDevice.createRfcommSocketToServiceRecord(uuid); 

aber das funktioniert überhaupt nicht. Ich bin mir nicht sicher, wo ich von hier aus gehen soll, also wird jede Hilfe geschätzt.

Antwort

0

Auch hatte das gleiche Problem beim Trennen und erneutes Verbinden bekomme ich einen Fehler, aber in meinem Fall gab es einen Broadcast-Empfänger, der eine Aktion erhält, wenn der Bluetooth-Adapter wieder eingeschaltet wird. Das war, was den Adapter vom vollständigen Wiedereinschalten störte, also entfernte ich diesen Teil des Codes und es funktionierte ... beim Wiederverbinden nach der Trennung funktioniert es gut.