拥有数据的⼀⽅ 可以通过属性许可,控制本地数据的可读写属性。 GATT 规范 GATT 规范定义了如何⽤特性值 和描述符表示⼀个数据,如何把相似的数据聚合成服务 (Service),以及如何发现对端设备 拥有哪些服务和数据。 GATT 规范引进了特性值的概念。这是由于在某些时候,⼀个数据可能并不只是单纯的数 值,还会带...
BluetoothManagerbluetoothManager=(BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);BluetoothAdapterbluetoothAdapter=bluetoothManager.getAdapter(); 1. 2. 2. 初始化BluetoothGattServer 接下来,我们需要创建BluetoothGattServer实例,并设置其回调。 BluetoothGattServerbluetoothGattServer=bluetoothManager.openGattS...
然后我们就可以在里面去获取BluetoothGattService和BluetoothGattCharacteristic。 // BLE回调操作privateBluetoothGattCallbackmGattCallback=newBluetoothGattCallback(){@OverridepublicvoidonConnectionStateChange(BluetoothGattgatt,intstatus,intnewState){super.onConnectionStateChange(gatt,status,newState);if(newState==Bl...
GAP中有一个GAP Service,是用来表明设备的基本信息的,只要作为GATT Server,就需要实现这个GAP Service。 GAP Service 先看一张图,对GAP Service有个整体了解: 从此图可看到,BR/EDR可以选择实现GAP Service的Device Name和Appearance属性。对于BLE而言,是分角色进行对待的,Broadcaster和Observer不需要GAP Service。对于Peri...
GATT定义两个BLE设备通过叫做Service和Characteristic的东西进行通信,他使用了ATT(Attribute Protocol)协议,需要说明的是,GATT连接必需先经过GAP协议。 另外,特别注意的是:GATT连接是独占的。也就是一个BLE外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它...
GATT协议基本概念 在ATT协议上,蓝牙协议引申出了GATT协议,通过多个属性组成特征(Characteristic),再通过特征和属性,再组成服务(Service),通过多个服务组成档案(profile)。就像是用砖石搭起一件件房屋,在用一间间房屋和砖石搭建起高楼大厦。使得数据的交互变得可视化,有条理,更高效。
GATT协议中的Service和Characteristic需要遵循ATT这种数据结构,ATT会管理这些数据并提供查找方法。 GATT是建立在GAP基础之上发挥作用的,就是两个BLE设备只有通过GAP建立连接之后才能用GATT进行通信。上面说了扫描回复数据交互方式是独占的,所以GATT通信只允许是一个外设和一个中心连接。如果两个外设想要通信,唯一的方式就是...
GATT层主要是用来传输数据,也就是service跟characterister。你可以在设备的BLE协议栈中添加一个或多个service,而service中包含一个或多个characterister,这些charancterister的读/写/通知等属性由你决定。GAP层主要用来控制广播、扫描、连接及配对绑定等的控制,如广播的使能/禁止、广播的间隔、配对绑定及...
一、简介 1.1 通用属性协议(GATT) GATT是用Attribute Protocal(属性协议)定义的一个service(服务)框架。这个框架定义了Services以...
在两个蓝牙低功耗设备建立连接之后,双方的数据交互是基于 GATT (Generic Attribute Profile) 规范,根据该规范可以定义出一个个配置文件 (Profile),描述该蓝牙设备提供的服务 (Service)。 在整个通信过程中,有几个最主要的概念: 配置文件 (Profile): Profile 是被蓝牙标准预先定义的一些 Service 的集合,并不真实存在...