目前,對(duì)于傳說(shuō)中的智能家居來(lái)說(shuō),了解ble藍(lán)牙知識(shí)必不可少;低功耗藍(lán)牙從4.3版本開(kāi)始,可以使用它來(lái)發(fā)現(xiàn)設(shè)備(ScanBlutTooth),查詢服務(wù)和讀寫(xiě)特寫(xiě)。藍(lán)牙底層是基于GATT協(xié)議,我們要操作藍(lán)牙讀取是要了解Api中BluetoothGATT類,里面包含Service(服務(wù)),Characteristic(特征值),Descriptor(屬性);在連接后想做讀寫(xiě)的操作,需要特定的Service_UUID,uuid是什么呢,是唯一統(tǒng)一標(biāo)識(shí)符,每一個(gè)標(biāo)識(shí)符是128位,例如這樣的格式

怎么理解深層次藍(lán)牙?藍(lán)牙底部由 Service,Characteristic,Descriptor組成,他們可以由不同的uuid表示,一個(gè)Service由多個(gè)Characteristic,而Characteristic有多個(gè)Descriptor組成,從而構(gòu)成一個(gè)服務(wù),假如這個(gè)服務(wù),這個(gè)Service表是藍(lán)牙燈的信息,那么Characteristic可以是色溫,色差,那么Descriptor就是里面一個(gè)屬性值,可以是代表argb值;連接藍(lán)牙有幾個(gè)步驟:
1.藍(lán)牙權(quán)限

2.scanBlueTooth 掃描藍(lán)牙設(shè)備
一般在Activity、Fragment使用藍(lán)牙場(chǎng)景中,將附近的藍(lán)牙在掃描過(guò)后添加到BlueTooth列表;
(1).獲取藍(lán)牙服務(wù),得到blueAdaper,再在開(kāi)始掃描:

(2).開(kāi)始掃描,開(kāi)啟掃描,這里的TimeOut是默認(rèn)掃描15s,因?yàn)樗{(lán)牙掃描是很耗費(fèi)電量以及性能,恩,電量是一定的,但性能我不知道,也許是我瞎編的;15s后結(jié)束掃描動(dòng)作;

(3).startScan,掃描是要通過(guò)BluetoothAdapter開(kāi)啟掃描過(guò)程

(4).將掃描到的藍(lán)牙設(shè)備添加到列表當(dāng)中,以供連接選擇;

3.連接藍(lán)牙
(1),通過(guò)Mac地址,在使用BluetoothAdapter獲取Device,再使用Device連接



4.獲取服務(wù)

5.收發(fā)數(shù)據(jù)
(1)收取數(shù)據(jù)
需要判斷characteristic的uuid是否與通訊協(xié)議一致,如果一致,那么從gatt當(dāng)中讀取數(shù)據(jù)

(2)寫(xiě)數(shù)據(jù)

(3)一般而言,收取通知是從這里,被動(dòng)的收取從藍(lán)牙模塊發(fā)送的數(shù)據(jù),根據(jù)協(xié)議不同,dealData各有所不同;其中注意需要判斷uuid;rssi是藍(lán)牙信息強(qiáng)度,值是負(fù)數(shù),如果值越大,那么信息強(qiáng)度越強(qiáng);

6.固件升級(jí)
待續(xù);