標題: Android BLE開發(fā)的一些體會與總結(jié) [打印本頁]

作者: heicc    時間: 2015-1-5 15:46
標題: Android BLE開發(fā)的一些體會與總結(jié)
很高興也很無奈的做一個BLE的項目,高興的是BLE是未來的一種趨勢,有了這個經(jīng)驗以后可以混口飯吃,無奈的是身為一個Android developer android系統(tǒng)對ble的支持實在是太差了。在經(jīng)歷了三星的4.1,4.2 和最新的4.3之后生出了一種前所未有的迫切想轉(zhuǎn)行IOS的想法,因為Android的ble真是太要命了。發(fā)了這么多牢騷,活還是要干的。這篇博客主要是為了記錄一下開發(fā)情況以及過程,便于以后開發(fā)的時候查看,有興趣的同學也可以瞅瞅。

首先是現(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。個人觀點,如果有朋友知道原因的希望可以解答一下。

                                                                                                                                                                                                                                                                                                        


作者: 熱我認為熱    時間: 2015-2-3 18:15
可以加群討論哈,最新版手機控制單片機STM32 Android OTG 190105401
作者: 熱我認為熱    時間: 2015-2-3 18:15
可以加群討論哈,安卓手機控制單片機STM32 Android OTG 190105401




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1