Android藍(lán)牙通信(藍(lán)牙2.0和4.0)

先說我的應(yīng)用場景,android手機(jī)跟一塊帶有藍(lán)牙模塊的板子通信。為了節(jié)省成本那塊板子的藍(lán)牙模塊是2.0的,而現(xiàn)在大多數(shù)手機(jī)帶的藍(lán)牙都是4.0 以上的。所以我的應(yīng)用應(yīng)該是藍(lán)牙4.0以上與藍(lán)牙2.0的通信。

在此說明一下藍(lán)牙4.0 與2.0 之間通信是ok的,藍(lán)牙的開放性、兼容性都很強(qiáng)的,只是傳輸速率是按2.0的。還有藍(lán)牙傳輸?shù)氖亲止?jié)流,每包最大能發(fā)20個字節(jié),所以在定傳輸協(xié)議的時候一定要考慮進(jìn)去,我們的協(xié)議定義我會在下面詳細(xì)說明下。

參考項(xiàng)目地址:點(diǎn)我吧,親測可用

項(xiàng)目結(jié)構(gòu)

圖1

主要類說明:

MyApplication:打開藍(lán)牙

BleRotocoUtils:是我們自己定義的協(xié)議類

BlueToothManager:藍(lán)牙管理類(主要是:初始化,搜索設(shè)備,設(shè)備連接,發(fā)送數(shù)據(jù),接收數(shù)據(jù),關(guān)閉等功能)

MyBlueTooth2: 藍(lán)牙2.0管理類(上述參考項(xiàng)目里有源碼)

MyBlueTooth4:藍(lán)牙4.0管理類(上述參考項(xiàng)目里有源碼)

BluetoothConnectActivityReceiver: 監(jiān)聽藍(lán)牙配對的消息(兩個設(shè)備連接時,如果沒有配對,系統(tǒng)會彈出一個配對彈框,密碼默認(rèn)1234,只有配對成功才能連接通信)

藍(lán)牙通信協(xié)議定義:

圖2

命令碼:(以啟停功能為例,其他功能道理一樣,按自己需求定就ok)

圖3

異或校驗(yàn):(一個字節(jié))?

/**

*? datas 需要校驗(yàn)的字符數(shù)組

**/

public static byte getXor(byte[] datas){

? ? ?bytetemp=datas[0];

? ? ?for(int i =1; i < datas.length;i++){

? ? ? ? ?temp?^=datas[i];

? ? ?}

return temp;

}

代碼奉上,請笑納。注:i是從1開始的 因?yàn)閰f(xié)議定的是 起始碼 不參與校驗(yàn)?。?!

介紹完幀定義格式,接下來 就是按協(xié)議codding了

/**
*? 發(fā)送“啟動指令”:

**/

public static byte[] device2Start(){

byte[] date = new byte[5];

date[0] = (byte)0xFF;? //起始碼

date[1] = (byte)0x04;? ?//長度

date[2] = (byte)0x02;? ?// 命令

date[3] = (byte)0x01;? ?//命令字

date[4] = getXor(date);? //異或校驗(yàn)

return date;

}

返回的是字節(jié)數(shù)組 ,直接調(diào)用 sendMessage(btye[] msg) 就可以發(fā)動命令了。

接收數(shù)據(jù)同理:接收的也是字節(jié)數(shù)組,獲取到數(shù)據(jù)格式也是協(xié)議上的這個格式,直接按數(shù)組下標(biāo)取值就行。

項(xiàng)目過程中還有一點(diǎn)需要注意:

藍(lán)牙使用權(quán)限問題:

android 6.0 以下的手機(jī)只需要以下兩個權(quán)限即可

圖4

android6.0 以上的手機(jī) 用藍(lán)牙權(quán)限的話,需要打開定位權(quán)限。定位權(quán)限是啟動權(quán)限

圖5

啟動權(quán)限需要每次打開應(yīng)用請求用戶打開。

我的開發(fā)工具是Androidstudio,安裝了permissiondispatcher插件,使用很方便。

permissiondispatcher安裝使用教程

另外,我還添加了下面這個權(quán)限

圖6

required 為 true時,應(yīng)用只能在支持BLE的adroid設(shè)備是安裝運(yùn)行。

required 為 false時,android設(shè)備均能安裝,這時需要代碼運(yùn)行時判斷設(shè)備支持BLE。

至此結(jié)束,祝各位順利....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容