我为Android Lollipop(手机)开发了一个应用程序,它使用BLE从便携式设备接收数据。 来自设备的数据通过通知进行转换。 通知导致onCharacteristicChanged()方法,其中数据被解析并保存到文件中。
一切都可以正常工作几个小时。但是在某个随机时间它停止工作并且日志由以下消息填充:
...
07-27 00:36:33.940 E/bt-l2cap(31622): l2cu_build_header - no buffer
07-27 00:36:33.989 E/GKI_LINUX(31622): GKI_exception(): Task State Table
07-27 00:36:33.989 E/GKI_LINUX(31622): TASK ID [0] task name [BTU] state [1]
07-27 00:36:33.989 E/GKI_LINUX(31622): TASK ID [1] task name [BTIF] state [1]
07-27 00:36:33.989 E/GKI_LINUX(31622): TASK ID [2] task name [A2DP-MEDIA] state [1]
07-27 00:36:33.989 E/GKI_LINUX(31622): GKI_exception 65524 getbuf: out of buffers
...
然后由于某些原因,这个GKI_exception消息停止了以下行:
07-27 01:32:23.361 E/bt-btm (31622): btm_sec_disconnected - Clearing Pending flag
之后,在我们将BLE关闭并打开电话之前,BLE永远不会连接到设备。
如何解决?