找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 4428|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

Android BLE開發(fā)的一些體會(huì)與總結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3721 發(fā)表于 2015-1-5 15:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
很高興也很無奈的做一個(gè)BLE的項(xiàng)目,高興的是BLE是未來的一種趨勢(shì),有了這個(gè)經(jīng)驗(yàn)以后可以混口飯吃,無奈的是身為一個(gè)Android developer android系統(tǒng)對(duì)ble的支持實(shí)在是太差了。在經(jīng)歷了三星的4.1,4.2 和最新的4.3之后生出了一種前所未有的迫切想轉(zhuǎn)行IOS的想法,因?yàn)锳ndroid的ble真是太要命了。發(fā)了這么多牢騷,活還是要干的。這篇博客主要是為了記錄一下開發(fā)情況以及過程,便于以后開發(fā)的時(shí)候查看,有興趣的同學(xué)也可以瞅瞅。

首先是現(xiàn)在BLE的開發(fā)情況(截止到今天2013-11-08),現(xiàn)在Android ble開發(fā)一般分為四個(gè)版本:


1、三星的4.0 和 4.1系統(tǒng) 。這個(gè)版本的ble開發(fā)沒有官方的支持,只是三星說我的某些手機(jī)支持ble。然后民間的一些大神們開發(fā)反編譯三星的rom,找到了一系列的三星未開放的關(guān)于ble的方法。可以通過反射調(diào)用也可以通過導(dǎo)入一些反編譯的jar包(基本沒用就不上傳了)來調(diào)用。但是經(jīng)過1一個(gè)半月的折磨,終于發(fā)現(xiàn)連接太不穩(wěn)定了,根本就不能拿來當(dāng)產(chǎn)品。


2、MOTO放出的sdk。這個(gè)版本我沒有接觸過不知道怎么樣,不多說只是提一下。


3、三星的4.2系統(tǒng)。大概是看到程序猿們太辛苦了(只是自己YY而已),三星放出了官方的SDK。但是這個(gè)sdk只支持三星自己的4.2的手機(jī)。三星雖然出貨多但是android陣營的手機(jī)品牌實(shí)在是太多了三星的4.2又太少,加上當(dāng)時(shí)有傳聞google4.3很快就要發(fā)布,包含4.3的API。所以這個(gè)版本的ble我沒做過,不過貌似做這個(gè)版本的人還不少。


4、萬眾期待的Android4.3。這個(gè)版本是現(xiàn)在最流行的,因?yàn)槭莋oogle官方的所以只要是每個(gè)手機(jī)官方的4.3系統(tǒng)都可以用BLE的API。有的同學(xué)會(huì)刷4.3的系統(tǒng)也可以開發(fā),這是因?yàn)閞om里面包含了適合手機(jī)藍(lán)牙的驅(qū)動(dòng)。如果你的手機(jī)用了一款很偏的藍(lán)牙芯片,而rom里面又沒有這款芯片的驅(qū)動(dòng) ,那么恭喜你----4.3的API依然不好用。但是目前來看大多數(shù)手機(jī)還是沒問題的像小米三星等。


介紹完了BLE的情況,就可以選擇版本開發(fā)了。很多人想做通用版的,但是本人技術(shù)有限做不了通用版的。所以如果有哪位大神偶爾看到這篇blog而且已經(jīng)做出通用版的了,請(qǐng)讓我抱個(gè)大腿!


除去各個(gè)版本不談,ble的開發(fā)還是比較簡(jiǎn)單的,但是還是要大體了解BT4.0關(guān)于Low Energy的一些協(xié)議(GATT)。一個(gè)BLE設(shè)備包含很多的服務(wù)(BLUETOOTHSERVICE),每個(gè)服務(wù)又包含很多的特征(characteristic),每個(gè)characteristic包含3個(gè)value。characteristic可以是可讀寫的、只讀、只寫、或者通知類型,還有一個(gè)什么類型我忘了- -!因?yàn)槲覐膩頉]用到過。每個(gè)服務(wù)和characteristic都有一個(gè)UUID來唯一確定,所有想要開發(fā)BLE必須知道你想要用哪個(gè)服務(wù)的那個(gè)characteristic也就是要知道對(duì)應(yīng)的UUID。很多人說我傳的demo不好用,就是因?yàn)閁UID都不換成自己設(shè)備的。


具體流程就是 scan(搜索) -->  connect(連接) --> discoverService(發(fā)現(xiàn)ble設(shè)備的服務(wù))--> 遍歷service里的characteristic -->讀寫characteristic。


由于每個(gè)版本的方法名稱不一樣實(shí)現(xiàn)邏輯不一樣,就不給大家寫代碼了只發(fā)兩個(gè)版本的demo,但是走的流程都是一樣的。


三星的4.0 4.1demo看看就好 基本沒人用了

SamsungDemo1

這個(gè)demo要改UUID


Android4.3demo 這個(gè)demo是4.3的可以研究一下,包含了讀寫以及通知

android4.3


關(guān)于android4.3 還有兩點(diǎn)要說的:

1、最好做到從手機(jī)端發(fā)出去的每個(gè)命令之間最好sleep一段時(shí)間。

2、android端與設(shè)備保持連接可能要占用cpu,所以設(shè)備端中斷最好不要太頻繁

    亂七八糟的先寫到這,有時(shí)間好好整理一下。有什么進(jìn)度也會(huì)更新過來。

2013/12/12

    1、感覺三星的藍(lán)牙協(xié)議棧跟google的不一樣,用三星的協(xié)議棧不存在設(shè)備中斷太多會(huì)出133的issue。

2、各個(gè)手機(jī)原版4.3rom比自己刷的穩(wěn)定的多,Nexus4/5 note2泄露版這些官方rom里 像多個(gè)設(shè)備快速發(fā)命令時(shí)可以不用添加sleep 但是小米刷的4.3就必須添加sleep要不然會(huì)出133。個(gè)人觀點(diǎn),如果有朋友知道原因的希望可以解答一下。

                                                                                                                                                                                                                                                                                                        

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:73217 發(fā)表于 2015-2-3 18:15 | 只看該作者
可以加群討論哈,最新版手機(jī)控制單片機(jī)STM32 Android OTG 190105401
回復(fù)

使用道具 舉報(bào)

板凳
ID:73217 發(fā)表于 2015-2-3 18:15 | 只看該作者
可以加群討論哈,安卓手機(jī)控制單片機(jī)STM32 Android OTG 190105401
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表