android4.4 BLE开发

来源:互联网 发布:nginx css 不显示 编辑:程序博客网 时间:2024/04/29 11:34

最近做android BLE开发,由于有人把大致框架搭建好了(其实也就是SDK里的samples中的东西),蓝牙的流程也很快就熟悉了。然后马上也就遇到了问题。

其实问题归结起来就一个:BLE断开后,重连不稳定,有可能还会连不上。

从logcat上看到的错误主要有这么几条:

L2CAP - LE - cannot start new connection at conn st : 2

L2CAP - LE - cannot start new connection at conn st : 3

onClientConnectionState() - status = 133  clientIf = 5 device = xxxxxxxxxxxx;

当然还有很多人遇到的status = 129,这个我倒是没碰到。


先说解决问题的首要条件吧:android 4.4.3以上的系统。

因为之前碰到的问题都是在android4.4.2上遇到的,经过一些调试,改善了一些情况,但偶尔连不上的问题还是解决不了。google上看了前辈们提的问题,决定升级系统,然后,就来这里和大家分享经验啦!

附上google上关于这个问题的一个链接吧,有用的信息还是很多的:https://code.google.com/p/android/issues/detail?id=58381


关于L2CAP的问题,找到了一些资料,就一起贴在这里了:

L2CAP BLE Connection status (st) value :Following are the values of st (status) which is BLE Connection status that l2cap returns while showing an error:#define BLE_CONN_IDLE    0 #define BLE_DIR_CONN     1  #define BLE_BG_CONN      2 #define BLE_CONN_CANCEL  3Source# http://androidxref.com/4.4_r1/xref/external/bluetooth/bluedroid/stack/btm/btm_ble_int.h#189

这些也都是来自上面那个google的链接里的。


针对BLE断开重连,速度比较慢的情况,我的处理方法是,在每次connect之前,都BlueToothGatt.close();这样就能保证每次都是新连接,而不是重连。建立新连接的速度还是很快的。当然,我比较奇葩的在connect之前close,把close放在disconnect之后也是可以的。


有什么不对的地方,欢迎拍砖~

0 0