开发Ble(公司项目,防丢器)已经有一段时间,由于是第一次接触Ble而网上资料又不多,且android平台自身的差异性,遇到了很多问题。为了将来方便查阅,在此做下记录。
1.中兴手机,蓝牙手动断开后,无法再次链接问题。(可能别的手机也存在类似问题)
解决办法: 在连接gatt之前,对bluetoothadapter进行一次scan 顺利解决此问题。

2.Gatt链接不稳定(在部分手机上出现过,此问题先排除硬件问题。此处只针对自己遇到的情况,或许有别的方案,待补充)
解决办法: 由于用到了gattserver,在启动gattserver和连接gatt之间由于未做顺序的限制,导致了此问题。经过反复调试后,发现只需要先创建gattserver,在serviceadded之后,在去进行gatt链接,此时的gatt连接会比较稳定。

3.小米手机遇到的,在gatt连接之后,手动调用gatt.disconnect  和 close。第二次链接后 自动断开,再次连接会重新绑定。
解决办法:也是无意中,看到一篇文章,写的是小米手机在gatt操作的时候 ,最好要做一下sleep操作,可能是因为小米底层对蓝牙的某些东西没有来得及释放(自己猜测)。 于是在gatt 连接上时,在gatt.discoverServices 之前,加上 sleep(500) ,发现断开后在连接 成功率大大提高。

2014-11-14
4.蓝牙关闭和打开变得异常缓慢,甚至崩溃
此问题可能与当蓝牙关闭时,尚有为关闭的 gatt连接/gattserver。我的解决办法是,注册蓝牙状态的监听,当发现蓝牙状态变为BluetoothAdapter.STATE_TURNING_OFF 时,立刻释放所有的gatt连接,关闭gattserver。经不完全测试发现,蓝牙的关闭速度变得快多了。

5.当批量连接蓝牙时,不进行onConnectionStateChange 回调。
这个问题是自己 闲的蛋疼,在测试的时候,用了很多假的mac 地址。于是造成的后果可想而知,肯定的是连不上的。但是同时也发现了问题,当ble去连接一个不存在的mac,或者不在范围内的mac地址时,发现有时候 不会进行onConnectionStateChange的回调,觉得很蛋疼。个人觉得会不会是因为 ,同时发送的connectGatt 请求太多,导致了系统的蓝牙阻塞或者别的什么问题。没办法,既然发现了这个问题,就只好动手解决了。  首先,我在批量连接connectGatt的时候,新增了一个扫描,只有当 要连接的 设备扫描到了,才进行连接。然后,我还对gatt的连接,做了一个同步(每次只能进行一个连接,上一个连接不结束的话,无法开始上一个连接,同时针对连接无回调的情况做了超时处理,超时的话立马释放当前连接)。 这么说可能感受不是很直观。但个人觉得,在操作手机蓝牙的时候,还是做个同步的好。 避免同时发生多个gatt的操作,倒是手机蓝牙奔溃等情况的发生。

2014-11-266.Gatt链接不稳定 二
最近因为在保存gatt连接状态的serveice中,增加了一个后台的lescan,突然发现gatt连接又变的不稳定了,不知道什么原因。走投无路的情况下,把后台的lescan放到另一个service中进行,发现好像gatt又变得稳定多了,目前测试下来 已经连了40分钟没有断开了。 不知道接下去会咋样。  也不知道是不是因为在同一个线程中在gatt连接成功后,开启lescan会导致连接不稳定,或亦是手机本身的原因,希望高人指教。

2014-11-27
还是上面的问题,今天早上来,又重试了后台扫描和gatt连接,发现又有两次断开,诶。。。。 郁闷,求高人指教了。

以上发现的问题,均为个人开发经验所得,如有不妥或者欠缺错误的地方,请大家指正批评。

坑爹的Android Ble 问题记录日志的更多相关文章

  1. Android BLE 蓝牙低功耗教程,中央BluetoothGatt和周边BluetoothGattServer的实现

    http://blog.csdn.net/wave_1102/article/details/39271693 分类: Android(105) 作者同类文章X Android4.3 规范了BLE的A ...

  2. 蓝牙4.0——Android BLE开发官方文档翻译

    ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...

  3. 【转】蓝牙4.0——Android BLE开发官方文档翻译

    原文网址:http://ricardoli.com/2014/07/31/%E8%93%9D%E7%89%9940%E2%80%94%E2%80%94android-ble%E5%BC%80%E5%8 ...

  4. Android ble 蓝牙4.0 总结

    本文介绍Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level < 18,也是用不了蓝牙4.0的哦 ...

  5. Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

    Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便 ...

  6. Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能

    Android BLE与终端通信(四)--实现服务器与客户端即时通讯功能 前面几篇一直在讲一些基础,其实说实话,蓝牙主要为多的还是一些概念性的东西,当你把概念都熟悉了之后,你会很简单的就可以实现一些逻 ...

  7. Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

    Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...

  8. Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表

    Android BLE与终端通信(二)--Android Bluetooth基础搜索蓝牙设备显示列表 摘要 第一篇算是个热身,这一片开始来写些硬菜了,这篇就是实际和蓝牙打交道了,所以要用到真机调试哟, ...

  9. Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址

    Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...

随机推荐

  1. ArcGIS 在地图上添加标注

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. idea集成svn插件

    1.需要在机器上安装一个SVN客户端命令行程序,可以到这里下载对应的安装程序:http://subversion.apache.org/packages.html#windows 我选择的是torto ...

  3. android应用一(调用WebServices)

    搞了一个月的android,现学现卖,终于还是搞完了,停下来,整理思路,写写记录吧. 我们知道android访问远程数据库主要有两种协议,一种是SOAP,另外一种就是HTTP.而我们再看看WebSer ...

  4. jQuery各种选择器总结

    首先介绍几个简单的: id选择器 $('#p1').html('<font color='red'>nihao</font>); 类选择器:表示页面上所有应用了a样式的标签 $ ...

  5. 防御SQL注入的方法总结

    这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下   SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难 ...

  6. sulime-text 3 安装以及使用

    sublime-text 3 使用了有一段时间了,虽然不是很熟悉,但是已经爱上它了,但是对这个编辑器还是一知半解,所以现在记录下,希望以后能永久的使用这个编辑器. 一,调用 控制台 使用命令 ctrl ...

  7. ca-bundle.crt to java truststore(e.g. trustStore.jks)

    1. download java keyutilhttps://java-keyutil.googlecode.com/files/keyutil-0.4.0.jar 2. run the follo ...

  8. JavaScript 快速入门回顾

    数据类型Number JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型: 123; // 整数123 0.456; // 浮点数0.456 1.2345e ...

  9. LCS最长公共子序列HDU1159

    最近一直在学习算法,基本上都是在学习动态规划以及字符串.当然,两者交集最经典之一则是LCS问题. 首先LCS的问题基本上就是在字符串a,b之间找到最长的公共子序列,比如 YAOLONGBLOG 和 Y ...

  10. tp接支付宝接口签名不相等解决办法 接口版本3.3 tp版本3.1

    (2)在Core.php和Notify.php文件中添加了去掉TP的URL中的'_URL_'参数的函数.这个是必须的,否则会导致验证失败问题.具体改变为: function paraFilter改为 ...