1. 程式人生 > >Android BLE學習(三):編寫自己的 BLE藍芽讀寫工具(功能仿照nrf master control panel)

Android BLE學習(三):編寫自己的 BLE藍芽讀寫工具(功能仿照nrf master control panel)

背景

由於nordic官方的nrf master control panel只提供了apk,很多同學學習起來都得自己摸索藍芽的讀寫,專案中整理了BLE模組的基本讀寫方法以及一些常用的UUID,並且抽取了一些藍芽操作的流程,方便Android app程式碼開發,希望能幫到正在學習BLE藍芽的同學們。

上一篇文章總結了51822 BLE藍芽模組的連線以及一些藍芽協議相關的知識,本文將綜合前述內容,參照官方的nrf master control panel,實現Android手機與藍芽模組的搜尋,連線,及相關的讀寫。

流程

activity與藍芽服務通訊

Created with Raphaël 2.1.0
ActivityActivityBLEControlServiceBLEControlService藍芽功能服務,資料變化傳送相應廣播BLEStatusChangeReceiver監聽,回撥OnBLEStatusChangeListener 傳遞資料給Activity

監聽藍芽服務的變化,變化後給BLEStatusChangeReceiver傳送廣播

Created with Raphaël 2.1.0BLEControlServiceBLEControlServiceMyBluetoothGattCallbackMyBluetoothGattCallbackgatt資料變化回撥給BLEStatusChangeReceiver傳送廣播

通過回撥函式獲取藍芽變化後的資料,這樣就可以靈活將不同型別顯示在不同地方。這樣比較方便模仿官方master的藍芽日誌功能,同時兼顧在其他控制元件中顯示資料,增強了程式的靈活性。

藍芽寫入與讀取寫入特徵值和描述符資料或者其他資料時,都需要在BLEControlService中提供相應的方法,而其底層實現需要呼叫mBluetoothGatt中提供的方法。具體功能見mBluetoothGatt提供的資料。此處我們提供了以下幾個示例方法

public boolean connect(final String address)  藍芽連線

public void disconnect()                      藍芽斷開

public
void close() 藍芽關閉 public void readCharacteristic(BluetoothGattCharacteristic characteristic) 讀取readCharacteristic的資訊 public void writeCharacteristic(BluetoothGattCharacteristic characteristic, byte[] value) 寫入readCharacteristic的資訊 public void readDiscriptor(BluetoothGattDescriptor descriptor) 讀取描述符資訊 public void readRemoteRssi() 讀取ble的rssi public void enableXXXXXNotification() 將某Characteristic設定為Notification

當我們接受到資料時,就會觸發MyBluetoothGattCallback中的方法,獲取到接收的資料。

專案效果

這裡寫圖片描述
BLE裝置列表

這裡寫圖片描述
資料變化列表

這裡寫圖片描述

這裡寫圖片描述
BLE詳細資訊讀寫

這裡寫圖片描述