格式化

廣告

廣告2

2015年6月28日 星期日

[Android SDK特色教學] 藍牙4.0 BLE通訊實現

 [Android SDK特色教學] 藍牙4.0 BLE通訊實現


1、關於Android平台的BLE


藍牙4.0於2010年發佈,相對於上個版本3.0,它的特點是更省電、成本低 延遲低等特點,現在最新的藍牙協議是2013年底發佈的藍牙4.1,藍牙4.1在4.0 基礎上進行升級,使得可穿戴設備的批量數據傳輸速度更高。Android是從4.3 才開始提供BLE API,這也就限定了BLE的應用只能運行在Android 4.3及其以上 的系統。在Android平台上的藍牙4.0主要有兩種工作模式:經典藍牙(classic bluetooth) 、低功耗藍牙(bluetooth low energy,縮寫為BLE)。

2、角色與職責


當一個Android設備與一個BLE設備進行交互通信時,主要存在以下兩種關係
中心設備與外圍設備:中心設備扮演掃瞄的角色,尋找外圍設備的廣播消息。Android設備 作為中心設備,與之連接通信的設備作為外圍設備。
GATT服務器與GATT客戶端:這種關係決定了當連接建立後兩個設備如何通信。
註:目前Android系統提供的API使得Android設備只能作為中心設備

3、組成部分


BLE分為三個部分Service、Characteristic、Descriptor,每個部分都擁有不同的 UUID來標識。一個BLE設備可以擁有多個Service,一個Service可以包含多個Characteristic, 一個Characteristic包含一個Value和多個Descriptor,一個Descriptor包含一個Value。 通信數據一般存儲在Characteristic內,目前一個Characteristic中存儲的數據最大為20 byte。 與Characteristic相關的權限字段主要有READ、WRITE、WRITE_NO_RESPONSE、NOTIFY。 Characteristic具有的權限屬性可以有一個或者多個。

4、核心代碼


 

 


5、目前仍存在的問題


經過測試,在使用IOS的設備作為一個外圍設備,使用Android設備通過BLE與之連接進行通信時,mBtGatt.writeCharacteristic寫入成功,但是在mBtGattCallback.onCharacteristicWrite 回調中經常會出現status值為3即BluetoothGatt.GATT_WRITE_NOT_PERMITTED,從表面上看好像是因為IOS平台上的測試程序沒有給予write的權限,但是實際是已經給予了write的權限。

 

沒有留言 :