我的应用程序连接到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在这里发生的事情。
答案 0 :(得分:1)
我有一个nexus 3,我确认了这个问题。我的工作是定期在蓝牙上进行通信。如果您暂停超过2或3秒,蓝牙总是断开连接。在我的应用程序中,我设法不等待用户输入几秒钟,然后应用程序每100毫秒读取一个传感器,它永远不会断开连接。