安卓蓝牙开发教程(Android BLE蓝牙开发之GATT协议)

Andlink SDK是内置于中国移动魔百和机顶盒中的一个Android SDK,基于Andlink协议,实现了智能硬件接入网络及Andlink平台的底层协议及通用能力,以API方式提供给合作伙伴实现智能硬件快速接入Andlink生态能力。蓝牙设备是Andlink生态和核心硬件之一,Andlink SDK需要实现中国移动魔百和机顶盒对BLE蓝牙设备的上线监控及AndLink_p协议字段数据的读取。期间查阅了很多资料,也遇到了一些坑。所以在这里针对BLE蓝牙通信和GATT协议做一些简要分享。

一、BLE介绍

BLE是Bluetooth Low Energy的缩写,又叫蓝牙4.0,是一种功耗极低的短距离无线通信技术,BLE是在蓝牙技术的基础上发展起来的,既同于蓝牙,又区别于传统蓝牙。BLE设备分单模和双模两种,双模简称BR,商标为Bluetooth Smart Ready,单模简称BLE或者LE,商标为Bluetooth Smart。双模兼容传统蓝牙,可以和传统蓝牙通信,也可以和BLE通信,常用在手机上,android4.3和IOS4.0之后版本都支持BR,也就是双模设备。

二、什么是GATT

GATT全称Generic Attribute Profile,即通用属性协议,定义了services和characteristic两种东西来完成低功耗蓝牙设备之间的数据传输。它是建立在通用数据协议Attribute Protocol (ATT),之上的,ATT把services和characteristic以及相关的数据保存在一张简单地查找表中,该表使用16-bit的id作为索引。现有的BLE蓝牙设备都是采用这种协议进行通信。

1、GATT的结构

GATT整体结构如上图所示,一个ble蓝牙设备包含了多个Profile,每个Profile中包含多个Service。其中每个Service都有一个唯一标识的UUID。而每一个Service有包含了多个Characteristic,类似的,每个Characteristic也是由一个唯一的UUID来标识。一个Characteristic中包含了一个value和多个Descriptor。

其中一些专业名词的释意如下:

(1)profile

profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。

(2)service

service可以理解为一个服务,例如电量信息服务、系统信息服务等

(3)characteristic

characteristic即特征值可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。

(4)UUID

UUID,统一识别码,我们刚才提到的service和characteristic,都通过UUID标识。

安卓蓝牙开发

(5)Value

蓝牙设备的数据,例如:mac、sn和软件版本等。在BLE开发中,蓝牙设备数据的读取和写入都需要通过UUID找到对应服务和特征值下的Value值。

2、GATT的连接

中心设备(手机或机顶盒)与周边设备(BLE蓝牙设备)要完成双方的通信只能通过建立GATT连接的方式。一旦两个设备建立了连接,GATT就开始发挥作用,同时意味着GAP协议管理的广播过程结束了。但是必须要知道的是,建立GATT连接必须经过GAP协议。

最重要的事情,GATT连接是独占的,也就意味着一个BLE周边设备同时只能与一个中心设备连接。一旦周边设备与中心设备连接成功,直至连接断开,它不再对外广播自己的存在,其他的设备就无法发现该周边设备的存在了。

通过Andlink SDK,中国移动为所有在智能家庭领域的合作伙伴提供了智能硬件联网、平台接入等方面互联互通的基础能力,也实现了对这些智能硬件生命周期的全流程管理。

您可以还会对下面的文章感兴趣

使用微信扫描二维码后

点击右上角发送给好友