蓝牙连接判断的问题

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() 的执行,以便节省资源。不知道诸位大侠有什么办法?
谢谢
...全文
363 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wugamp 2017-03-13
  • 打赏
  • 举报
回复
connect 的时间应该是系统里写死的,你改不了
幻影宇寰 2017-03-09
  • 打赏
  • 举报
回复
引用 2 楼 pamgu 的回复:
[quote=引用 1 楼 xiaoyaoyou1212 的回复:] 可以看看https://github.com/xiaoyaoyou1212/BluetoothChat,希望能帮助到你!
谢谢。我看了这个帖子,比较关键的是这段话:“ 2、通过调用connect()方法来初始化连接……这个方法是一个阻塞调用。如果因为某些原因,连接失败或连接超时(大约在12秒之后),就会抛出一个异常。 ” 但是根据我的实验结果,无论连接成功与否,都会抛出异常,而且等待的时间长达20s,其实我只要5s还没连上就足以判断“连接失败”了。可是这个帖子里没提怎样缩短时间。 [/quote] 这个连接本身是在线程中运行的,并且是阻塞方式,建议在开启该线程时同时加一个定时处理机制,如果时间到了就终止连接线程。
pamgu 2017-03-09
  • 打赏
  • 举报
回复
引用 3 楼 xiaoyaoyou1212 的回复:
[quote=引用 2 楼 pamgu 的回复:] [quote=引用 1 楼 xiaoyaoyou1212 的回复:] 可以看看https://github.com/xiaoyaoyou1212/BluetoothChat,希望能帮助到你!
谢谢。我看了这个帖子,比较关键的是这段话:“ 2、通过调用connect()方法来初始化连接……这个方法是一个阻塞调用。如果因为某些原因,连接失败或连接超时(大约在12秒之后),就会抛出一个异常。 ” 但是根据我的实验结果,无论连接成功与否,都会抛出异常,而且等待的时间长达20s,其实我只要5s还没连上就足以判断“连接失败”了。可是这个帖子里没提怎样缩短时间。 [/quote] 这个连接本身是在线程中运行的,并且是阻塞方式,建议在开启该线程时同时加一个定时处理机制,如果时间到了就终止连接线程。[/quote] 那么关键是怎样终止蓝牙线程呢? 一个办法是在主线程里用 stop方法,但这个办法不被推荐,说是不安全。 推荐的办法是设标志位、让蓝牙线程自己停下来。但这样还是得 connect 执行完毕啊
pamgu 2017-03-08
  • 打赏
  • 举报
回复
引用 1 楼 xiaoyaoyou1212 的回复:
可以看看https://github.com/xiaoyaoyou1212/BluetoothChat,希望能帮助到你!
谢谢。我看了这个帖子,比较关键的是这段话:“ 2、通过调用connect()方法来初始化连接……这个方法是一个阻塞调用。如果因为某些原因,连接失败或连接超时(大约在12秒之后),就会抛出一个异常。 ” 但是根据我的实验结果,无论连接成功与否,都会抛出异常,而且等待的时间长达20s,其实我只要5s还没连上就足以判断“连接失败”了。可是这个帖子里没提怎样缩短时间。
幻影宇寰 2017-03-08
  • 打赏
  • 举报
回复
可以看看https://github.com/xiaoyaoyou1212/BluetoothChat,希望能帮助到你!

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧