Android 4.3上的一些Nexus松散的蓝牙连接

时间:2013-08-23 07:36:58

标签: android bluetooth android-4.3-jelly-bean

我的应用程序连接到BT设备并发送和接收一些数据然后暂停,直到用户选择如何继续。然后使用已建立的连接并继续应用程序。

但是在某些Nexus 4.3设备上,当系统询问用户如何使用时,系统会在暂停时丢弃已建立的蓝牙连接。在此暂停期间,BT连接上没有通信

在所有Android 4.3设备上都不会发生这种情况,只会在某些设备上发生。我尝试了几个全新的,没有问题。但是一些已经使用Nexus一段时间的用户报告了这个问题。

我甚至尝试使用与开头时使用的完全相同的代码重新建立连接。但是我得到了不同的错误。

这就是我关闭连接的方式:

public void resetConnection() {
if (mmInStream != null) {
    try {
    mmInStream.close();
    } catch (Exception e) {
           ...log it
    }
    mmInStream = null;
}

if (mmOutStream != null) {
    try {
    mmOutStream.close();
    } catch (Exception e) {
           ...log it        }
    mmOutStream = null;
}

if (mmSocket != null) {
    try {
    mmSocket.close();
    } catch (Exception e) {
           ...log it        }
    mmSocket = null;
}

}

基本上连接我使用此代码Disconnect a bluetooth socket in Android

所有Android版本和内核在工作和非工作设备上都是相同的。但是“使用过的”设备(即使在重启后 - 未重置)也存在这个问题 - 但到目前为止所有设备都可以在出厂重置后解决问题。

知道这些Nexus 4.3上的问题是什么以及如何解决它?

当然不是每个用户都想在他的手机上重置工厂 - 我甚至不确定这总能解决问题。

不幸的是,我手中没有这样的Nexus导致问题 - 否则我可以调试它并尝试。所以我完全不知道4.3与BT在这里发生的事情。

1 个答案:

答案 0 :(得分:1)

我有一个nexus 3,我确认了这个问题。我的工作是定期在蓝牙上进行通信。如果您暂停超过2或3秒,蓝牙总是断开连接。在我的应用程序中,我设法不等待用户输入几秒钟,然后应用程序每100毫秒读取一个传感器,它永远不会断开连接。