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