首先是現(xiàn)在BLE的開發(fā)情況(截止到今天2013-11-08),現(xiàn)在Android ble開發(fā)一般分為四個版本:
1、三星的4.0 和 4.1系統(tǒng) 。這個版本的ble開發(fā)沒有官方的支持,只是三星說我的某些手機支持ble。然后民間的一些大神們開發(fā)反編譯三星的rom,找到了一系列的三星未開放的關(guān)于ble的方法。可以通過反射調(diào)用也可以通過導入一些反編譯的jar包(基本沒用就不上傳了)來調(diào)用。但是經(jīng)過1一個半月的折磨,終于發(fā)現(xiàn)連接太不穩(wěn)定了,根本就不能拿來當產(chǎn)品。
2、MOTO放出的sdk。這個版本我沒有接觸過不知道怎么樣,不多說只是提一下。
3、三星的4.2系統(tǒng)。大概是看到程序猿們太辛苦了(只是自己YY而已),三星放出了官方的SDK。但是這個sdk只支持三星自己的4.2的手機。三星雖然出貨多但是android陣營的手機品牌實在是太多了三星的4.2又太少,加上當時有傳聞google4.3很快就要發(fā)布,包含4.3的API。所以這個版本的ble我沒做過,不過貌似做這個版本的人還不少。
4、萬眾期待的Android4.3。這個版本是現(xiàn)在最流行的,因為是google官方的所以只要是每個手機官方的4.3系統(tǒng)都可以用BLE的API。有的同學會刷4.3的系統(tǒng)也可以開發(fā),這是因為rom里面包含了適合手機藍牙的驅(qū)動。如果你的手機用了一款很偏的藍牙芯片,而rom里面又沒有這款芯片的驅(qū)動 ,那么恭喜你----4.3的API依然不好用。但是目前來看大多數(shù)手機還是沒問題的像小米三星等。
介紹完了BLE的情況,就可以選擇版本開發(fā)了。很多人想做通用版的,但是本人技術(shù)有限做不了通用版的。所以如果有哪位大神偶爾看到這篇blog而且已經(jīng)做出通用版的了,請讓我抱個大腿!
除去各個版本不談,ble的開發(fā)還是比較簡單的,但是還是要大體了解BT4.0關(guān)于Low Energy的一些協(xié)議(GATT)。一個BLE設(shè)備包含很多的服務(wù)(BLUETOOTHSERVICE),每個服務(wù)又包含很多的特征(characteristic),每個characteristic包含3個value。characteristic可以是可讀寫的、只讀、只寫、或者通知類型,還有一個什么類型我忘了- -!因為我從來沒用到過。每個服務(wù)和characteristic都有一個UUID來唯一確定,所有想要開發(fā)BLE必須知道你想要用哪個服務(wù)的那個characteristic也就是要知道對應(yīng)的UUID。很多人說我傳的demo不好用,就是因為UUID都不換成自己設(shè)備的。
具體流程就是 scan(搜索) --> connect(連接) --> discoverService(發(fā)現(xiàn)ble設(shè)備的服務(wù))--> 遍歷service里的characteristic -->讀寫characteristic。
由于每個版本的方法名稱不一樣實現(xiàn)邏輯不一樣,就不給大家寫代碼了只發(fā)兩個版本的demo,但是走的流程都是一樣的。
三星的4.0 4.1demo看看就好 基本沒人用了
SamsungDemo1
這個demo要改UUID
Android4.3demo 這個demo是4.3的可以研究一下,包含了讀寫以及通知
android4.3
關(guān)于android4.3 還有兩點要說的:
1、最好做到從手機端發(fā)出去的每個命令之間最好sleep一段時間。
2、android端與設(shè)備保持連接可能要占用cpu,所以設(shè)備端中斷最好不要太頻繁
亂七八糟的先寫到這,有時間好好整理一下。有什么進度也會更新過來。
2013/12/12
1、感覺三星的藍牙協(xié)議棧跟google的不一樣,用三星的協(xié)議棧不存在設(shè)備中斷太多會出133的issue。
2、各個手機原版4.3rom比自己刷的穩(wěn)定的多,Nexus4/5 note2泄露版這些官方rom里 像多個設(shè)備快速發(fā)命令時可以不用添加sleep 但是小米刷的4.3就必須添加sleep要不然會出133。個人觀點,如果有朋友知道原因的希望可以解答一下。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |