蓝牙SPP与星系说明2.3.6

时间:2012-04-26 07:17:19

标签: android bluetooth

我在使用android 2.3.6的三星Galaxy笔记上遇到蓝牙SPP问题 - 它工作了一段时间但突然连接终止 - 在其他手机上继续工作。这里是日志发生的部分

D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 43 bytes out of 43 on fd 46
D/BLZ20_ASOCKWRP(11288): asocket_write
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLOUT ] (0x4)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 10 bytes out of 10 on fd 46
I//system/bin/btld(11351): btlif_bts_api_data_cb: btlif_bts_api_data_cb : hdl 35, len 10
I//system/bin/btld(11351): bts_alloc_buf: hdr:0x405241a4, max 1712, offset 20, len 0 
I//system/bin/btld(11351): bts_alloc_buf: peer mtu 127
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_WRITE_EVT
I//system/bin/btld(11351): rfc_setup_rx_buf: pushed in queue p_buf #0: 0x405241a4, len:0, offset:20
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed 
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 9 bytes out of 9 on fd 46
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed 
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 67 bytes out of 67 on fd 46
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed 
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 69 bytes out of 69 on fd 46
D/BLZ20_ASOCKWRP(11288): asocket_write
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLOUT ] (0x4)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 10 bytes out of 10 on fd 46
I//system/bin/btld(11351): btlif_bts_api_data_cb: btlif_bts_api_data_cb : hdl 35, len 10
I//system/bin/btld(11351): bts_alloc_buf: hdr:0x405370b0, max 1712, offset 20, len 0 
I//system/bin/btld(11351): bts_alloc_buf: peer mtu 127
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_WRITE_EVT
I//system/bin/btld(11351): rfc_setup_rx_buf: pushed in queue p_buf #0: 0x405370b0, len:0, offset:20
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed 
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 65 bytes out of 65 on fd 46
I/BluetoothPolicyService( 2767): getBluetoothDataTransferAllowed 
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
I//system/bin/btld(11351): jw_if_rfcomm_cl_cback: jw_if_rfcomm_cl_cback event=BTA_JV_RFCOMM_DATA_IND_EVT
I//system/bin/btld(11351): jv_forward_data_to_jni: BTA_JV_RFCOMM_DATA_IND_EVT bta hdl 2
D/BLZ20_ASOCKWRP(11288): asocket_read
I/BLZ20_WRAPPER(11288): blz20_wrp_poll: nfds 2, timeout -1 ms
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: transp poll : (fd 46) returned r_ev [POLLIN ] (0x1)
D/BLZ20_WRAPPER(11288): blz20_wrp_poll: return 1
D/BLZ20_WRAPPER(11288): blz20_wrp_read: read 0 bytes out of 0 on fd 46
I/BLZ20_WRAPPER(11288): blz20_wrp_read: connection aborted
D/BLZ20_WRAPPER(11288): blz20_wrp_read: set errno 103 (Software caused connection abort) l.1910 
D/BLZ20_ASOCKWRP(11288): asocket_abort [46,47,48]
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: s 46, how 2
D/BLZ20_WRAPPER(11288): blz20_wrp_shutdown:  fd (-1:46), bta 2, rc 1, wflags 0x800, cflags 0x0, port 9050
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: shutdown socket
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 1 bytes out of 1 on fd 48
D/BLZ20_ASOCKWRP(11288): asocket_destroy
D/BLZ20_ASOCKWRP(11288): asocket_abort [46,47,48]
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: s 46, how 2
D/BLZ20_WRAPPER(11288): blz20_wrp_shutdown:  fd (-1:46), bta 2, rc 1, wflags 0x800, cflags 0x0, port 9050
I/BLZ20_WRAPPER(11288): blz20_wrp_shutdown: shutdown socket
D/BLZ20_WRAPPER(11288): blz20_wrp_write: wrote 1 bytes out of 1 on fd 48
I/BLZ20_WRAPPER(11288): blz20_wrp_close: s 48
D/BLZ20_WRAPPER(11288): blz20_wrp_close: std close (48)
I/BLZ20_WRAPPER(11288): blz20_wrp_close: s 47
D/BLZ20_WRAPPER(11288): blz20_wrp_close: std close (47)
I/BLZ20_WRAPPER(11288): blz20_wrp_close: s 46
D/BLZ20_WRAPPER(11288): blz20_wrp_close:  fd (-1:46), bta 2, rc 1, wflags 0x800, cflags 0x0, port 9050

2 个答案:

答案 0 :(得分:4)

问题是我在没有数据可用的情况下经常进行后续的读取调用。虽然这在大多数手机上运行良好(读取只返回0字节读取) - 这在一些三星手机上失败 - 如果在读取之前确实存在可用数据,则解决方法是通过available()进行检查。

答案 1 :(得分:0)

我偶然发现了一些细节。这似乎与三星BT堆栈产生的垃圾邮件数量有关。我有一台BT设备,每秒产生~10.5k的数据。当连接到有这个问题的三星设备时,我每秒只能获得大约3k的数据。最终堆栈崩溃了。我知道在Android设备上记录是昂贵的,并且做ligi建议减少堆栈生成的消息量;我认为这是根本原因。

在我的情况下,包裹我正在阅读的流BufferedInputStream似乎已经解决了问题,并让我恢复到10.5 k / s。