蓝牙连接判断的问题
pamgu 2017-03-07 10:22:48 使用蓝牙设备的时候,最基本的就是判断是否连接上了。
我用的是经典蓝牙,ANDROID 5.1的魅族3S。
代码:
BluetoothSocket g_socket;
boolean bOK = true;
try {
g_socket.connect();
} catch (IOException e) {
bOK = false;
}
if (bOK && g_socket.isConnected())
BigToast("连着呢");
else if (bOK)
BigToast("not connected");
else
BigToast("OK都没了");
结果发现:无论蓝牙设备打开还是关闭,都肯定会执行 bOK = false,区别在于设备打开时很快就到这步了,只要2、3秒。如果关闭的话,就得等20秒。
至于 isConnected(),无论什么时候都是true的,不能用作判断依据。
所以,可以考虑加个定时器,或者限时等待,如果指定时间内还没有执行到 bOK=false这个地方,就知道设备断了。
为了使反应灵敏,不想让 g_socket.connect() 执行满 20s 后才判断“没连上”,而是执行10s,如果还不结束就知道“没连上”,同时中止 g_socket.connect() 的执行,以便节省资源。不知道诸位大侠有什么办法?
谢谢