我也是今年剛畢業(yè)加入了一家創(chuàng)業(yè)公司刀诬,正好所做的項(xiàng)目主要就是圍繞ble進(jìn)行的究抓。下面跟大家分享下我對(duì)ble的拙見,如有不正確的地方益眉,歡迎指出交流學(xué)習(xí)晌柬。
藍(lán)牙的歷史?
1999年5月20日郭脂,索尼愛立信年碘、IBM、英特爾展鸡、諾基亞及東芝等業(yè)界龍頭創(chuàng)立藍(lán)牙特別興趣組(SIG,Special Interest Group)屿衅,制訂藍(lán)牙技術(shù)標(biāo)準(zhǔn)∮榧眨“藍(lán)牙”(Bluetooth)這名稱來自10世紀(jì)的丹麥國王哈拉爾德(Harald Gormsson)的外號(hào)傲诵。出身海盜家庭的哈拉爾德統(tǒng)一了北歐四分五裂的國家,成為維京王國的國王箱硕。由于他喜歡吃藍(lán)莓拴竹,牙齒常常被染成藍(lán)色,而獲得“藍(lán) 牙”的綽號(hào)剧罩,當(dāng)時(shí)藍(lán)莓因?yàn)轭伾之惖木壒时徽J(rèn)為是不適合食用的東西栓拜,因此這位愛嘗新的國王也成為創(chuàng)新與勇于嘗試的象征。1998年惠昔,愛立信公司希望無線通信技術(shù)能統(tǒng)一標(biāo)準(zhǔn)而取名“藍(lán)芽”幕与。藍(lán)牙,或稱為藍(lán)芽镇防,是一種無線個(gè)人局域網(wǎng)(Wireless PAN)啦鸣,最初由愛立信創(chuàng)制,后來由藍(lán)牙技術(shù)聯(lián)盟訂定技術(shù)標(biāo)準(zhǔn)来氧。據(jù)說因?yàn)榇思夹g(shù)尚在萌芽的階段诫给,故將Bluetooth以“藍(lán)芽”的中文譯名在臺(tái)灣進(jìn)行商 業(yè)的注冊,不過在2006年啦扬,該組織已將全球中文統(tǒng)一為“藍(lán)牙”中狂。
什么是Ble?
BLE 是Bluetooth Low Energy的縮寫扑毡,又叫藍(lán)牙4.0胃榕,區(qū)別于藍(lán)牙3.0和之前的技術(shù)。BLE前身是NOKIA開發(fā)的Wibree技術(shù)瞄摊,主要用于實(shí)現(xiàn)移動(dòng)智能終端與周邊配件之間的持續(xù)連接勋又,是功耗極低的短距離無線通信技術(shù),并且有效傳輸距離被提升到了100米以上换帜,同時(shí)只需要一顆紐扣電池就可以工作數(shù)年之久赐写。BLE是在藍(lán)牙技術(shù)的基礎(chǔ)上發(fā)展起來的,既同于藍(lán)牙膜赃,又區(qū)別于傳統(tǒng)藍(lán)牙挺邀。BLE設(shè)備分單模和雙模兩種,雙模簡稱BR跳座,商標(biāo)為Bluetooth Smart Ready端铛,單模簡稱BLE或者LE,商標(biāo)為Bluetooth Smart。Android是在4.3后才支持BLE疲眷,這可以解釋不是所有藍(lán)牙手機(jī)都支持BLE禾蚕,而且支持BLE的藍(lán)牙手機(jī)一般是雙模的。
Ble的工作原理狂丝?
大概知道ble是什么東西后换淆,我們就來了解下他的工作原理哗总。想要了解原理,先搞清楚藍(lán)牙通信之間的關(guān)系——主從關(guān)系倍试。
藍(lán)牙技術(shù)規(guī)定每一對(duì)設(shè)備之間進(jìn)行藍(lán)牙通訊時(shí)讯屈,必須一個(gè)為主角色,另一為從角色县习,才能進(jìn)行通信涮母,通信時(shí),必須由主端進(jìn)行查找躁愿,發(fā)起配對(duì)叛本,建鏈成功后,雙方即可收發(fā)數(shù)據(jù)彤钟。理論上来候,一個(gè)藍(lán)牙主端設(shè)備,可同時(shí)與7個(gè)藍(lán)牙從端設(shè)備進(jìn)行通訊逸雹。一個(gè)藍(lán)牙設(shè)備以主模式發(fā)起呼叫時(shí)吠勘,需要知道對(duì)方的藍(lán)牙地址,配對(duì)密碼等信息峡眶,配對(duì)完成后剧防,可直接發(fā)起呼叫。這可以解釋為什么有時(shí)無法連接藍(lán)牙辫樱,有可能是連接的藍(lán)牙設(shè)備過多峭拘。
藍(lán)牙內(nèi)部詳細(xì)的工作原理呢,由于個(gè)人能力有限就不詳細(xì)講述了狮暑,本系列文章主要是介紹下ble在android中的開發(fā)鸡挠。
Ble在android交互中的角色與職責(zé):
Android設(shè)備與BLE設(shè)備交互有兩組角色:就是中心設(shè)備與周邊設(shè)備了。如圖所示:
一般手機(jī)都是做為中央的搬男,那么該怎么用手機(jī)獲取周邊設(shè)備的相關(guān)數(shù)據(jù)呢拣展?
Ble開發(fā)的大概原理流程:
在android中,對(duì)ble設(shè)備的操作實(shí)際上是對(duì)BluetoothGatt的操作缔逛,所以我們首先要想辦法獲取到BluetoothGatt备埃。如圖展示,對(duì)藍(lán)牙設(shè)備的連接過程也就是獲取BluetoothGatt的獲取過程褐奴,大概有以下幾步按脚,下面詳細(xì)講解下:
1.添加權(quán)限(你也知道啦,想要連接ble設(shè)備敦冬,肯定得獲取手機(jī)相關(guān)的權(quán)限使用權(quán)啦)
2.掃描Ble設(shè)備:
想要掃描設(shè)備辅搬,首先我們先要拿到BluetoothManager,通過BluetoothManager的getAdapter()方法再拿到BluetoothAdapter脖旱,然后再通過BluetoothAdapter的startSacn( LeScanCallback)的方法開始掃描設(shè)備堪遂。值得注意的是介蛉,我們還需要實(shí)現(xiàn)LeScanCallback的回調(diào)方法。
在其回調(diào)方法中會(huì)有這么一個(gè)函數(shù)溶褪,onLeScan(BluetoothDevice, rssi, byte[])币旧。當(dāng)中的bluetoothDevice就是我們掃描的設(shè)備;rssi是int類型竿滨,代表設(shè)備的信號(hào)強(qiáng)度佳恬,是負(fù)的捏境,數(shù)值越大代表信號(hào)強(qiáng)度越大于游;byte[]這個(gè)byte數(shù)組就是設(shè)備廣播的相關(guān)數(shù)據(jù)(在我們項(xiàng)目中,我們是依靠這個(gè)廣播來判斷我們設(shè)備時(shí)候在充電狀態(tài)的垫言,各個(gè)設(shè)備應(yīng)該都有自己的商定)贰剥。
3.建立連接:
當(dāng)掃描到我們所需的設(shè)備,就可以開始建立連接了筷频。主要是使用上面所掃描到設(shè)備的BluetoothDevice.connectGatt(context, boolean, BluetoothGattCallback)的方法進(jìn)行連接蚌成,這個(gè)函數(shù)將返回BluetoothGatt的實(shí)例,到此凛捏,我們就拿到了BluetoothGatt了担忧,就可以進(jìn)行相關(guān)讀寫數(shù)據(jù)操作了。
連接就講完啦~~~下次貼上我的代碼的坯癣,第一篇瓶盛,寫的不好還請(qǐng)見諒,嘿嘿~~后續(xù)講講讀寫藍(lán)牙數(shù)據(jù)示罗,還有藍(lán)牙空中升級(jí)(這個(gè)折磨挺久的~)
[android Ble開發(fā)的那些事(一)](http://www.reibang.com/p/2268cfedc051)
[android Ble開發(fā)的那些事(二)](http://www.reibang.com/p/13e55d2517b5)
[android Ble開發(fā)的那些事(三)--Ble數(shù)據(jù)分包處理](http://www.reibang.com/p/31cbfdda362c)
[android Ble開發(fā)的那些事(四)—— OTA升級(jí)](http://www.reibang.com/p/4017e7389804)
原創(chuàng)作品惩猫,如需轉(zhuǎn)載,請(qǐng)與作者聯(lián)系蚜点,否則將追究法律責(zé)任轧房。