延时程序的必要性

1 前言

安卓蓝牙开发属于软硬件交互过程,在通信过程中难免出现一些意想不到的bug,本篇文章将介绍由于延时问题引发的一些bug。

2 关闭搜索延时

通常情况下,在连接设备之前要关闭手机的蓝牙搜索功能,但是当调用cancleDiscovery()或者stopLeScan()方法停止搜索设备时,并不能瞬间完成停止搜索工作。因此,在发起连接之前最好等待一段时间,等待手机关闭搜索后在发起连接。

3 扫描服务延时

当onConnectionStateChange()方法回调时,其中参数newState == BluetoothGatt.STATE_CONNECTED时,此时表面设备已经连接上,此时,应调用discoverServices()方法扫描服务。
  但是在实际使用中发现:若设备蓝牙刚切换至广播状态,手机端搜索到设备发起连接。当连接成功时,马上去扫描设备服务,偶尔会出现服务获取失败的情形。因此,当设备连接上,需要加上几百毫秒延时之后在调用discoverServices()方法。

4 监听成功,发送命令延时

在进行Ble蓝牙开发时,需要在开启UUID监听之后才能回调onCharacteristicChanged()方法。在测试过程中偶尔出现notify成功后马上发送数据给设备,但是设备无响应。因此通常开发过程中,向设备发送指令前加上一段延时程序,保证设备处于可响应状态。

5 结语

在蓝牙开发中由于延时引发的问题很多,目前主要发现的延时bug有以上几种,欢迎大家留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值