2016-04-14 1 views
2

Diese Frage verwirrte mich für eine lange Zeit. Ich hatte alle möglichen Lösungen gesehen, einschließlich IOException: read failed, socket might closed - Bluetooth on Android 4.3, aber alle funktionieren nicht.Bluetooth-Verbindung fehlgeschlagen. java.io.IOException: Lesen fehlgeschlagen, Socket möglicherweise geschlossen oder Timeout, lesen ret: -1

Hauptideen: 1. das Gerät verbinden; 2. Erstellen Sie einen Socket von UUID; 3. cancelDiscovery und verbinden.

Die Protokollliste ist wie folgt:

04-14 11:12:53.044: W/BluetoothAdapter(22212): getBluetoothService() called with no BluetoothManagerCallback 
04-14 11:12:53.044: W/bt-l2cap(2445): L2CA_ErtmConnectReq() PSM: 0x0001 BDA: dc2c2600006c p_ertm_info: 0x00000000 allowed:0x0 preferred:0 
04-14 11:12:53.044: W/bt-l2cap(2445): L2CAP - st: CLOSED evt: 21 
04-14 11:12:53.044: W/bt-l2cap(2445): L2CAP - st: CLOSED evt: 7 
04-14 11:12:53.064: W/bt-l2cap(2445): L2CAP - st: W4_L2CAP_CON_RSP evt: 11 
04-14 11:12:53.064: W/bt-l2cap(2445): L2CAP - st: CONFIG evt: 24 
04-14 11:12:53.074: W/bt-l2cap(2445): L2CAP - st: CONFIG evt: 14 
04-14 11:12:53.074: W/bt-l2cap(2445): L2CAP - st: CONFIG evt: 25 
04-14 11:12:53.074: W/bt-l2cap(2445): L2CAP - st: CONFIG evt: 15 
04-14 11:12:53.264: W/bt-sdp(2445): process_service_search_attr_rsp 
04-14 11:12:53.264: W/bt-l2cap(2445): L2CA_DisconnectReq() CID: 0x004a 
04-14 11:12:53.274: W/bt-l2cap(2445): L2CAP - st: W4_L2CAP_DISC_RSP evt: 18 
04-14 11:12:53.274: E/bt-btif(2445): DISCOVERY_COMP_EVT slot id:91, failed to find channle,          status:1, scn:0 
04-14 11:12:53.274: W/bt-btif(2445): invalid rfc slot id: 91 
04-14 11:12:53.274: W/System.err(22212): java.io.IOException: read failed, socket might closed or timeout, read ret: -1 
04-14 11:12:53.274: W/System.err(22212): at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:574) 
04-14 11:12:53.274: W/System.err(22212): at android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:585) 
04-14 11:12:53.274: W/System.err(22212): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:326) 
04-14 11:12:53.274: W/System.err(22212): at com.wormhole.bluetoothdemo.MainActivity$ListItemClickListener.onItemClick(MainActivity.java:152) 
04-14 11:12:53.274: W/System.err(22212): at android.widget.AdapterView.performItemClick(AdapterView.java:299) 
04-14 11:12:53.274: W/System.err(22212): at android.widget.AbsListView.performItemClick(AbsListView.java:1115) 
04-14 11:12:53.284: W/System.err(22212): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2928) 
04-14 11:12:53.284: W/System.err(22212): at android.widget.AbsListView$3.run(AbsListView.java:3691) 
04-14 11:12:53.284: W/System.err(22212): at android.os.Handler.handleCallback(Handler.java:733) 
04-14 11:12:53.284: W/System.err(22212): at android.os.Handler.dispatchMessage(Handler.java:95) 
04-14 11:12:53.284: W/System.err(22212): at android.os.Looper.loop(Looper.java:136) 
04-14 11:12:53.284: W/System.err(22212): at android.app.ActivityThread.main(ActivityThread.java:5072) 
04-14 11:12:53.284: W/System.err(22212): at java.lang.reflect.Method.invokeNative(Native Method) 
04-14 11:12:53.294: W/System.err(22212): at java.lang.reflect.Method.invoke(Method.java:515) 
04-14 11:12:53.294: W/System.err(22212): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
04-14 11:12:53.294: W/System.err(22212): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
04-14 11:12:53.294: W/System.err(22212): at dalvik.system.NativeStart.main(Native Method) 

Weitere Informationen: Master-Gerät mein Telefon (Android 4.4.4 oder Android 5.1.1) und Slave-Gerät ein HID-Gerät ist, ist UUID " 00001124-0000-1000-8000-00805f9b34fb "

Danke für alle, die helfen könnten.

Antwort

1

In meiner Situation funktioniert die Bluetooth-Einstellungen, die mit dem System kommt.

Also schaue ich den Quellcode der Bluetooth-Einstellungen.

Und kopieren Sie die Lib frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth in mein Projekt.

Verwenden Sie reflect, um die Hide-Klasse und Funktion oder Variable aufzurufen.

Schließlich funktioniert es.

Ich wünschte, dies könnte helfen.

+0

Das gleiche Problem hier. Können Sie die Lösung teilen? Jeder Versuch, mich mit den von mir gefundenen Methoden zu verbinden, funktionierte nicht –