Android BluetoothSocket没有关闭

时间:2012-11-20 19:02:44

标签: java android sockets bluetooth

我有一个奇怪的问题,我似乎无法弄清楚发生了什么。 我使用蓝牙聊天示例作为基础,但是,当尝试从一个UUID到另一个UUID(两个不同的应用程序)的连接时,大部分工作正常。硬件关闭连接并使用不同的UUID打开一个新连接。

问题是我的蓝牙套接字没有在应用端关闭。我在日志中看到这些消息:

11-20 15:00:44.287: I/BTL_IFC(13313): btl_ifc_ctrl_rx: [BTL_IFC CTRL] recv BTLIF_BTS_RFC_DISC_IND (BTS) 11 pbytes (hdl 47)
11-20 15:00:44.287: I/BLZ20_WRAPPER(13313): btlif_ctrl_callback: btlif_ctrl_callback : msg id BTLIF_BTS_RFC_DISC_IND
11-20 15:00:44.287: I/BLZ20_WRAPPER(13313): btlif_process_disc_ind: disconnect ind status 19, rc chan 8
11-20 15:00:44.287: D/BLZ20_WRAPPER(13313): btlif_signal_event:  fd (-1:51), bta 5, rc 8, wflags 0x0, cflags 0x6, port 9053
11-20 15:00:44.287: D/BLZ20_WRAPPER(13313): btlif_signal_event: ### event BTLIF_BTS_RFC_DISC_IND not matched ###
11-20 15:00:44.287: I/BTL_IFC(13313): send_ctrl_msg: [BTL_IFC CTRL] send BTLIF_BTS_RFC_DISC_IND_ACK (BTS) 9 pbytes (hdl 47)

所以我知道它被删除了,但我的套接字仍然是开放的。我会假设当我尝试这样做时它会给我一个I / O异常,但它没有。

mmInStream.available()

它只返回0并继续前进。我还监视了BluetoothSocket.java类中的mClosed标志,在这种情况下它永远不会被设置为true。

我注册了正常的错误意图,我错过了吗?

    IntentFilter stateChangeFilter = new IntentFilter("android.bluetooth.adapter.action.STATE_CHANGED");
    IntentFilter disconnectFilter1 = new IntentFilter("android.bluetooth.device.action.ACL_DISCONNECTED");
    IntentFilter disconnectFilter2 = new IntentFilter("android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED");

    registerReceiver(mListenForDisconnect,stateChangeFilter );
    registerReceiver(mListenForDisconnect,disconnectFilter1 );
    registerReceiver(mListenForDisconnect,disconnectFilter2 ); 

0 个答案:

没有答案