蓝牙流程
2016-07-15 11:49
225 查看
1、蓝牙搜索
ListBleScan类 搜索附近的蓝牙设备
onLeScan(List bleDeviceList, boolean isEnd)方法回调
UUIDBleScan类 根据具体设备UUID搜索
onFoundDeviceSuccess 搜索成功回调
onFoundDeviceFailed 搜索超时失败回调
2、蓝牙连接
HetBleManager 继承于BaseBleManager,对het的设备协议进行了封装
onConnectionStateChange (BluetoothGatt gatt, boolean connSuccess) 蓝牙连接回调 connSuccess=true则为连接成功
onServicesDiscovered(BluetoothGatt gatt, boolean success) 连接成功之后会去主动发现蓝牙服务之后会调用此方法,当success=true时,蓝牙才能真正进行通信。
发现服务成功之后,可以监听特征setCharacteristicNotification、读取特征toReadCharacteristic、发送蓝牙命令toWriteCharacteristic
3、断开设备
距离太远断开,APP能收到回调
BluetoothGatt.close() 不会收到回调
BluetoothGatt.disconnect() 会收到回调
注意事项
连接蓝牙设备和发现蓝牙服务都必须在主线程。连接成功的标志以newState == BluetoothProfile.STATE_CONNECTED为准
连接成功,但是有可能发现服务失败。连接成功之后,发现服务的速度取决于设备BluetoothGattService和BluetoothGattCharacteristic数量多少。发现服务成功之后,APP与蓝牙设备才能进行通信。
toWriteCharacteristic、setCharacteristicNotification、toReadCharacteristic方法均有返回值,返回false,则设备响应失败。返回true 设备也不一定响应成功(安卓蓝牙的坑)。所以需要协议双方交互命令的ACK
鉴于安卓不同手机蓝牙连接问题表现不一样,提供了refreshDeviceCache和clearAllBondedDevices两个方法,可以刷新蓝牙缓存以及清除已绑定蓝牙设备,但是可能会引发其他问题。(慎用)
以上为个人经验总结,可能有所偏差 https://www.bluetooth.com/
相关文章推荐
- Windows系统中使用C#编写蓝牙通信程序的简单实例
- android通过蓝牙接收文件打开时无法自动选择合适的应用程序
- Android开发中编写蓝牙相关功能的核心代码讲解
- Android系统中的蓝牙连接程序编写实例教程
- Android设备间实现蓝牙(Bluetooth)共享上网
- Android提高之蓝牙隐藏API探秘
- Android编程之蓝牙测试实例
- Android提高之蓝牙传感应用实例
- Android Bluetooth蓝牙技术使用流程详解
- Android Bluetooth蓝牙技术初体验
- Android 蓝牙防丢实现(一)
- Win10如何使用蓝牙传输文件?Win10使用蓝牙传输文件的方法
- 蓝牙与红外传输
- 蓝牙-信息时代的黑马
- 玩转Blueteeth Chat蓝牙交友
- SyncML在蓝牙车载免提装置中的应用
- 手机指令大全,需要可以看看
- 蓝牙英文-译文
- ***工具