问题:解决Android中socket自动断开连接

在strain sensor APP开发过程当中,需要客户端不断地读取从蓝牙模块发送过来的数据。

遇到的问题
连接上蓝牙模块后,能够正常读数,蓝牙数据发送速率为0.03s每个。大概在发送了342个数据之后,突然接收不到数据了。

后来查找了资料,显示原来Android中蓝牙socket通信连接时长大概为120s,如果超过这个时间没有操作,就会断开连接。但是我想了一下,客户端一直在读取数据流的呀,怎么是没有操作呢??

查了关于心跳包的内容,觉得好像有点麻烦。因为我之前的程序并没有用到service。

解决方法:然后抱着试试看的态度,从客户端每隔一段时间(只要小于120秒就好)向蓝牙模块发送不被解析的指令。结果就不会出现socket断开的情况了。(也就是说为了保持通信正常,不仅要接收数据,还要发送数据

大致像这样:

 if(framesHasRead==framesToRead)
               {
                   byte buffer = 0;
                   try {
                    mmOutStream.write(buffer);
                    mmOutStream.flush();
                        } catch (IOException e) {
                        e.printStackTrace();
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值