前言
在 Android 4.3 (API Level 18) 版本后鸣皂,系統(tǒng)支持了低功耗藍(lán)牙。
系統(tǒng)提供了豐富的api去處理相關(guān)的藍(lán)牙操作垒手,如:
- 發(fā)現(xiàn)設(shè)備
- 查詢服務(wù)
- 讀寫數(shù)據(jù)
- ...
與傳統(tǒng)的藍(lán)牙相比,低功耗藍(lán)牙主要的設(shè)計目的是省電!
核心概念
1. Generic Attribute Profile (GATT)
簡介
- 中文的含義:通用的屬性配置(可以認(rèn)為是對藍(lán)牙通信中的屬性做出的規(guī)格說明)
- 目前所有的低功耗應(yīng)用的相關(guān)配置都是基于它而來的
- 這個配置描述了具體的應(yīng)用程序中藍(lán)牙設(shè)備是如何工作的
在代碼中的實現(xiàn):
BluetoothProfile
是個接口梆暮。
它在里面定義了很多字段:如連接的狀態(tài),不同類型的藍(lán)牙設(shè)備绍昂,針對設(shè)備允許的連接優(yōu)先級等等啦粹。
它也定義了通用的幾個操作:如getConnectedDevices();
BluetoothGatt
,BluetoothHeadset
等窘游,對BluetoothProfile
進(jìn)行具體的實現(xiàn)唠椭。
持有了
BluetoothProfile
字段的配置信息,實現(xiàn)了BluetoothProfile
定義的3個操作忍饰。此外他們還提供了藍(lán)牙通信的基本操作贪嫂,如下:
2. Attribute Protocol (ATT)
簡介
- ATT: 針對屬性的協(xié)議,把它當(dāng)成一種數(shù)據(jù)結(jié)構(gòu)即可艾蓝,它約定了這個數(shù)據(jù)結(jié)構(gòu)長成什么樣子力崇。
- 它是 GATT的一個子集:GATT/ATT
- ATT 是針對BLE設(shè)備進(jìn)一步優(yōu)化:盡可能的使用很少的字節(jié)。
- 每個屬性用 UUID來標(biāo)識饶深。
在代碼中的實現(xiàn):
ATT 的具體實現(xiàn)是
characteristics
和services
3. ****Characteristic****
簡介
- 它是一個數(shù)據(jù)結(jié)構(gòu)
- 它包含了一個數(shù)值和0到n個描述符
在代碼中的實現(xiàn):
它是一個類:
public class BluetoothGattService
封裝的字段:
提供了很多便捷的方法:
4. Descriptor
簡介
- 描述符
- 描述 characteristic 中的值(值的范圍餐曹,值的單位,或者人能看懂的信息)
在代碼中的實現(xiàn):
它是一個類:
public class BluetoothGattDescriptor
封裝的字段:
5. Service
- service 是characteristic 的集合
在代碼中的實現(xiàn):
它是一個類:
public class BluetoothGattService
封裝的字段: