Android BLE的一些基礎(chǔ)知識(shí)及相關(guān)操作流程
前言:
本文主要描述Android BLE的一些基礎(chǔ)知識(shí)及相關(guān)操作流程,不牽扯具體的業(yè)務(wù)實(shí)現(xiàn),其中提供了針對(duì)廣播包及響應(yīng)包的解析思路,希望對(duì)正在或即將面臨Android BLE開(kāi)發(fā)的伙伴們有所引導(dǎo)。
注:其中的單模、雙模、BR、BT、BLE、藍(lán)牙3.0、藍(lán)牙4.0等概念混在一起可能比較難理解,不知下文描述是否清晰,如果有不理解的地方,歡迎留言交流!
藍(lán)牙無(wú)線技術(shù)是一種全球通用的短距離無(wú)線技術(shù),通過(guò)藍(lán)牙技術(shù)能夠?qū)崿F(xiàn)多種電子設(shè)備間的相互連接,特別是在小型無(wú)線電、耗電量低、成本低、安全性、穩(wěn)定性、易用性以及特別的聯(lián)網(wǎng)能力等固有的優(yōu)勢(shì)上,藍(lán)牙無(wú)線技術(shù)發(fā)展迅速。
2、分類
藍(lán)牙分為三種:Bluetooth Smart Ready、Bluetooth Smart(Smart是低功耗藍(lán)牙的標(biāo)識(shí))、以及標(biāo)準(zhǔn) Bluetooth。根據(jù) Bluetooth SIG的說(shuō)法,這樣是為了要分辨裝置間的相容性以及標(biāo)識(shí)各版本的傳輸頻率?;旧蟻?lái)說(shuō),Bluetooth Smart Ready適用于任何雙模藍(lán)牙4.0的電子產(chǎn)品,而B(niǎo)luetooth Smart是應(yīng)用在心率監(jiān)視器或計(jì)步器等使用扭扣式電池并傳輸單一的裝置。Bluetooth Smart Ready的相容性最高,可與Bluetooth Smart及標(biāo)準(zhǔn)藍(lán)牙相通。標(biāo)準(zhǔn)藍(lán)牙則無(wú)法與Bluetooth Smart相通。
3、BLE介紹
BLE是Bluetooth Low Energy的縮寫(xiě),又叫藍(lán)牙4.0,區(qū)別于藍(lán)牙3.0和之前的技術(shù)。BLE前身是NOKIA開(kāi)發(fā)的Wibree技術(shù),主要用于實(shí)現(xiàn)移動(dòng)智能終端與周邊配件之間的持續(xù)連接,是功耗極低的短距離無(wú)線通信技術(shù),并且有效傳輸距離被提升到了100米以上,同時(shí)只需要一顆紐扣電池就可以工作數(shù)年之久。BLE是在藍(lán)牙技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的,既同于藍(lán)牙,又區(qū)別于傳統(tǒng)藍(lán)牙。BLE設(shè)備分單模和雙模兩種,雙模簡(jiǎn)稱BR,商標(biāo)為Bluetooth Smart Ready,單模簡(jiǎn)稱BLE或者LE,商標(biāo)為Bluetooth Smart。Android是在4.3后才支持BLE,這說(shuō)明不是所有藍(lán)牙手機(jī)都支持BLE,而且支持BLE的藍(lán)牙手機(jī)一般是雙模的。雙模兼容傳統(tǒng)藍(lán)牙,可以和傳統(tǒng)藍(lán)牙通信,也可以和BLE通信,常用在手機(jī)上,android4.3和IOS4.0之后版本都支持BR,也就是雙模設(shè)備。單模只能和BR和單模的設(shè)備通信,不能和傳統(tǒng)藍(lán)牙通信,由于功耗低,待機(jī)長(zhǎng),所以常用在手環(huán)的智能設(shè)備上。
二、基本概念 1、Generic Access Profile(GAP)用來(lái)控制設(shè)備連接和廣播,GAP使你的設(shè)備被其他設(shè)備可見(jiàn),并決定了你的設(shè)備是否可以或者怎樣與合同設(shè)備進(jìn)行交互。
2、Generic Attribute Profile(GATT)通過(guò)BLE連接,讀寫(xiě)屬性類數(shù)據(jù)的Profile通用規(guī)范,現(xiàn)在所有的BLE應(yīng)用Profile都是基于GATT的。
3、Attribute Protocol (ATT)GATT是基于ATTProtocol的,ATT針對(duì)BLE設(shè)備做了專門(mén)的優(yōu)化,具體就是在傳輸過(guò)程中使用盡量少的數(shù)據(jù),每個(gè)屬性都有一個(gè)唯一的UUID,屬性將以characterisTIcs and services的形式傳輸。
4、CharacterisTIcCharacterisTIc可以理解為一個(gè)數(shù)據(jù)類型,它包括一個(gè)value和0至多個(gè)對(duì)次value的描述(Descriptor)。
5、Descriptor對(duì)CharacterisTIc的描述,例如范圍、計(jì)量單位等。
6、ServiceCharacteristic的集合。例如一個(gè)service叫做“Heart Rate Monitor”,它可能包含多個(gè)Characteristics,其中可能包含一個(gè)叫做“heart ratemeasurement”的Characteristic。
7、UUID唯一標(biāo)示符,每個(gè)Service,Characteristic,Descriptor,都是由一個(gè)UUID定義。
三、Android BLE API 1、BluetoothGatt繼承BluetoothProfile,通過(guò)BluetoothGatt可以連接設(shè)備(connect),發(fā)現(xiàn)服務(wù)(discoverServices),并把相應(yīng)地屬性返回到BluetoothGattCallback,可以看成藍(lán)牙設(shè)備從連接到斷開(kāi)的生命周期。
2、BluetoothGattCharacteristic相當(dāng)于一個(gè)數(shù)據(jù)類型,可以看成一個(gè)特征或能力,它包括一個(gè)value和0~n個(gè)value的描述(BluetoothGattDescriptor)。
3、BluetoothGattDescriptor描述符,對(duì)Characteristic的描述,包括范圍、計(jì)量單位等。
4、BluetoothGattService服務(wù),Characteristic的集合。
5、BluetoothProfile一個(gè)通用的規(guī)范,按照這個(gè)規(guī)范來(lái)收發(fā)數(shù)據(jù)。
6、BluetoothManager
通過(guò)BluetoothManager來(lái)獲取BluetoothAdapter。
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
代表了移動(dòng)設(shè)備的本地的藍(lán)牙適配器, 通過(guò)該藍(lán)牙適配器可以對(duì)藍(lán)牙進(jìn)行基本操作,一個(gè)Android系統(tǒng)只有一個(gè)BluetoothAdapter,通過(guò)BluetoothManager獲取。
BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
掃描后發(fā)現(xiàn)可連接的設(shè)備,獲取已經(jīng)連接的設(shè)備。
BluetoothDevice bluetoothDevice = bluetoothAdapter.getRemoteDevice(address);