关闭

关于蓝牙通信的问题

标签: androidsocket蓝牙通信
308人阅读 评论(0) 收藏 举报
分类:

最近和队友一起做蓝牙通信模块,中间遇到了不少问题。下面分别对遇到的一些问题做一个总结。至于android端蓝牙通信的实现,有需要的可以相互讨论下。

问题1:由于整个运用程序都需要用到蓝牙,并且界面不止一个,当蓝牙连接成功以后需要页面跳转,最开始尝试用Intent传对象,发现不方便,后来将BluetoothSocket设成了静态的,以便各处共用一个socket对象。如果有更好的方法,希望大家能提供建议。

问题2:接收的数据没规律,莫名其妙,是我们定义的数据帧的任意一部分。经过检查,当时以为是流没关闭,在程序的最后对流进行了关闭处理(后来发现问题不仅仅在这里,不过记得养成个关流的好习惯)。

问题3:我们知道蓝牙socket有个connect方法,必须先连接才能进行数据传输。关流以后,导致连接断开,需要重新连接,我重连的时候连接不上,可能是我的个例,也可能是蓝牙的通病,希望大家留意下。没办法,只好每传送一次数据后将BluetoothSocket断开,再通过BluetoothDevice重新连接,同样设成static即可。

问题4:蓝牙要连几次才能连上。能连上证明你的程序没有问题(像问题3又是另外一种情况),用手机蓝牙助手测试时每次连接都没问题,连蓝牙模块时各种连不上,后来换了一个很low的手机,每次都能顺利连接。所以遇到这种情况看一下蓝牙模块的型号,可能有兼容性的问题。最好让负责硬件的找个靠谱点的板子,可能版本太低。

问题5:用手机蓝牙助手测试一切正常开始连调时,发现数据接收又有了问题,不过这次每次开头都是一样的,只是接收不全,比如我们定的长度是18个,每次都只能接收5个,7个等等。结果是两边通过蓝牙助手都能通过。

byte[] buffer = new byte[1024];
						int bytes;
						StringBuffer buf = new StringBuffer();
   							ips=socket.getInputStream();
							bytes=ips.read(buffer);
							


经过调试发现当用debug模式一步步执行时,每次都能接收完整。

于是用log进行输出,发现bytes的长度每次都不够18个,于是加了一个线程暂停

byte[] buffer = new byte[1024];
                        int bytes;
                        StringBuffer buf = new StringBuffer();
                            ips=socket.getInputStream();
                            bytes=ips.read(buffer);
                            try {
                                Thread.sleep(3000);
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
倒是能解决问题,说明发送的时候并没有一次发送,

0
0
查看评论

关于产品推荐的10个问题

许多零售商使用自动的产品推荐技术来增加他们的销售额和转化率。这些推荐的物品通常是商业站点上动态生成的,通常基于特定客户或一组客户的购买习惯。 Strands Recommender 是一个领先的动态生成产品推荐的提供者,我们最近采访了其市场经理 Trevor Legwinski, ...
  • ozhaohuafei
  • ozhaohuafei
  • 2014-07-05 19:58
  • 1789

关于android蓝牙通信的问题

最近同学要做一个手机与蓝牙模块的通信的毕业设计,让我帮忙写一个手机端的应用,匆匆的找了些资料,总算是能勉强实现通信,总结一些关键的步骤: 首先,android蓝牙通信步骤: 1:打开蓝牙 2:搜索蓝牙设备 3:选择设备进行配对(连接前必须先配对) 4:对配对好的设备建立socket 5:获取输入输出...
  • tiancai_lanyangyang
  • tiancai_lanyangyang
  • 2016-03-28 14:42
  • 1463

蓝牙通讯模块(C#)

 在Windows Mobile软件开发中.Net正扮演着日益重要的角色,我们已经可以看到很多用.Net CF开发的软件,这些软件涉及到了日常应用的方方面面。在智能设备的软件开发中,无线互联是一个相当重要的一块,我们可以看到,红外几乎是所有智能设备的标配,而蓝牙也日益在越来越多的智能设备上...
  • eddygong
  • eddygong
  • 2008-08-19 10:00
  • 3679

关于读书的几个问题

读书,并不是穷酸秀才秀穷秀酸的时候才出来卖弄于人的。笛卡儿说:“读一切好书,就是和许多高尚的人谈话。”读书中的愉悦和享受,体现在精神、境界上的享受和在慎思方面的提升,自不是网络冲浪中能够获得的。“书中自有黄金屋,书中自有颜如玉”也道出了读书中我们渴望求得的功名与利禄。如今已经不像古时那般可读之书太少...
  • sxhelijian
  • sxhelijian
  • 2013-09-30 08:19
  • 4213

Windows蓝牙通信的开发

持续更新
  • qq_38446366
  • qq_38446366
  • 2017-10-23 16:30
  • 128

关于蓝牙通信的学习资料整理

(一)  蓝牙通信步骤和原理以及api简单解析:        http://blog.csdn.net/xjanker2/article/details/6303927 (二)android 蓝牙开发整理  ...
  • FireAny2010
  • FireAny2010
  • 2013-08-22 17:14
  • 595

android:手机之间蓝牙通信(四)

功能:蓝牙设备通信连接。 蓝牙连接分为两种情况。 一、手机与手机间通信 二、手机与蓝牙模块通信。 注意:蓝牙通信使用了多线程,必须掌握线程的创建使用才能使用蓝牙进行通信。 手机与手机间通信: 手机间蓝牙通信使用客户端和服务端。 客户端:搜索设备找到服务端,和服务端配对,连接服务端。 服务端:等...
  • bigtree_mfc
  • bigtree_mfc
  • 2016-09-01 19:46
  • 616

关于BT06蓝牙通信的实现

BT06 蓝牙串口通讯模块 AT 指令集   用户可以通过串口和 BT06蓝牙进行通信,串口使用 Tx, Rx 两根信号线,波特 率 支 持 1200,2400,4800,9600,14400,19200,3840...
  • qq_22001427
  • qq_22001427
  • 2017-03-06 16:13
  • 506

android:手机之间蓝牙通信(三)

功能:蓝牙设备配对。 我使用的是工具类:ClsUtils 下载地址:http://download.csdn.net/detail/bigtree_mfc/9600615 添加ClsUtils类,在监听器中继续添加代码。 // 设置选项点击的监听器 lv.setOnItemClickListe...
  • bigtree_mfc
  • bigtree_mfc
  • 2016-08-11 13:54
  • 519

读Android蓝牙通信源码

我说的读android蓝牙通信源码并不是说,读google官方api,那个我也看了一下,里面全是英文倒不说,英文好的,直接无视掉。关键是代码写的我实在难以理解。当然,这也和我的阅读源码的能力有关联的。不过,幸好我在网上找到了一份开源的蓝牙通信的代码是menghnhhuan写的。大家想看他的源码可以直...
  • DucklikeJAVA
  • DucklikeJAVA
  • 2015-11-21 23:32
  • 864
    个人资料
    • 访问:10630次
    • 积分:317
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条