Android 低功耗(BLE)蓝牙开发说明(二)

Gatt简介

现在低功耗蓝牙(BLE)连接都是建立在Gatt协议之上的,Gatt是一个在蓝牙连接之上发送和接收很短数据的数据段的通用规范,这些很短的数据段被称为属性(Attribute)

Gatt全名Generic Attribute Profile 即通用属性配置文件,它定义两个BLE设备使用Service(服务)和Characteristic(特征)进行通信,Gatt使用了ATT(属性协议)的通用属性协议,该协议用在一个检单的查找表中存储服务、特征和相关的数据,这也就是BLE设备之所以能够快速连接的原因。

Gatt连接必须经过GAP协议GAP是Generic Access Profile(通用访问配置文件),他控制蓝牙的连接和广播、GAP使你的设备对外可见,并确定设备如何交互

GAP定义了蓝牙设备的角色,其中两个关键的角色是中央设备和外围设备

外围设备是小型、低功耗、资源有限的设备,可以连接到强大的中央设备,外围设备通常是心率监测器、手环等,中央设备一般是手机或平板电脑,具有强大的处理能力和内存

在Android实际开发中,可以直接使用设备的MAC地址去连接设备,但是这并不意味着不经过GAP协议,实际上芯片己经处理好了,蓝牙芯片连接总是先扫描设备,扫描到了才会发起连接

Gatt连接需要特别注意的是:Gatt连接时独占式的,即一个外设只能被一个中央设备连接,一旦外设连接,他就会马上停止广播、这样他就对其他设备不可见了,当设备断开,他又开始广播了

GATT通信服务

GATT通信的双方是C/S的关系,外设作为服务端(Server),它维持ATT查找表中的service和Characteristic的定义,中央设备作为客户端(Client)它向服务端发起请求

需要注意的是所有的通信事件都是由Client(客户端也叫主设备,Master发启动),并且接收Server(服务端也叫从设备,Slave)的响应

一旦建立起连接,外设将会给中央设备建议一个连接间隔,这样中央设备会每隔一段时间去重新连接外设,检查是否有新的数据,但是这个连接只是一个建议,中央设备可能不会按照这个时间间隔来执行,比如你的中央设备可能在忙于连接其他的外设、或者中央设备太忙

Android 低功耗(BLE)蓝牙开发说明

你可能感兴趣的:(Android 低功耗(BLE)蓝牙开发说明(二))