Android BLE 中心设备与外设进行大数据的读写
来源:互联网 发布:电梯安全知 编辑:程序博客网 时间:2024/05/10 22:29
众所周知,蓝牙低功耗(BLE)是为省电而设计,其省电原理是因为通过特征值进行读写的时候,自定义的特征值一次最大传输的数据量为20字节;由于一次传输的数据量很小,所以,非常省电;
那问题来了,如何用BLE来进行较大数据的读写呢,原理很简单,只需要将大数据进行拆分再合并既可;
开发过BLE的人都会有这种感觉:蓝牙连接太不稳定了,拆分了再合并靠谱吗,会不会中途断开,发送的顺序会不会在对方收到后会不会乱掉,等等诸多问题。
结论:现在测试过后发现:蓝牙并没有想象中的那么不堪,在测试中经过多次测试,发现蓝牙协议很靠谱,在发送一段数据过程中,蓝牙如果断开,其会立即重新连接,再上次断开的地方继续发送,很是靠谱;
另外,关于拆分和合并,不同人有不同的方法,我的方法很简单,就是将20字节的数,20字节包含序号位+内容;合并的时候采用了map来存储序号和内容,序号作为键值;
PS:如何实现大数据的读写呢?
中心设备上有onCharacteristicRead() 和onCharacteristicWrite()的回调;外设有onCharacteristicReadRequest()和onCharacteristicWriteRequst()回调;大家可以尽可能多的使用这几个回调;
以中心向外设写大数据为例:首先大数据已经被拆分了,先向外设写序号1 的内容,然后当onCharacteristicWrite()回调时,则说明上次的写完成了,此时可以在回调中继续写序号2……,直到结束,当然外设在收到每一段数据后都需要进行合并处理啊~;记住:一定要等到收到回调之后才可以进行下一次读写,否则就会失败;
- Android BLE 中心设备与外设进行大数据的读写
- Android BLE 中心和外设通信时 中心设备的onCharacteristicChanged() 没有回调
- Android BLE最完整的工具类(扫描/连接/读写/通知设备),可以手机与设备进行通讯
- 对于ble ios作为中心设备收不到蓝牙外设广播信息的解决办法
- Android BLE中心设备的onCharacteristicChanged()方法没有回调
- android BLE蓝牙RSSI数据的读写
- iOS开发—蓝牙4.0(BLE)与外设连接及收发数据的流程
- Android蓝牙BLE之RSSI数据的读写(1)
- Android蓝牙BLE之RSSI数据的读写(1)
- Android 蓝牙4.0 Bluetooth BLE 写数据(修改BLE设备的属性)
- Android开发蓝牙与ble设备的通讯
- Android BLE低功耗蓝牙开发(下) BLE客户端(中央设备)与GATT服务的通讯
- Android BLE设备扫描
- Android蓝牙4.0BLE通讯读写数据更新
- Android蓝牙4.0BLE与智能设备间的通讯全解析
- 穿戴设备与大数据
- Android手机与多个BLE设备通信
- Android手机与多个BLE设备通信
- keepalived工作原理和配置说明
- 栈的典型应用 —— 逆序输出
- GMT与Etc/GMT地区信息的时区转换
- Android-自定义多TAB悬浮控件实现蘑菇街首页效果
- 安卓之相机Camera
- Android BLE 中心设备与外设进行大数据的读写
- 利用API更新资产标签号Demo
- 体外诊断(POCT)之检测线配置文件修改
- Jvm工作原理学习笔记
- Android_短信
- Android基于开源项目的WheelView的时间、地址联动选择对话框
- ios开源框架——WebViewJavascriptBridge 深入了解( JS与iOS Native Code互调方法)
- 创建oracle表空间和用户
- 深入理解java虚拟机-目录