本文是Android中关于低功耗蓝牙(BLE)开发的指南。
在网上找到了一篇写的很好的Android BLE开发攻略,原文地址如下:
现将其总结如下:
低功耗蓝牙(Bluetooth Lower Energy, BLE)顾名思义,其功耗非常低,同时也具有和其他设备通信的功能,因此在安卓app上受到越来越多人的青睐。在本文中,我们将重温安卓开发者必知的BLE基础概念,同时也将展示一些简单的示例:Android上BLE的扫描、连接、读写、设置指示或通知。大多数代码是用Kotlin写的,但也能很好地转换成Java。示例app完整的实现可见Github开源仓库。
BLE基础
术语表
BLE:BLuetooth Low Energy,是2.4G蓝牙无线技术的一个子集,专门为连接的设备提供低功耗且通常不频繁的数据传输。
Central/Client:能够扫描和连接BLE外围设备以执行某些操作的设备,在app开发中,一般指的是安卓设备。
Peripheral/Server:能够广播BLE信号的设备,通过连接Central以完成某项任务。在app开发中,这通常是正在使用的BLE设备,比如心率监视器。
GATT Service:描述设备特性的一组characteristics(数据字段),例如设备信息的Service可以包含描述设备序列号的characteristic,以及描述设备电池电量的characteristic。
GATT Characteristic:包含有意义数据的实体,通常能够从中读取或写入,例如序列号字符串的characteristic。
GATT Descriptor:一个已定义的属性,描述他所附属的characteristic,例如,the Client Characteristic Configuration descriptor描述了the central当前是否订阅了一个characteristic的值的改变。
Notifications:当外围设备的characteristic值发生改变的时候,外围设备通知Central的一种方法。Central不需要确认它已经收到了数据包。
Indications:和Notification一样,但它的每个数据包都被Central确认。这样保证了他们的交付以吞吐量为代价。
UUID:通用的唯一的标识符,128位数字,用于标识services、characteristics和descriptors。