Android Ble 中的核心概念
2016-12-17 本文已影响99人
linheimx
前言
在 Android 4.3 (API Level 18) 版本后,系统支持了低功耗蓝牙。
系统提供了丰富的api去处理相关的蓝牙操作,如:
- 发现设备
- 查询服务
- 读写数据
- ...
与传统的蓝牙相比,低功耗蓝牙主要的设计目的是省电!
核心概念
1. Generic Attribute Profile (GATT)
简介
- 中文的含义:通用的属性配置(可以认为是对蓝牙通信中的属性做出的规格说明)
- 目前所有的低功耗应用的相关配置都是基于它而来的
- 这个配置描述了具体的应用程序中蓝牙设备是如何工作的
在代码中的实现:
BluetoothProfile
是个接口。
它在里面定义了很多字段:如连接的状态,不同类型的蓝牙设备,针对设备允许的连接优先级等等。
它也定义了通用的几个操作:如getConnectedDevices();
BluetoothGatt
,BluetoothHeadset
等,对BluetoothProfile
进行具体的实现。
持有了
BluetoothProfile
字段的配置信息,实现了BluetoothProfile
定义的3个操作。此外他们还提供了蓝牙通信的基本操作,如下:
2. Attribute Protocol (ATT)
简介
- ATT: 针对属性的协议,把它当成一种数据结构即可,它约定了这个数据结构长成什么样子。
- 它是 GATT的一个子集:GATT/ATT
- ATT 是针对BLE设备进一步优化:尽可能的使用很少的字节。
- 每个属性用 UUID来标识。
在代码中的实现:
ATT 的具体实现是
characteristics
和services
3. ****Characteristic****
简介
- 它是一个数据结构
- 它包含了一个数值和0到n个描述符
在代码中的实现:
它是一个类:
public class BluetoothGattService
封装的字段:
提供了很多便捷的方法:
4. Descriptor
简介
- 描述符
- 描述 characteristic 中的值(值的范围,值的单位,或者人能看懂的信息)
在代码中的实现:
它是一个类:
public class BluetoothGattDescriptor
封装的字段:
5. Service
- service 是characteristic 的集合
在代码中的实现:
它是一个类:
public class BluetoothGattService
封装的字段: